remotion-new-markup

$npx mdskill add remotion-dev/remotion/remotion-new-markup

Read [editable timeline structure](../../../packages/skills/skills/remotion-interactivity/timeline-structure.md) before choosing components and wrappers. Start with what should be edited together, then choose independent tracks or consecutive sequences. The guide includes the complete interactive element, scene, parent, and registration.

SKILL.md

.github/skills/remotion-new-markupView on GitHub ↗
---
name: remotion-new-markup
description: Write or refactor editable Remotion markup with appropriate tracks, shared timing boundaries, and connected compositions.
---

# New Remotion markup

Read [editable timeline structure](../../../packages/skills/skills/remotion-interactivity/timeline-structure.md)
before choosing components and wrappers. Start with what should be edited
together, then choose independent tracks or consecutive sequences. The guide
includes the complete interactive element, scene, parent, and registration.

For footage with synchronized captions or overlays, also read
[editable video timelines](../../../packages/skills/skills/remotion-markup/video-editing.md).
For extracting a group into its own timeline, use
[connected compositions](../../../packages/skills/skills/remotion-markup/connected-compositions.md).

## Keep frame subscriptions local

Call `useCurrentFrame()` in the smallest component that needs the frame to
render. Keep composition and scene components that arrange clips and tracks
free of frame subscriptions when only a soundtrack volume, animated title, or
overlay needs to change. Extract that item into a component defined at module
scope, and read the frame there instead of passing it down from the parent.
This prevents that animation from re-rendering unrelated clips and scenes on
every frame.

Keep editable `interpolate()` calls inline on the animated item's props. For
example, a `Soundtrack` component can read `useCurrentFrame()` and return an
`Audio` with `volume={interpolate(frame, ...)}`, while the composition only
renders `<Soundtrack />` alongside its scenes. Prefer a static value when the
output does not actually vary with the frame.

Preserve the existing timing boundary when extracting: placing the hook inside
a `Sequence` or a timed component changes its frame coordinates. Keep trims,
offsets, volume envelopes, and animation keyframes on the same clock, or adjust
the keyframes deliberately to preserve the edit. A plain React component is
enough for this render boundary; add timeline wrappers only for editing needs.

Verify a structural change in the full composition and any standalone views.
Preserve the existing edit, and distinguish useful markup grouping from Studio's
row expansion and layout behavior.

More from remotion-dev/remotion

SkillDescription
add-bugAdd a new Remotion bug entry to packages/bugs/api/[v].ts. Use when the user describes a bug and affected Remotion versions that should be surfaced through the bugs API.
add-cli-optionAdd a new Remotion CLI or config option by creating an AnyRemotionOption, registering CLI parsing, wiring config setters, and updating documentation. Use when adding or converting command-line flags or Remotion options.
add-effectAdd a new effect to @remotion/effects, including implementation, package exports, docs, demos, preview images, Remotion skill updates, formatting, and builds.
add-expertAdd a new expert to the Remotion experts page
add-new-packageAdd a new package to the Remotion monorepo, including package scaffolding, monorepo registration, documentation, build scripts, and release checklist updates. Use when creating a new @remotion package.
add-sfxAdd a new sound effect to @remotion/sfx
add-webcodecs-bugAdd a browser WebCodecs bug to the Remotion Mediabunny WebCodecs bugs docs page. Use when given a Chromium, WebKit, or Firefox issue URL that should be tracked in packages/docs/docs/mediabunny/webcodecs-bugs.mdx, especially when needing to look up the issue title, filing date, reporter, and resolution state before editing the MDX table.
canvas-capture-extensionRebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension. Use when the extension needs to be restored after a Codex worktree was deleted, rebuilt after source changes, moved to its durable install directory, or reloaded in Chrome or Chrome Canary.
checkoutCheckout a requested branch or ref in the Remotion repo, rename the current task to the associated PR title when running in Codex, then install dependencies and build. Use when the user asks to checkout a ref and prepare the workspace.
convertStart the local @remotion/convert app and open it in the Codex browser. Use when the user invokes /convert or $convert, asks to launch convert.remotion.dev locally, or wants to inspect the Convert package UI.