Remotion: building programmatic videos with React and TypeScript

2 min readApril 29, 2026#remotion#react#video#typescript

Remotion — making videos with React

Remotion is a library that lets you compose a video with React components.

Each frame is a render. You get useCurrentFrame() — an integer representing the current frame — and you build your animations exactly like you'd build a dynamic UI.

import { useCurrentFrame, interpolate } from 'remotion';
 
function FadeIn({ children }) {
  const frame = useCurrentFrame();
  const opacity = interpolate(frame, [0, 20], [0, 1], {
    extrapolateRight: 'clamp',
  });
  return <div style={{ opacity }}>{children}</div>;
}

interpolate(frame, inputRange, outputRange) — you map frames onto CSS values.


What I built with it

The Pixel-Mart promo video — 45 seconds, 30fps, vertical 1080×1920 — built with 7 React scenes:

Scene1 — Intro (logo, tagline)
Scene2 — Create your store
Scene3 — Add a product
Scene4 — Order received
Scene5 — Delivery
Scene6 — Seller dashboard
Scene7 — Outro (CTA)

Each scene is a component. The main composition orchestrates the transitions and durations.


Spring animations

Remotion has spring() — a physics-based animation with stiffness and damping.

import { spring, useVideoConfig, useCurrentFrame } from 'remotion';
 
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
 
const scale = spring({
  frame,
  fps,
  config: { stiffness: 200, damping: 22 },
});

For badges, notifications, elements that "arrive" — the natural bounce reads much better than a linear tween.


What changes compared to After Effects

Everything is code. Change one variable in the config — every scene using it updates. You version the video with git.

The limit: Remotion generates MP4s via Puppeteer. On Linux, the Chromium dependency can be friction in some environments.

For SaaS videos with UI components (dashboards, mockups, dynamic data) — it's faster than traditional motion design software.