remocn
Copy-paste components for Remotion videos. Components install via shadcn and land in
components/remocn/ — you own the code.
Installation
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.
Dependencies install automatically
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.
Two tiers
remocn has two kinds of components — they have different APIs:
- Animation tier (
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.
- UI Primitives (
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.
Component categories
Pick by what you're building. The catalog is split one file per component under
references/components/. Start at references/components/index.md — a router table grouped by
these categories with a Use for / Avoid for signal per component. Scan it, pick candidates, then
open only the references/components/<name>.md files you need (full props, example, all use / don't-use
notes). Don't read every file.
| 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) |
| Shaders |
remocn |
WebGL shader backdrops, frame-driven for deterministic renders (shader-mesh-gradient, shader-warp, shader-voronoi, shader-god-rays, shader-metaballs…) |
| 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…) |
| UI Primitives |
remocn-ui |
shadcn-style primitives for video (button, dialog, select, command-menu, tooltip…) |
Component patterns
Conventions differ by tier — don't assume animation-tier props on a primitive.
Animation tier (remocn)
- Named
Props interface per component (e.g. BlurOutUpProps).
speed?: number — global time multiplier (default 1), applied as frame * speed.
- Text components:
fontSize, color, fontWeight.
- Transitions: take
from / to as ReactNode (the two scenes), plus transitionDuration.
className?: string on the root.
UI Primitives (remocn-ui)
- State-based, not
speed-based: state (e.g. "open" / "closed"), style, variant,
size, theme?: Partial<RemocnTheme>.
- The opened/closed/active state is a pure function of the timeline (keyframed presets).
- Compose modal-layer primitives (dialog, alert-dialog, drawer) with a trigger element — see
each component's example.
Animation API
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}`);
Composition structure
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>
Canvas & timing
- Canvas standard:
1280×720 @ 30fps. Components are laid out for it.
- Budget each Sequence around the component's natural length — the
Length column in
components/index.md (and each file's Natural length). Under-budgeting clips the animation;
over-budgeting leaves dead air.
- Tone matching: each catalog entry carries a
vibe tag (tech/premium/data/clean/
playful/social) — pick components whose vibe fits the brand.
- Palette & fonts: stay within the library's tokens (
references/design.md → tokens) so your
own elements don't clash.
Design defaults — avoid AI-slop
When you write your own text, scene chrome, or cards (not the prebuilt components), keep it
restrained:
- No decorative
letter-spacing on body/heading text you add.
- No
text-transform: uppercase / ALL-CAPS defaults — prefer sentence case (Launch, not LAUNCH).
- No gradient text-fills or decorative gradient washes — gradients only as intentional backgrounds.
- No glow / colored drop-shadows or large blur radii (
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.
Gotchas (remocn-specific)
- Transitions wrap two scenes — pass
from / to as ReactNode, not as a static instance.
- Terminal scroll is instant — step-function
translateY, never spring/ease the scroll.
overflow: hidden on split layouts — prevents content breakage during width animations.
- Cursor blink is deterministic —
Math.floor(frame / 15) % 2 === 0, not intervals.
- Static files go in
public/ — load via staticFile('cursor.svg'), not imports.
- Social cards render offline —
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.
Composing a video
Don't dump components — compose one story. When asked to build a full video ("make a product demo",
"changelog video", "intro for my landing"):
- Decide the strategy — ready template vs compose from components vs build a new component. See
references/anatomy.md §1.
- Follow the beats — a product demo is Hook → Positioning → Product reveal → Features → Proof →
CTA (last two optional). See
references/anatomy.md §2.
- Use the recipe —
references/archetypes/index.md routes to per-archetype builds: content contract
(infer → ask → placeholder), duration variants, beat→component slots, and a worked
<TransitionSeries> skeleton.
- Pick each beat's component from
references/components/index.md; match the vibe tag to the
brand and budget each <Sequence durationInFrames> around its natural length.
- Check the quality bar — one accent, sentence-case kinetic type, real content, no glow halos, no
feature-list enumeration, no
mesh-gradient-bg. See references/anatomy.md §3.
Reference
references/anatomy.md — composing a full video: strategy (template/compose/new), the product-demo beats, and the good-vs-slop quality bar.
references/archetypes/index.md — router to per-archetype build recipes (product-demo flagship + changelog, feature-announcement, oss-showcase, cli-tool-demo, testimonial-reel, year-in-review, pricing-reveal, logo-bumper): content contract, duration variants, beat→slot map.
references/components/index.md — router table (all components, grouped by category, with Use for / Avoid for). Open references/components/<name>.md for one component's full props, example, and use / don't-use notes.
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.
1---2name: remocn3description: 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.4---56# remocn78Copy-paste components for Remotion videos. Components install via `shadcn` and land in9`components/remocn/` — you own the code.1011## Installation1213Prerequisites: a Remotion project (`npx create-video@latest`).1415```bash16# Add any component (namespaced shadcn registry)17shadcn add @remocn/blur-out-up1819# Component lands at components/remocn/blur-out-up.tsx20```2122`@remocn/<name>` is the canonical namespaced form (configured under `registries` in23`components.json`). The plain registry URL `https://remocn.dev/r/<name>.json` also works.2425### Dependencies install automatically2627Many components pull others via `registryDependencies` — `shadcn` installs them transitively.28For example, `shadcn add @remocn/typewriter` also pulls `@remocn/remocn-ui` and `@remocn/caret`.2930- **`@remocn/remocn-ui`** is the shared core lib (timeline-fold hook, theme context, color math).31 Most UI Primitives depend on it. You rarely install it directly.3233## Two tiers3435remocn has two kinds of components — they have **different APIs**:3637- **Animation tier** (`remocn`) — text animations, transitions, backgrounds, UI-block sims,38 brand/social cards, full compositions. Frame-driven. Shared props: `speed` (time multiplier),39 and for text: `fontSize`, `color`, `fontWeight`.40- **UI Primitives** (`remocn-ui`) — timeline-driven shadcn-style primitives (button, dialog,41 select, command-menu, tooltip…). State-based props (`state`, `style`, `variant`, `theme`).42 **No `speed` prop.** Built on `@remocn/remocn-ui`.4344## Component categories4546Pick by what you're building. The catalog is split one file per component under47`references/components/`. **Start at `references/components/index.md`** — a router table grouped by48these categories with a `Use for` / `Avoid for` signal per component. Scan it, pick candidates, then49open only the `references/components/<name>.md` files you need (full props, example, all use / don't-use50notes). Don't read every file.5152| Category | Tier | Use for |53|---|---|---|54| **Text Animations** | `remocn` | Reveal/replace/emphasize text (`typewriter`, `blur-out-up`, `tracking-in`, `rolling-number`, `shimmer-sweep`…) |55| **Backgrounds & Effects** | `remocn` | Animated foundations, cursors, one-shot effects (`mesh-gradient-bg`, `dynamic-grid`, `spotlight-card`, `confetti`, `backdrop`) |56| **Shaders** | `remocn` | WebGL shader backdrops, frame-driven for deterministic renders (`shader-mesh-gradient`, `shader-warp`, `shader-voronoi`, `shader-god-rays`, `shader-metaballs`…) |57| **Transitions & Wipes** | `remocn` | Swap between two scenes (`directional-wipe`, `frosted-glass-wipe`, `spatial-push`, `zoom-through-transition`…) |58| **UI Blocks** | `remocn` | Interface sims for product demos (`terminal-simulator`, `glass-code-block`, `animated-bar-chart`, `progress-steps`…) |59| **AI & Social Cards** | `remocn` | Brand/product card scenes (`chat-gpt`, `claude-code`, `v0`, `github-stars`, `x-follow-card`…) |60| **UI Primitives** | `remocn-ui` | shadcn-style primitives for video (`button`, `dialog`, `select`, `command-menu`, `tooltip`…) |6162## Component patterns6364Conventions differ by tier — don't assume animation-tier props on a primitive.6566### Animation tier (`remocn`)6768- Named `Props` interface per component (e.g. `BlurOutUpProps`).69- `speed?: number` — global time multiplier (default `1`), applied as `frame * speed`.70- Text components: `fontSize`, `color`, `fontWeight`.71- Transitions: take `from` / `to` as `ReactNode` (the two scenes), plus `transitionDuration`.72- `className?: string` on the root.7374### UI Primitives (`remocn-ui`)7576- State-based, **not** `speed`-based: `state` (e.g. `"open"` / `"closed"`), `style`, `variant`,77 `size`, `theme?: Partial<RemocnTheme>`.78- The opened/closed/active state is a pure function of the timeline (keyframed presets).79- Compose modal-layer primitives (dialog, alert-dialog, drawer) with a trigger element — see80 each component's example.8182### Animation API8384```tsx85import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";8687const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });88const scale = spring({ fps, frame, config: { damping: 12, mass: 1, stiffness: 100 } });8990// Deterministic randomness (NEVER Math.random())91import { random } from "@remotion/random";92const jitter = random(`seed-${frame}`);93```9495### Composition structure9697```tsx98import { Sequence, Series } from "remotion";99100<Sequence from={30} durationInFrames={60}>101 <Typewriter text="npm install remocn" />102</Sequence>103104<Series>105 <Series.Sequence durationInFrames={60}><SceneA /></Series.Sequence>106 <Series.Sequence durationInFrames={60}><SceneB /></Series.Sequence>107</Series>108```109110### Canvas & timing111112- **Canvas standard:** `1280×720 @ 30fps`. Components are laid out for it.113- **Budget each Sequence around the component's natural length** — the `Length` column in114 `components/index.md` (and each file's `Natural length`). Under-budgeting clips the animation;115 over-budgeting leaves dead air.116- **Tone matching:** each catalog entry carries a `vibe` tag (`tech`/`premium`/`data`/`clean`/117 `playful`/`social`) — pick components whose vibe fits the brand.118- **Palette & fonts:** stay within the library's tokens (`references/design.md` → tokens) so your119 own elements don't clash.120121## Design defaults — avoid AI-slop122123When you write your **own** text, scene chrome, or cards (not the prebuilt components), keep it124restrained:125126- **No decorative `letter-spacing`** on body/heading text you add.127- **No `text-transform: uppercase` / ALL-CAPS** defaults — prefer sentence case (`Launch`, not `LAUNCH`).128- **No gradient text-fills or decorative gradient washes** — gradients only as intentional backgrounds.129- **No glow / colored drop-shadows or large blur radii** (`blur > ~24px`, spread, multi-layer) —130 subtle 1px elevation only.131132**Exception:** never strip these from components whose essence is the effect — `tracking-in`133(letter-spacing), `mesh-gradient-bg` and social cards (gradients), and intentional elevation are134all legitimate. The rules govern *your* additions, not the library.135136Full do/avoid examples: `references/design.md`. For motion quality (timing, anticipation,137staging, easing), see `references/motion-principles.md`.138139## Gotchas (remocn-specific)140141- **Transitions wrap two scenes** — pass `from` / `to` as `ReactNode`, not as a static instance.142- **Terminal scroll is instant** — step-function `translateY`, never spring/ease the scroll.143- **`overflow: hidden` on split layouts** — prevents content breakage during width animations.144- **Cursor blink is deterministic** — `Math.floor(frame / 15) % 2 === 0`, not intervals.145- **Static files go in `public/`** — load via `staticFile('cursor.svg')`, not imports.146- **Social cards render offline** — `avatarUrl=""` / `coverUrl=""` fall back to gradients; no fetch.147148General Remotion rules (no `Math.random()`, no `setInterval`, animate `transform` not `top`/`left`,149load fonts before render) live in the `remotion-best-practices` skill.150151## Composing a video152153Don't dump components — compose one story. When asked to build a full video ("make a product demo",154"changelog video", "intro for my landing"):1551561. **Decide the strategy** — ready template vs compose from components vs build a new component. See157 `references/anatomy.md` §1.1582. **Follow the beats** — a product demo is Hook → Positioning → Product reveal → Features → Proof →159 CTA (last two optional). See `references/anatomy.md` §2.1603. **Use the recipe** — `references/archetypes/index.md` routes to per-archetype builds: content contract161 (infer → ask → placeholder), duration variants, beat→component slots, and a worked162 `<TransitionSeries>` skeleton.1634. **Pick each beat's component** from `references/components/index.md`; match the `vibe` tag to the164 brand and budget each `<Sequence durationInFrames>` around its natural length.1655. **Check the quality bar** — one accent, sentence-case kinetic type, real content, no glow halos, no166 feature-list enumeration, no `mesh-gradient-bg`. See `references/anatomy.md` §3.167168## Reference169170- `references/anatomy.md` — composing a full video: strategy (template/compose/new), the product-demo beats, and the good-vs-slop quality bar.171- `references/archetypes/index.md` — router to per-archetype build recipes (product-demo flagship + changelog, feature-announcement, oss-showcase, cli-tool-demo, testimonial-reel, year-in-review, pricing-reveal, logo-bumper): content contract, duration variants, beat→slot map.172- `references/components/index.md` — router table (all components, grouped by category, with `Use for` / `Avoid for`). Open `references/components/<name>.md` for one component's full props, example, and use / don't-use notes.173- `references/design.md` — anti-slop design defaults (do/avoid) + design tokens (palette, fonts, canvas).174- `references/motion-principles.md` — motion-design principles adapted to remocn + Remotion.175- `references/anti-patterns.md` — common generation mistakes and their fixes.