Build Remotion videos with remocn — a shadcn registry of copy-paste animation components and timeline-driven UI primitives. Use when composing video scenes, adding text animations, transitions, backgrounds, UI blocks, brand/social cards, or full compositions in a Remotion project. Triggers include "remocn", "video component", "add animation", "text reveal", "scene transition", "product demo video", "remotion component", "typewriter", "terminal simulator", "glass code block", and the UI-primitive tier: "video dialog", "video button", "command menu", "video select", "video tooltip". Even if the user doesn't mention remocn, activate when they need polished video primitives for Remotion.
Copy-paste components for Remotion videos. Components install via shadcn and land in components/remocn/ — you own the code.
Prerequisites: a Remotion project (npx create-video@latest).
# Add any component (namespaced shadcn registry)
shadcn add @remocn/blur-out-up
# Component lands at components/remocn/blur-out-up.tsx@remocn/<name> is the canonical namespaced form (configured under registries in components.json). The plain registry URL https://remocn.dev/r/<name>.json also works.
Many components pull others via registryDependencies — shadcn installs them transitively. For example, shadcn add @remocn/typewriter also pulls @remocn/remocn-ui and @remocn/caret.
@remocn/remocn-ui is the shared core lib (timeline-fold hook, theme context, color math). Most UI Primitives depend on it. You rarely install it directly.remocn has two kinds of components — they have different APIs:
remocn) — text animations, transitions, backgrounds, UI-block sims, brand/social cards, full compositions. Frame-driven. Shared props: speed (time multiplier), and for text: fontSize, color, fontWeight.remocn-ui) — timeline-driven shadcn-style primitives (button, dialog, select, command-menu, tooltip…). State-based props (state, style, variant, theme). No speed prop. Built on @remocn/remocn-ui.Pick by what you're building. The full catalog with props, defaults, and dependencies is references/components.md — read it before installing.
| Category | Tier | Use for |
|---|---|---|
| Text Animations | remocn | Reveal/replace/emphasize text (typewriter, blur-out-up, tracking-in, rolling-number, shimmer-sweep…) |
| Backgrounds & Effects | remocn | Animated foundations, cursors, one-shot effects (mesh-gradient-bg, dynamic-grid, spotlight-card, confetti, backdrop) |
| Transitions & Wipes | remocn | Swap between two scenes (directional-wipe, frosted-glass-wipe, spatial-push, zoom-through-transition…) |
| UI Blocks | remocn | Interface sims for product demos (terminal-simulator, glass-code-block, animated-bar-chart, progress-steps…) |
| AI & Social Cards | remocn | Brand/product card scenes (chat-gpt, claude-code, v0, github-stars, x-follow-card…) |
| Compositions | remocn | Ready multi-scene sequences (dashboard-populate, terminal-to-browser-deploy, hero-device-assemble…) |
| UI Primitives | remocn-ui | shadcn-style primitives for video (button, dialog, select, command-menu, tooltip…) |
Conventions differ by tier — don't assume animation-tier props on a primitive.
remocn)Props interface per component (e.g. BlurOutUpProps).speed?: number — global time multiplier (default 1), applied as frame * speed.fontSize, color, fontWeight.from / to as ReactNode (the two scenes), plus transitionDuration.className?: string on the root.remocn-ui)speed-based: state (e.g. "open" / "closed"), style, variant, size, theme?: Partial<RemocnTheme>.import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";
const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });
const scale = spring({ fps, frame, config: { damping: 12, mass: 1, stiffness: 100 } });
// Deterministic randomness (NEVER Math.random())
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);import { Sequence, Series } from "remotion";
<Sequence from={30} durationInFrames={60}>
<Typewriter text="npm install remocn" />
</Sequence>
<Series>
<Series.Sequence durationInFrames={60}><SceneA /></Series.Sequence>
<Series.Sequence durationInFrames={60}><SceneB /></Series.Sequence>
</Series>1280×720 @ 30fps. Components are laid out for it.components.md lists it as *Nf @ 30fps* per component. Under-budgeting clips the animation; over-budgeting leaves dead air.vibe tag (tech/premium/data/clean/ playful/social) — pick components whose vibe fits the brand.references/design.md → tokens) so your own elements don't clash.When you write your own text, scene chrome, or cards (not the prebuilt components), keep it restrained:
letter-spacing on body/heading text you add.text-transform: uppercase / ALL-CAPS defaults — prefer sentence case (Launch, not LAUNCH).blur > ~24px, spread, multi-layer) — subtle 1px elevation only.Exception: never strip these from components whose essence is the effect — tracking-in (letter-spacing), mesh-gradient-bg and social cards (gradients), and intentional elevation are all legitimate. The rules govern your additions, not the library.
Full do/avoid examples: references/design.md. For motion quality (timing, anticipation, staging, easing), see references/motion-principles.md.
from / to as ReactNode, not as a static instance.translateY, never spring/ease the scroll.overflow: hidden on split layouts — prevents content breakage during width animations.Math.floor(frame / 15) % 2 === 0, not intervals.public/ — load via staticFile('cursor.svg'), not imports.avatarUrl="" / coverUrl="" fall back to gradients; no fetch.General Remotion rules (no Math.random(), no setInterval, animate transform not top/left, load fonts before render) live in the remotion-best-practices skill.
Typical product demo:
mesh-gradient-bg or dynamic-grid.blur-out-up, staggered-fade-up, or tracking-in.browser-flow, terminal-simulator, or glass-code-block.frosted-glass-wipe, spatial-push, or directional-wipe.confetti, pricing-tier-focus, or a full composition.Or drop in a full composition (dashboard-populate, terminal-to-browser-deploy, hero-device-assemble) and customize its props.
references/components.md — full catalog: props, defaults, dependencies, duration & vibe per component.references/design.md — anti-slop design defaults (do/avoid) + design tokens (palette, fonts, canvas).references/motion-principles.md — motion-design principles adapted to remocn + Remotion.references/anti-patterns.md — common generation mistakes and their fixes.