Generate Remotion video compositions with React. Use when creating videos, animations, property showcases, or any video rendering task. Provides frame-based animation patterns, composition setup, and Remotion-specific APIs.
useCurrentFrame() - NEVER CSS transitionsstaticFile() for local assets in /publicextrapolateRight: 'clamp'premountFor prop for smooth transitionsdelayRender() and continueRender() for async dataimport { useCurrentFrame, interpolate } from 'remotion';
const frame = useCurrentFrame();
const opacity = interpolate(frame, [0, 30], [0, 1], {
extrapolateRight: 'clamp',
});
const scale = interpolate(frame, [0, 30], [0.8, 1], {
extrapolateRight: 'clamp',
easing: Easing.out(Easing.cubic),
});
import { Composition } from 'remotion';
<Composition
id="PropertyVideo"
component={PropertyShowcase}
durationInFrames={300}
fps={30}
width={1920}
height={1080}
schema={PropertySchema}
defaultProps={{ ... }}
/>
<Sequence from={0} durationInFrames={90}>
<Scene1 />
</Sequence>
<Sequence from={90} durationInFrames={90}>
<Scene2 />
</Sequence>
import { spring, useCurrentFrame, useVideoConfig } from 'remotion';
const { fps } = useVideoConfig();
const scale = spring({
fps,
frame,
config: { damping: 200 },
});
import { delayRender, continueRender, staticFile } from 'remotion';
const [handle] = useState(() => delayRender());
useEffect(() => {
loadAsset().then(() => continueRender(handle));
}, []);
import { Audio, Sequence } from 'remotion';
<Audio src={voiceoverUrl} volume={1} />
<Sequence from={30}> {/* Start after 1 second */}
<AnimatedText />
</Sequence>