Animations
Animations
Dev Reel offers 11 pure CSS animations that can be combined to create impressive visual effects. All animations are made with SVG + CSS, no JavaScript runtime.
Using animations
Animations are specified as an array in the frontmatter. You can combine multiple animations:
animation: - typing - fade-lines - blink-cursorOr use just one:
animation: - typingOr none (no animations):
animation: []# or simply omit the optiontyping
Classic typing effect. Characters appear one by one as if being typed in real-time.
animation: - typingFeatures:
- Speed: ~50ms per character
- Works line by line
- Respects line order
- Combines well with blink-cursor
Best for: CLI demos, tutorials, interactive commands
blink-cursor
Blinking cursor at end of content. Simulates active terminal cursor.
animation: - blink-cursorFeatures:
- Blinks every 530ms
- Block style cursor (_)
- Positioned after last line
- Requires cursor: true (default)
Best for: active terminal, combine with typing
fade-lines
Lines appear gradually with sequential fade-in. Each line goes from opacity 0 → 1.
animation: - fade-linesFeatures:
- Staggered delay between lines
- Smooth fade (200ms duration)
- Sequential top-to-bottom order
- Combines well with typing
Best for: gradually revealing output, creating visual hierarchy
scanline
CRT scanline effect. Horizontal line moves from top to bottom creating old monitor effect.
animation: - scanlineFeatures:
- Semi-transparent line
- Infinite loop (3s per cycle)
- Smooth vertical movement
- Nostalgic/retro effect
Best for: retro aesthetic, vintage terminals, hacker vibes
wave
Subtle wave movement. Lines have slight undulating vertical movement.
animation: - waveFeatures:
- Subtle vertical movement (2-3px)
- Staggered delay between lines
- Smooth infinite loop
- Hypnotic effect
Best for: landing pages, visual demos, adding life
pulse-error
Pulse on error lines. Lines with ✖ or ✗ pulse with red glow.
animation: - pulse-errorFeatures:
- Affects only error lines
- Pulsing red glow
- Infinite loop (2s per cycle)
- Draws attention to errors
Best for: highlighting errors, debugging workflows, critical messages
glow-success
Glow on success lines. Lines with ✔ or ✓ have soft green glow.
animation: - glow-successFeatures:
- Affects only success lines
- Soft green glow
- Infinite loop (2s per cycle)
- Reinforces positive feedback
Best for: successful installations, completed builds, confirmations
noise-overlay
Animated noise/grain overlay. Subtle noise texture over all content.
animation: - noise-overlayFeatures:
- SVG noise texture
- Very low opacity (0.03)
- Subtle movement animation
- Film/grain effect
Best for: cinematic aesthetic, analog vibe, visual polish
progress-bar
Animates progress bars. Lines with syntax [=== ] have animated fill.
animation: - progress-barProgress bar syntax:
[========> ] Installing... 75%[==== ] Downloading... 40%Features:
- Automatically detects bars with [=== ]
- Animated fill from left to right
- Speed based on percentage
- Respects bar width
Best for: installations, downloads, processes with progress
grow-bars
Bars grow horizontally. Similar to progress-bar but with growth effect.
animation: - grow-barsFeatures:
- Width 0 → 100%
- Smooth easing
- Staggered delay for multiple bars
- Reveal effect
Best for: bar charts, statistics, dashboards
slide-cards
Cards slide in. Used specifically for layout: bento.
layout: bentoanimation: - slide-cardsFeatures:
- Cards enter alternating from left/right
- Staggered delay
- Grid assembly effect
- Only works with layout: bento
Best for: bento layouts, multiple demos, side-by-side comparisons
Recommended combinations
Some combinations work especially well together:
| Combination | Effect | Use case |
|---|---|---|
| typing + blink-cursor | Classic interactive terminal | CLI demos |
| typing + fade-lines | Gradual reveal with typing | Tutorials |
| fade-lines + glow-success | Reveal with success highlight | Installations |
| typing + pulse-error | Typing with highlighted errors | Debugging |
| scanline + noise-overlay | Retro/vintage terminal | Hacker aesthetic |
| wave + glow-success | Smooth movement + feedback | Landing pages |
| progress-bar + fade-lines | Progress with reveal | Builds/installs |
Performance and best practices
- All animations are pure CSS: excellent performance
- Combine 2-4 animations for best effect
- More than 5 animations can be visually cluttered
- typing + blink-cursor is the most popular combination
- Loop animations (scanline, wave, pulse) can be distracting in excess
- Use glow-success/pulse-error to highlight important states
- progress-bar requires specific bar syntax [=== ]
- slide-cards is specific to layout: bento
Complete example
Demo with multiple animations and different line types:
```dev-reeltitle: animation-showcasetheme: draculaanimation: - typing - fade-lines - blink-cursor - glow-success - pulse-error - progress-barframe: terminal
$ npm install my-awesome-lib[=========> ] Downloading packages... 85%
✔ Installed successfully in 2.1sℹ Run 'npm run dev' to start
$ npm run dev> Starting development server...✔ Server ready at http://localhost:3000
$ npm run build> Building for production...[============] Bundling... 100%
✖ Error: Type check failed Expected 'string', got 'number' at src/app.ts:42
⚠ Warning: Build completed with errors```Disabling animations
For static SVG without animations, simply omit the animation option or use an empty array:
# Option 1: omittitle: static-demotheme: nordframe: terminal
# Option 2: empty arraytitle: static-demotheme: nordframe: terminalanimation: []Static SVGs are useful for documentation that doesn't need movement or when animations might distract from content.