← Plugin catalog
Creativity
Remotion
Remotion v1.0.7
Publisher description
From the marketplace listing
Build videos programmatically with Remotion and React. Covers animations, timing, audio, captions, 3D, transitions, charts, text effects, and more.
Language: English · Automatically detected from descriptions.
Files & skills
File archives
Plugin package260 files · 831 KBBrowse files →
Skill instructions
remotion-best-practices2.87 KB
--- name: remotion-best-practices description: Router for all Remotion skills version: 4.0.506 --- ## Creating a video If the user asks to make, create, or build a new video or composition, load [Create a new Remotion video](./remotion-create/REFERENCE.md), whether or not a Remotion project already exists. ## New project setup If no Remotion project currently exists, load [Create a new Remotion project](./remotion-create/REFERENCE.md) ## React Markup Best Practices If you are writing Remotion React Markup, load [Remotion Markup Best Practices](./remotion-markup/REFERENCE.md) ## Maps For static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md). ## Multimedia For achieving multimedia tasks in the browser, such as trimming, cropping videos, or getting metadata from them, load [Remotion Multimedia](./remotion-multimedia/REFERENCE.md) ## Improving Interactivity By structuring the Remotion markup well, we can allow users to interactively change things in the Studio and write back to code. If relevant: [Interactivity Best Practices](./remotion-interactivity/REFERENCE.md) ## Rendering For advanced rendering beyond simple `npx remotion render`, see: [Rendering Best Practices](./remotion-render/REFERENCE.md) ## Opening Remotion Studio To launch a project in Remotion Studio, open its exact local URL, or configure Studio CLI flags, load [Remotion Studio](./remotion-studio/REFERENCE.md). ## Captions When working with Captions, load [Remotion Captions](./remotion-captions/REFERENCE.md). ## Creating a SaaS, automation or application Use the [Remotion SaaS skill](./remotion-saas/REFERENCE.md) for knowledge about Remotion-powered SaaS apps, such as `<Player>`, rendering on Lambda, Vercel, Cloudflare, via Express.js, client-side rendering, or for finding the right SaaS template. ## Looking up Remotion APIs and documentation To find and read current Remotion documentation, load [Remotion Docs](./remotion-docs/REFERENCE.md). ## Upgrading To upgrade Remotion, related packages, compatible Mediabunny packages, and installed Remotion Agent Skills, load [Remotion Upgrade](./remotion-upgrade/REFERENCE.md). ## Codex troubleshooting When running inside Codex, first try starting the Remotion Studio without opening the system browser: ```bash npx remotion studio --no-open ``` Only if that fails with file watcher limits such as `EMFILE: too many open files, watch`, retry with polling and without opening a browser from Codex: ```bash npx remotion studio --no-open --webpack-poll 1000 ``` If Studio still fails to start from Codex, ask the user to start it manually from their macOS Terminal and then continue using the already-running Studio. Sandbox errors while launching Chromium from Codex are likely caused by the Codex/macOS sandbox rather than the Remotion project.
Referenced files: 126
remotion-captions954 Bytes
---
name: remotion-captions
description: Transcribing, displaying and animating captions
version: 4.0.506
---
All captions must be processed in JSON. The captions must use the [`Caption`](https://www.remotion.dev/docs/captions/caption.md) type which is the following:
```ts
import type { Caption } from "@remotion/captions";
```
This is the definition:
```ts
type Caption = {
text: string;
startMs: number;
endMs: number;
timestampMs: number | null;
confidence: number | null;
};
```
## Generating captions
To transcribe video and audio files to generate captions, load the [transcribe-captions.md](transcribe-captions.md) file for more instructions.
## Displaying captions
To display captions in your video, load the [display-captions.md](display-captions.md) file for more instructions.
## Importing captions
To import captions from a .srt file, load the [import-srt-captions.md](import-srt-captions.md) file for more instructions.
Referenced files: 5
remotion-create2.16 KB
--- name: remotion-create description: Create a new Remotion video version: 4.0.506 --- These are instructions for making a new Remotion project and composition. If this is not the next task, see [Remotion Best Practices](../remotion-best-practices/SKILL.md) ## Scaffold a project If a project already exists, skip this. Ensure Node.js and Git is installed, and the current folder is appropriate for starting a new project. Scaffold one using: ```bash npx create-video@latest --yes --blank --no-tailwind my-video cd my-video npm i ``` Replace `my-video` with a suitable project name. ## Designing a video Keep the scaffold and add React Markup. Follow [Remotion React Markup Best Practices](../remotion-markup/SKILL.md) and [Video Layout Rules](video-layout.md) for video-first layout and text sizing guidance. ## Is this a multi-scene video? If this is a video with multiple subsequence videos, follow guidance at [Multi-scene videos](../remotion-markup/multi-scene-video.md). ## Interactivity Best Practices By structuring the React Markup following [Remotion Interactivity Best Practices](../remotion-interactivity/SKILL.md), you allow the user to make edits in the Studio which write back to code. ## TailwindCSS If Tailwind is requested, see [tailwind.md](tailwind.md) for using TailwindCSS in Remotion. ## Open the preview After creating or updating the video, start the preview server by default: ```bash npx remotion studio --no-open ``` This will start a long-running process and print the server URL for the preview. If the server is already started, it will print the URL. Open the exact URL in the Codex in-app browser. If no browser tool is available yet, use `tool_search` for the in-app browser control tool, then navigate to the local URL. You can visit a specific composition by navigating to `/[composition-id]`, for example `http://localhost:3000/MapAnimation`. ## Render the video Only render if the user explicitly asks for it. ``` npx remotion render ``` For more options, see [Rendering](../remotion-render/SKILL.md). ## Follow-up The video creation process has finished. For follow-up prompts, use [Remotion Best Practices](../remotion-best-practices/SKILL.md)
Referenced files: 4
remotion-docs1.35 KB
---
name: remotion-docs
description: Search Remotion documentation
version: 4.0.506
---
This skill teaches you how to discover and read current Remotion documentation.
If this is not relevant, load [Remotion Best Practices](../remotion-best-practices/SKILL.md) instead.
## Searching the docs
Use the Algolia search API to find relevant documentation pages:
```
POST https://plsduol1ca-dsn.algolia.net/1/indexes/*/queries?x-algolia-api-key=3e42dbd4f895fe93ff5cf40d860c4a85&x-algolia-application-id=PLSDUOL1CA
Content-Type: application/x-www-form-urlencoded
{
"requests": [
{
"query": "<your search query>",
"indexName": "remotion",
"params": "attributesToRetrieve=[\"hierarchy.lvl0\",\"hierarchy.lvl1\",\"hierarchy.lvl2\",\"url\"]&hitsPerPage=10"
}
]
}
```
Each hit contains a `url` field pointing to the documentation page.
## Fetching a page as Markdown
Append `.md` to any Remotion docs URL to retrieve its Markdown source (saves tokens):
```
https://www.remotion.dev/docs/use-video-config.md
https://www.remotion.dev/docs/sequence.md
https://www.remotion.dev/docs/lambda/rendermediaonlambda.md
```
## Workflow
1. Search Algolia for the concept or API you need.
2. Pick the most relevant URL(s) from the results.
3. Fetch each URL with the `.md` suffix.
4. Implement using the current documentation rather than memorized API knowledge.
Referenced files: 2
remotion-interactivity7.27 KB
---
name: remotion-interactivity
description: Structure Remotion markup for interactivity
version: 4.0.506
---
By writing Remotion markup in a specific way, the Remotion Studio is able to recognize the structure of the code and makes it interactive:
- Allowing items to be selected by clicking on them
- Allowing drag+drop, resizing and rotation
- Editing the CSS styles
- Making keyframes and easing values editable
If the markup is too complex for the Studio to make it interactive, then the values become grayed out.
## Make an HTML element interactive using `Interactive`
Every HTML and SVG element such as `<div>` can be turned interactive using `Interactive`:
```tsx title="Interactive elements"
<Interactive.Div
name="Greeting card"
style={{fontSize: 80, padding: 24}}
>
Hello
</Interactive.Div>
```
This allows styles and keyframes to be set in the Studio. Be sensible, if a component has many elements, the timeline might get messy.
## Prefer inline text
If text is fixed and only used once, write it directly inside the interactive element instead of extracting it into a constant.
```tsx title="Inline text"
// 👍 Fixed copy stays editable
<Interactive.Div name="Title">
Remotion Best Practices
</Interactive.Div>
```
Use a prop or variable only when the text is dynamic or reused.
## Give interactive elements a descriptive name
Add a `name` prop to elements to make them easily identifyable.
```tsx title="Interactive names"
<>
<Interactive.Div name="Hero title" style={{fontSize: 80}}>
Launch day
</Interactive.Div>
<Img name="Avatar" src="https://remotion.media/image.jpeg" />
<Video name="Background" src="https://remotion.media/video.mp4" />
<Sequence name="Title">
Launch day
</Sequence>
</>
```
## Keep all CSS styles inline
The best way is to just pass a plain object to `style` - no referring to constants, no object spreading, no math.
```tsx title="Interactive example"
<Interactive.Div
style={{
fontSize: 80,
color: 'red',
}}
>
Hello World!
</Interactive.Div>
```
```tsx title="❌ Bad for interactivity"
const baseStyle = useMemo(() => {
return {
fontSize: 12 // ❌ Non-inline styles are not supported
}
}, []);
<Interactive.Div
style={{
...baseStyle, // ❌ Spreading is not supported
color: RED, // ❌ Referring to constants is not supported
scale: frame * 10 // ❌ Math is not supported
}}
>
Hello World!
</Interactive.Div>
```
## Animate using `interpolate()`
Write animations as inline `interpolate()` calls on the property that changes.
The output range, easing, extrapolation and `output` property should use hardcoded values.
The input range may additionally use `durationInFrames`, `fps`, `width` and `height` destructured directly from `useVideoConfig()`. Bare identifiers such as `durationInFrames`, multiplication with a number such as `2 * fps` or `fps * 2`, and subtraction of a number such as `durationInFrames - 1` are supported.
```tsx title="Inline values"
const {fps, durationInFrames} = useVideoConfig();
// 👍 Inline values can be standardized and keyframed
<Interactive.Div
name="Product card"
style={{
color: 'white',
fontSize: 80,
scale: interpolate(frame, [0, fps], [0, 1], {
easing: Easing.spring({damping: 200}),
output: 'perceptual-scale',
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp'
}),
rotate: interpolate(frame, [0, 1 * fps], ['0deg', '20deg'], {
easing: Easing.spring({damping: 200}),
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp'
}),
translate: interpolate(
frame,
[durationInFrames - 30, durationInFrames],
['0px 0px', '0px 120px'],
{
easing: Easing.spring({damping: 200}),
output: 'perceptual-scale',
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp'
}
),
}}
/>
```
```tsx title="❌ Bad interactivity"
const translateY = interpolate(frame, [0, 30], [0, 120]); // ❌ Math should be directly in the markup
<Interactive.Div
name="Product card"
style={{
translate: translateY, // ❌ Only inline interpolate() calls are supported,
rotate: interpolate(frame, [start, start + 10], [0, Math.PI]), // ❌ Cannot use math with arbitrary variables, cannot use constants
scale: interpolate(anyVariable, [0, 30], [0, 1]) // ❌ Can only interpret the `frame` variable.
}}
/>
```
## Use `scale`, `translate`, `rotate` CSS properties
Avoid the `transform` CSS property.
If possible, use `scale`, `rotate` and `translate` instead because only they are interactively editable.
## Keep composition metadata inline
When scaffolding a composition, keep `width`, `height`, `fps`, `durationInFrames` and `defaultProps` inline and make no type assertions.
The Props editor can save visual edits back to your code when `defaultProps` is an inline object literal on `<Composition>` or `<Still>`.
```tsx
// 👍 Static values are in <Composition>, dynamic values are in calculateMetadata()
const calculateMetadata = useMemo(async () => {
const dimensions = await getDimensions(); // just an example
return {width: dimensions.width, height: dimensions.height};
});
<Composition
id="my-video"
component={MyComponent}
durationInFrames={150}
fps={30}
calculateMetadata={calculateMetadata}
defaultProps={{title: 'Hello', color: '#0b84ff'}}
/>
```
```tsx title="Negative examples"
const defaultProps = {title: 'Hello', color: '#0b84ff'}; // ❌ Don't extract defaultProps, must be inline
const calculateMetadata = useMemo(() => {
// ❌ Unnecessary because no calculation is being done,
return {durationInFrames: 150, fps: 30, width: 1920, height: 1080};
});
<Composition
id="my-video"
component={MyComponent}
calculateMetadata={calculateMetadata}
defaultProps={{
title: 'Hello',
} as Props} // ❌ Don't have type assertions, instead type MyComponent correctly
/>
```
Use only `calculateMetadata()` for the part of the metadata that is dynamic.
## Effects should be inline too
The effects array should not be computed.
The same rules for setting keyframes as `interpolate()` apply too here: All values should also be hardcoded: Input range, output range, easing, extrapolation, `output` property.
```tsx title="Effects"
// 👍 Parameters are inline and the array shape is stable
<CanvasImage
src={src}
width={1280}
height={720}
effects={[
radialProgressiveBlur({
center: [0.5, 0.5],
width: 1.2,
height: 0.8,
start: 0.2,
disabled: true,
rotation: interpolate(frame, [0, 120], [0, 180]),
}),
]}
/>
const center = [0.5, 0.5] as const;
const rotation = frame * 1.5;
<CanvasImage
src={src}
width={1280}
height={720}
// ❌ Conditional effect is not animateable
effects={enabled ? [
radialProgressiveBlur({
// ❌ Not inline
center,
rotation,
}),
] : []}
/>
```
Render separate elements if one version should have effects and another should not.
## Making your own component interactive
To make a custom userland component interactive, use:
[Make a component interactive](https://www.remotion.dev/docs/studio/make-component-interactive.md)
## Video editing
If a Remotion component mainly consists of video and audio clips, see [Video editing](../remotion-markup/video-editing.md) for best practices on how to structure Remotion markup so the clips are interactively editable in the timeline.
Referenced files: 2
remotion-maps1.01 KB
--- name: remotion-maps description: Remotion Map animation knowledge version: 4.0.506 --- # Remotion Maps Choose exactly one technique from the intended shot, then load only that technique's `TECHNIQUE.md`. Every technique directory is self-contained and may be removed without breaking the others. ## [Static map](techniques/static-map/TECHNIQUE.md) - Requires you grab a satellite image and mount it in a `<Img>` tag, and animate on top ## [Mapbox](techniques/mapbox/TECHNIQUE.md) - Requires a Mapbox key - Nicer styles by default - Map can display a round globe when zoomed out - Includes nice 3D buildings such as the Eiffel tower ## [MapLibre](techniques/maplibre/TECHNIQUE.md) - Requires no API key, fully free - Does not include 3D building ## [MapTiler](techniques/maptiler/TECHNIQUE.md) - Uses MapTiler - Annotations can be drawn on top of geographic features: borders, rivers, labels ## [CesiumJS](techniques/cesium/TECHNIQUE.md) - Flythroughs through terrain and mountains - "Flight simulator" perspective
Referenced files: 26
remotion-markup10.6 KB
---
name: remotion-markup
description: Content, animation and effects best practices
version: 4.0.506
---
This is guidance for writing Remotion React Markup.
If this is not relevant, load [Remotion Best Practices](../remotion-best-practices/SKILL.md) instead.
## General rules
Drive animations using `useCurrentFrame()` and `interpolate()`.
CSS `transition` or `animation` will not render correctly, they need to refactored.
Tailwind animation class will not render correctly, they need to be refactored.
Use `Easing.bezier()` and `Easing.spring()` to customize timing.
Structure your markup according to [Remotion Interactivity Best Practices](../remotion-interactivity/SKILL.md)
```tsx
import { useCurrentFrame, Easing, interpolate, Interactive } from "remotion";
export const FadeIn = () => {
const frame = useCurrentFrame();
return (
<Interactive.Div
name="Title"
style={{
opacity: interpolate(frame, [0, 2 * fps], [0, 1], {
extrapolateRight: "clamp",
extrapolateLeft: "clamp",
easing: Easing.bezier(0.16, 1, 0.3, 1),
}),
}}
>
Hello World!
</Interactive.Div>
);
};
```
Keep the `interpolate()` call inline in the `style` prop.
Use `scale`, `translate`, `rotate` CSS properties over `transform`.
```tsx
// 👍 Inline editable keyframes and transform shorthands
style={{
scale: interpolate(frame, [0, 100], [0, 1], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
easing: Easing.spring({damping: 200}),
output: 'perceptual-scale' // For `scale` animations, use "output: 'perceptual-scale'"
}),
translate: interpolate(frame, [0, 100], ["0px 0px", "100px 100px"], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
easing: Easing.spring({damping: 200}),
}),
rotate: interpolate(frame, [0, 100], ["20deg", "90deg"], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
easing: Easing.spring({damping: 200}),
}),
}}
// 👎 Non-inline values and transform strings become harder to edit in Studio
const scale = interpolate(frame, [0, 100], [0, 1]);
style={{
transform: `scale(${scale})`,
}}
```
## Assets
Place assets in the `public/` folder at your project root.
Use `staticFile()` to reference files from the `public/` folder.
## Media components
Add video and audio using `<Video>` and `<Audio>` from `@remotion/media`.
Add images using the `<CanvasImage>` component.
Add animated GIFs, APNG, WebP or AVIF images using `<AnimatedImage>`, use `@remotion/gif` if not using Chrome.
Use `staticFile()` for files in `public/` or pass a remote URL directly:
```tsx
import { Audio, Video } from "@remotion/media";
import { staticFile, CanvasImage, AnimatedImage } from "remotion";
export const MyComposition = () => {
return (
<>
<Video src={staticFile("video.mp4")} style={{ opacity: 0.5 }} />
<Audio src={staticFile("audio.mp3")} />
<CanvasImage
src={staticFile("logo.png")}
style={{ width: 100, height: 100 }}
/>
<Video src="https://remotion.media/video.mp4" />
<AnimatedImage src={staticFile('nyancat.gif')} />
</>
);
};
```
## Example scene
```tsx
import {
AbsoluteFill,
Easing,
Interactive,
interpolate,
useCurrentFrame,
useVideoConfig
} from "remotion";
export const Empty = () => {
const {fps} = useVideoConfig();
const frame = useCurrentFrame();
return (
<AbsoluteFill
name="Scene"
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white'
}}
>
<Interactive.Div
name="Title"
style={{
opacity: interpolate(frame, [1 * fps, 2 * fps], [0, 1], {
extrapolateRight: "clamp",
extrapolateLeft: "clamp",
easing: Easing.bezier(0.16, 1, 0.3, 1),
}),
fontSize: 88
}}
>
Title
</Interactive.Div>
<Interactive.Div
name="Subtitle"
style={{
opacity: interpolate(frame, [2 * fps, 3 * fps, 8 * fps, 10 * fps], [0, 1, 1, 0], {
extrapolateRight: "clamp",
extrapolateLeft: "clamp",
easing: [Easing.bezier(0.16, 1, 0.3, 1), Easing.linear, Easing.bezier(0.16, 1, 0.3, 1)],
}),
fontSize: 32
}}
>
Subtitle
</Interactive.Div>
</AbsoluteFill>
);
}
```
## Delaying, trimming
Most components (`<AbsoluteFill>`, `<Interactive.*>` `<Img>`, `<AnimatedImage>`, `<CanvasImage>`, `<HtmlInCanvas>`, `<Solid>`, `<Sequence>` from `remotion`, `<Video>` and `<Audio>` from `@remotion/media`, `<Gif>`, and more) support the following props:
### from
```tsx
<Img from={1 * fps} {/* ... */}/>
<Video from={1 * fps} {/* ... */}/>
<Interactive.Div from={1 * fps} {/* ... */}/>
```
When the element starts appearing in the timelien.
### durationInFrames
```tsx
<Img durationInFrames={20 * fps} {/* ... */}/>
<Interactive.Div durationInFrames={20 * fps} {/* ... */}/>
```
For how long the layer plays in the timeline.
For media, pass the natural duration of the media: `<Video durationInFrames={29.322 * fps}/>`
### `trimBefore`
Useful for components whose internal clock should start later:
```tsx
// Trim away first 2 seconds of footage
<Video trimBefore={2 * fps} {/* ... */} />
// `useCurrenFrame()` for children starts at `10 * fps`
<Sequence trimBefore={10 * fps} {/* ... */} />
```
### Fallback
If a component does not support these props, wrap it in`<Sequence>` from `remotion`, which has them.
- `layout="absolute-fill"` makes the Sequence behave like AbsoluteFill
- `layout="none"` is "headless" mode, no wrapper element is used.
## Maps
See [Remotion Maps](./remotion-maps/REFERENCE.md) if wanting to include maps in the video.
## Text highlights and annotations
See [text-highlights.md](text-highlights.md) for text highlights (highlight markers), circles, underlines, strike-throughs, crossed-off text, boxes.
## Multi-scene videos
See [multi-scene-video.md](multi-scene-video.md) if planning to make a video with multiple subsequent scenes.
## Voiceover
See [voiceover.md](voiceover.md) for adding an AI-generated voiceover to Remotion compositions using ElevenLabs TTS.
## Embedding Videos
See [embedding-videos.md](embedding-videos.md) for advanced knowledge about embedding videos - trimming, volume, speed, looping, pitch.
## Embedding Audio
See [audio.md](audio.md) for advanced audio features like trimming, volume, speed, pitch.
## Video editing
See [video-editing.md](video-editing.md) for structuring editable video timelines in Remotion Studio.
## Cropping
See [cropping.md](cropping.md) if needing to crop the visible rectangle of a component.
## Transitions
See [transitions.md](transitions.md) for scene transition patterns.
## Visual and pixel effects
When creating a visual effect, consider whether it is feasible using CSS and HTML, or whether a shader is needed.
Order or preference:
1. Regular HTML + CSS or other web techniques
2. An effect applied to the element directly (`<Video>`, `<Img>`), or by wrapping the content in [`<HtmlInCanvas>`](html-in-canvas.md), which also accepts `effects`:
- A listed effect via [effects.md](effects.md)
- A custom `createEffect()` via [effects.md](effects.md) when no preset is available.
## 3D content
See [./3d.md](./3d.md) for 3D content in Remotion using Three.js and React Three Fiber.
## Sound effects
When needing to use sound effects, load the [./sfx.md](./sfx.md) file for more information.
## Audio visualization
When needing to visualize audio (spectrum bars, waveforms, bass-reactive effects), load the [./audio-visualization.md](./audio-visualization.md) file for more information.
## Maps
For static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md).
## Captions
When dealing with captions or subtitles, load the [Remotion Captions](../remotion-captions/SKILL.md) skill for more information.
## Google Fonts
Is the recommended way to load fonts in Remotion. See [google-fonts.md](google-fonts.md) for how to load Google Fonts.
## Local fonts
See [local-fonts.md](local-fonts.md) for how to load local fonts.
## GIFs
See [gifs.md](gifs.md) for how to display GIFs synchronized with Remotion's timeline.
## Advanced Images
See [images.md](images.md) for sizing and positioning images, dynamic image paths, and getting image dimensions.
## Lottie animations
See [lottie.md](lottie.md) for embedding Lottie animations in Remotion.
## Timing
See [timing.md](timing.md) for more timing techniques for `interpolate()`.
## Parameterized videos
See [parameters.md](parameters.md) for making a composition parametrizable by adding a Zod schema.
## Measuring DOM nodes
See [measuring-dom-nodes.md](measuring-dom-nodes.md) for measuring DOM element dimensions in Remotion.
## Measuring text
See [measuring-text.md](measuring-text.md) for measuring text dimensions, fitting text to containers, and checking overflow.
## Using FFmpeg
For some video operations, such as trimming videos or detecting silence, FFmpeg should be used. Load the [./ffmpeg.md](./ffmpeg.md) file for more information.
## Silence detection
When needing to detect and trim silent segments from video or audio files, load the [./silence-detection.md](./silence-detection.md) file.
## Dynamic duration, dimensions and data
See [calculate-metadata.md](calculate-metadata.md) for dynamically set composition duration, dimensions, and props.
## Advanced compositions
See [compositions.md](compositions.md) for how to define stills, folders, default props and for how to nest compositions.
## Advanced sequencing
See [sequencing.md](sequencing.md) for more sequencing patterns - delay, trim, limit duration of items.
## Install modules
Use `npx remotion add` to add new packages with the right version:
```
npx remotion add @remotion/media
```
This goes for `@remotion/*` packages, `mediabunny`, `@mediabunny/*`, and `zod`.
## Previewing markup
```
npx remotion studio --no-open
```
This will start a long-running process and print the server URL for the preview.
If server is already started, it will print the URL.
You can visit a specific composition by navigating to `/[composition-id]`, for example `http://localhost:3000/MapAnimation`.
## Optional: one-frame render check
You can render a single frame with the CLI to sanity-check layout, colors, or timing.
Skip it for trivial edits, pure refactors, or when you already have enough confidence from Studio or prior renders.
```bash
npx remotion still [composition-id] --scale=0.25 --frame=30
```
At 30 fps, `--frame=30` is the one-second mark (`--frame` is zero-based).
Referenced files: 57
remotion-multimedia705 Bytes
--- name: remotion-multimedia description: Interacting with Mediabunny version: 4.0.506 --- Mediabunny is a multimedia library for dealing with audio and video in the browser. Here is a compact overview of its capabilities: https://mediabunny.dev/llms.txt ## Getting audio duration See [get-audio-duration.md](get-audio-duration.md) for getting the duration of an audio file in seconds with Mediabunny. ## Getting video dimensions See [get-video-dimensions.md](get-video-dimensions.md) for getting the width and height of a video file with Mediabunny. ## Getting video duration See [get-video-duration.md](get-video-duration.md) for getting the duration of a video file in seconds with Mediabunny.
Referenced files: 5
remotion-render470 Bytes
--- name: remotion-render description: Export a Remotion video version: 4.0.506 --- ## General rendering strategy Render a video using: ``` npx remotion render ``` Full list of options: https://www.remotion.dev/docs/cli/render.md Render a still using: ``` npx remotion still ``` Full list of options: https://www.remotion.dev/docs/cli/still.md ## Transparent videos See [Transparent videos](./transparent-videos.md) for rendering out a video with transparency.
Referenced files: 3
remotion-saas1.03 KB
--- name: remotion-saas description: Build an app with Remotion version: 4.0.506 --- One can build apps with Remotion. It is possible to have a simple form and hook it up to a render, or have a complex video editor. ## Choosing a template or a framework We have several templates for SaaS which can be cloned or used as a reference. See [Choosing a framework](framework.md) for help choosing a template or framework. ## The `<Player>` This component allows embedding a Remotion preview in a React app. See [Player](player.md) for more information about the Player. ## Rendering There are client-side and server-side rendering options available. See [Rendering](rendering.md) for advice on how to choose, and about the Lambda, Vercel, Node.js and Cloudflare options. ## With Vue See https://www.remotion.dev/docs/vue.md for how to use Remotion with Vue. ## Angular See https://www.remotion.dev/docs/angular.md for how to use Remotion with Angular. ## Svelte See https://www.remotion.dev/docs/svelte.md for how to use Remotion with Svelte.
Referenced files: 5
remotion-studio958 Bytes
--- name: remotion-studio description: Preview a Remotion video version: 4.0.506 --- Execute the following command: ```bash npx remotion studio --no-open ``` If the Studio is already opened, the URL will be printed and the command will exit. Otherwise, a long-running process will start, and the URL will be printed. Open the URL in the browser. ## Useful flags | Argument | Purpose | | ----------------- | --------------------------------------------------------------------------------------------- | | `--log=<level>` | Set `error`, `warn`, `info` (default), or `verbose` logging. | | `--port=<number>` | Request a Studio server port; otherwise Remotion finds a free port. | | `--force-new` | Start another Studio instance even when one is already running for the same project and port. |
Referenced files: 2
remotion-upgrade1.84 KB
--- name: remotion-upgrade description: Upgrade Remotion, and related packages version: 4.0.506 --- # Upgrade Remotion 1. Inspect the project manifests and lockfile to identify the package manager and workspaces. Preserve unrelated changes. 2. Determine whether `@remotion/cli` is locally available. If it is, run: ```bash npx remotion upgrade ``` This also updates project-local Remotion skills. Skip the manual upgrade below. 3. If `@remotion/cli` is not available, upgrade manually: - Get the latest stable Remotion version with `npm view remotion version`. - Find every installed `remotion` and `@remotion/*` dependency across the project and upgrade them all to that exact version. Preserve their dependency sections and the project's workspace or catalog conventions. - Read the current [Mediabunny compatibility page](https://www.remotion.dev/docs/mediabunny/version) and determine the Mediabunny version compatible with the target Remotion version. Upgrade every installed `mediabunny` and `@mediabunny/*` package to the documented compatible version. - Run the project's package manager to update its lockfile. 4. If `@remotion/cli` is not available, update the installed Remotion skills: ```bash npx skills update remotion-best-practices remotion-captions remotion-create remotion-docs remotion-interactivity remotion-maps remotion-markup remotion-multimedia remotion-render remotion-saas remotion-studio remotion-upgrade --yes ``` 5. Review the manifest and lockfile diff. Ensure all Remotion packages use one version and all installed Mediabunny packages use the compatible version. If the CLI is available, run `npx remotion versions` as an additional check. The [Remotion releases](https://github.com/remotion-dev/remotion/releases) contain the changelog and may be useful for summarizing relevant changes after the upgrade.
Referenced files: 2
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package license
- MIT
- Package author
- Remotion
- Keywords
- remotion, video, react, animation, composition, rendering, ffmpeg, captions, audio
Declared capabilities
- Read
- Write
Package observed Sep 30, 2026.
Technical details
- First seen
- Sep 30, 2026 · 22:02 UTC
- Last seen
- Oct 1, 2026 · 12:00 UTC
- Collection status
- Collected
plugins~Plugin_efd07789186881918253a50acfc32762
Download plugin data (JSON)