Remotion - Video Creation in React
Comprehensive skill set for creating programmatic videos using Remotion, a framework for creating videos programmatically using React.
When to use
Use this skill whenever you are dealing with Remotion code to obtain domain-specific knowledge about:
- Creating video compositions with React components
- Animating elements using frame-based animations
- Working with audio, video, and image assets
- Building charts and data visualizations
- Implementing text animations and captions
- Using 3D content with Three.js
- Applying transitions and sequencing
- Integrating Tailwind CSS and Lottie animations
Core Concepts
Remotion allows you to create videos using:
- React Components: Build video content with familiar React syntax
- Frame-based Animations: All animations driven by
useCurrentFrame() hook
- Compositions: Define video compositions with duration, dimensions, and props
- Assets: Import and manipulate images, videos, audio, and fonts
- Rendering: Export videos programmatically with customizable settings
Key Features
- Frame-by-frame control over animations
- Dynamic metadata calculation
- Media processing (trimming, volume, speed, pitch)
- Caption generation and display
- Data visualization with charts
- 3D content integration
- Professional text animations
- Scene transitions and sequencing
How to use
Read individual rule files for detailed explanations and code examples:
Core Animation & Timing
- references/animations.md - Fundamental animation techniques for Remotion
- references/timing.md - Interpolation curves: linear, easing, spring animations
- references/sequencing.md - Delay, trim, and limit duration of items
- references/trimming.md - Cut the beginning or end of animations
Compositions & Metadata
- references/compositions.md - Defining compositions, stills, folders, default props
- references/calculate-metadata.md - Dynamically set composition duration, dimensions, and props
Assets & Media
- references/assets.md - Importing images, videos, audio, and fonts
- references/images.md - Embedding images using the Img component
- references/videos.md - Embedding videos with trimming, volume, speed, looping, pitch
- references/audio.md - Using audio and sound with trimming, volume, speed, pitch
- references/gifs.md - Displaying GIFs synchronized with timeline
Text & Typography
- references/text-animations.md - Typography and text animation patterns
- references/measuring-text.md - Measuring text dimensions, fitting text, checking overflow
- references/fonts.md - Loading Google Fonts and local fonts
Captions & Transcription
- references/display-captions.md - Displaying captions with TikTok-style pages and word highlighting
- references/import-srt-captions.md - Importing .srt subtitle files using @remotion/captions
- references/transcribe-captions.md - Transcribing audio to generate captions
Data Visualization
- references/charts.md - Chart and data visualization patterns
Advanced Features
- references/3d.md - 3D content using Three.js and React Three Fiber
- references/lottie.md - Embedding Lottie animations
- references/transitions.md - Scene transition patterns
Styling & Layout
- references/tailwind.md - Using TailwindCSS in Remotion
- references/measuring-dom-nodes.md - Measuring DOM element dimensions
Media Processing (Mediabunny)
- references/can-decode.md - Check if a video can be decoded by the browser
- references/extract-frames.md - Extract frames from videos at specific timestamps
- references/get-audio-duration.md - Getting the duration of an audio file
- references/get-video-dimensions.md - Getting the width and height of a video file
- references/get-video-duration.md - Getting the duration of a video file
Quick Start Example
import { useCurrentFrame, useVideoConfig, interpolate } from "remotion";
export const MyComposition = () => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const opacity = interpolate(frame, [0, 2 * fps], [0, 1], {
extrapolateRight: 'clamp',
});
return (
<div style={{ opacity }}>
<h1>Hello Remotion!</h1>
</div>
);
};
Best Practices
- Always use
useCurrentFrame() - Drive all animations from the current frame
- Avoid CSS animations - They won't render correctly in videos
- Think in seconds - Multiply time in seconds by
fps for frame calculations
- Use interpolate for smooth animations - Built-in interpolation with easing functions
- Clamp extrapolation - Prevent values from exceeding intended ranges
- Test frequently - Preview in Remotion Studio before rendering
Resources
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: remotion-43description: Best practices and comprehensive guide for Remotion - programmatic video creation in React with animations, compositions, and media handling Use when this capability is needed.4---56# Remotion - Video Creation in React78Comprehensive skill set for creating programmatic videos using Remotion, a framework for creating videos programmatically using React.910## When to use1112Use this skill whenever you are dealing with Remotion code to obtain domain-specific knowledge about:1314- Creating video compositions with React components15- Animating elements using frame-based animations16- Working with audio, video, and image assets17- Building charts and data visualizations18- Implementing text animations and captions19- Using 3D content with Three.js20- Applying transitions and sequencing21- Integrating Tailwind CSS and Lottie animations2223## Core Concepts2425Remotion allows you to create videos using:26- **React Components**: Build video content with familiar React syntax27- **Frame-based Animations**: All animations driven by `useCurrentFrame()` hook28- **Compositions**: Define video compositions with duration, dimensions, and props29- **Assets**: Import and manipulate images, videos, audio, and fonts30- **Rendering**: Export videos programmatically with customizable settings3132## Key Features3334- Frame-by-frame control over animations35- Dynamic metadata calculation36- Media processing (trimming, volume, speed, pitch)37- Caption generation and display38- Data visualization with charts39- 3D content integration40- Professional text animations41- Scene transitions and sequencing4243## How to use4445Read individual rule files for detailed explanations and code examples:4647### Core Animation & Timing48- **[references/animations.md](references/animations.md)** - Fundamental animation techniques for Remotion49- **[references/timing.md](references/timing.md)** - Interpolation curves: linear, easing, spring animations50- **[references/sequencing.md](references/sequencing.md)** - Delay, trim, and limit duration of items51- **[references/trimming.md](references/trimming.md)** - Cut the beginning or end of animations5253### Compositions & Metadata54- **[references/compositions.md](references/compositions.md)** - Defining compositions, stills, folders, default props55- **[references/calculate-metadata.md](references/calculate-metadata.md)** - Dynamically set composition duration, dimensions, and props5657### Assets & Media58- **[references/assets.md](references/assets.md)** - Importing images, videos, audio, and fonts59- **[references/images.md](references/images.md)** - Embedding images using the Img component60- **[references/videos.md](references/videos.md)** - Embedding videos with trimming, volume, speed, looping, pitch61- **[references/audio.md](references/audio.md)** - Using audio and sound with trimming, volume, speed, pitch62- **[references/gifs.md](references/gifs.md)** - Displaying GIFs synchronized with timeline6364### Text & Typography65- **[references/text-animations.md](references/text-animations.md)** - Typography and text animation patterns66- **[references/measuring-text.md](references/measuring-text.md)** - Measuring text dimensions, fitting text, checking overflow67- **[references/fonts.md](references/fonts.md)** - Loading Google Fonts and local fonts6869### Captions & Transcription70- **[references/display-captions.md](references/display-captions.md)** - Displaying captions with TikTok-style pages and word highlighting71- **[references/import-srt-captions.md](references/import-srt-captions.md)** - Importing .srt subtitle files using @remotion/captions72- **[references/transcribe-captions.md](references/transcribe-captions.md)** - Transcribing audio to generate captions7374### Data Visualization75- **[references/charts.md](references/charts.md)** - Chart and data visualization patterns7677### Advanced Features78- **[references/3d.md](references/3d.md)** - 3D content using Three.js and React Three Fiber79- **[references/lottie.md](references/lottie.md)** - Embedding Lottie animations80- **[references/transitions.md](references/transitions.md)** - Scene transition patterns8182### Styling & Layout83- **[references/tailwind.md](references/tailwind.md)** - Using TailwindCSS in Remotion84- **[references/measuring-dom-nodes.md](references/measuring-dom-nodes.md)** - Measuring DOM element dimensions8586### Media Processing (Mediabunny)87- **[references/can-decode.md](references/can-decode.md)** - Check if a video can be decoded by the browser88- **[references/extract-frames.md](references/extract-frames.md)** - Extract frames from videos at specific timestamps89- **[references/get-audio-duration.md](references/get-audio-duration.md)** - Getting the duration of an audio file90- **[references/get-video-dimensions.md](references/get-video-dimensions.md)** - Getting the width and height of a video file91- **[references/get-video-duration.md](references/get-video-duration.md)** - Getting the duration of a video file9293## Quick Start Example9495```tsx96import { useCurrentFrame, useVideoConfig, interpolate } from "remotion";9798export const MyComposition = () => {99 const frame = useCurrentFrame();100 const { fps } = useVideoConfig();101102 const opacity = interpolate(frame, [0, 2 * fps], [0, 1], {103 extrapolateRight: 'clamp',104 });105106 return (107 <div style={{ opacity }}>108 <h1>Hello Remotion!</h1>109 </div>110 );111};112```113114## Best Practices1151161. **Always use `useCurrentFrame()`** - Drive all animations from the current frame1172. **Avoid CSS animations** - They won't render correctly in videos1183. **Think in seconds** - Multiply time in seconds by `fps` for frame calculations1194. **Use interpolate for smooth animations** - Built-in interpolation with easing functions1205. **Clamp extrapolation** - Prevent values from exceeding intended ranges1216. **Test frequently** - Preview in Remotion Studio before rendering122123## Resources124125- **Documentation**: https://www.remotion.dev/docs126- **Repository**: https://github.com/remotion-dev/remotion127- **Skills Repository**: https://github.com/remotion-dev/skills128- **Community**: Discord and GitHub Discussions129- **License**: MIT130131---132> Converted and distributed by [TomeVault](https://tomevault.io/claim/davila7) — claim your Tome and manage your conversions.133<!-- tomevault:4.0:skill_md:2026-04-11 -->