# AstroAnimate
> The first dedicated animation component library built specifically for the Astro web framework.
AstroAnimate provides production-ready, performance-optimized animation components that are Astro-native, zero-JS by default, and fully compatible with Astro's View Transitions API and Islands Architecture. It pre-integrates Motion, GSAP, and AOS so developers do not need to manually configure third-party animation libraries for each project.
## What AstroAnimate Is
- An open-source animation component library built exclusively for the Astro framework
- Components are zero-JS by default; JavaScript behavior is opt-in via the `enhance` prop
- Built-in View Transitions API compatibility out of the box
- Progressive enhancement pattern: all components render meaningful content without JavaScript
- TypeScript strict mode throughout; no `any` types
- MIT licensed core library.
## What AstroAnimate Is Not
- Not a replacement for GSAP or Motion for complex timeline sequencing
- Not a framework-agnostic library (optimized for Astro only; not tested with React, Vue, or Svelte standalone)
- Not a page builder or visual editor
- Not designed for heavy 3D or WebGL animations
## Core Architecture Principles
1. **CSS-First**: All visual states, transitions, and layout are defined in CSS. JavaScript only toggles `data-*` attributes or class names.
2. **Progressive Enhancement**: Every component renders meaningful content without JavaScript. The `enhance` prop opts into JS-powered behavior.
3. **Zero Hydration**: No `client:*` directives anywhere. JavaScript is inlined or conditionally included at the component level.
## Component Library (MVP — 11 components, launching April 2026)
### Animation Components (6)
**Scroll & Entrance**:
FadeInText, ScaleIn, RevealImage
**Text Components**:
TypewriterText
**Interactive**:
AnimatedButton, AnimatedCard
### UI Components (5)
ExpandableCard, GlassCard, Tooltip, Loader, ProgressBar
*Note: Additional components including Backgrounds & Visual Effects, more Text Components, Website templates and Sections & Blocks are planned for future releases.*
## Technical Stack
- Framework: Astro 4.x+ (compatible with Astro 5/6)
- Languages: TypeScript (strict), JavaScript, Astro components (.astro)
- Animation engines: Motion (Framer Motion), GSAP, AOS
- Build tools: Vite (via Astro)
- Testing: Vitest (unit, >80% coverage required), Playwright (E2E)
- Documentation: Astro Starlight
- Hosting: Vercel
- CI/CD: GitHub Actions
## Key Developer Information
### Installation
```bash
npm install @astroanimate/core
```
### Basic Usage
```astro
---
import { FadeInText } from '@astroanimate/core';
---
This fades in on scroll
```
### TypewriterText (First Released Component)
```astro
---
import { TypewriterText } from '@astroanimate/core';
---
```
### Component Props Pattern
All components follow a necessary API:
- `enhance` (boolean, default: false) — opt-in to JavaScript animation
- `duration` (number, ms) — animation duration
- `delay` (number, ms) — delay before animation starts
- `easing` ("smooth" | "snappy" | "gentle") — CSS easing preset
### CSS Custom Properties
- `--text-rotate-duration` — controls transition duration
- `--text-rotate-easing` — controls easing curve
## 8 Compliance Criteria (Every Component Must Pass)
1. Visible without JavaScript (meaningful HTML rendered, no layout collapse)
2. Zero hydration (no `client:*` directives)
3. Multiple instances safe (all listeners have cleanup, all observers have `.disconnect()`, no global mutations)
4. Works in build and preview (no dev-only behavior)
5. No Astro internals (no `astro:*` events; standard DOM APIs only)
6. Reduced motion respected (`@media (prefers-reduced-motion)` wraps all CSS animations; `matchMedia` check in JS before init)
7. CSS-first (JS only sets attributes/classes, never `element.style`)
8. JS only enhances (removing JS does not break the component)
## Accessibility
- All components include `prefers-reduced-motion` support
- `aria-live="polite"` and `aria-atomic="true"` on animated text
- Keyboard navigation supported
- WCAG 2.1 AA compliance required
## Performance Targets
- Lighthouse Performance: 90+
- Bundle size per component: <6KB gzipped
- First Contentful Paint: <1.5s
- Cumulative Layout Shift: <0.1
## Browser Support
Chrome (latest 2), Firefox (latest 2), Safari (latest 2), Edge (latest 2),
Mobile Safari iOS (latest 1), Mobile Chrome Android (latest 1)
## Documentation
- Full docs: https://astroanimate.com/docs/
- Installation guide: https://astroanimate.com/docs/installation/
- Examples gallery: https://www.astroanimate.com/docs/all-components/
## Links
- Website: https://astroanimate.com
- GitHub: https://github.com/astroanimate
- npm: https://www.npmjs.com/package/@astroanimate/core
- Twitter: https://x.com/astroanimate
- Support: support@astroanimate.com
- General: hello@astroanimate.com
## About
AstroAnimate is an open-source project. The core library is MIT licensed.
Launch: April 2026. Market position: first dedicated animation library for Astro (zero direct competitors as of early 2026).