Contributing an Element
Have a small, remixable Remotion Element? We'd like to see it. Before submitting, read the Element guidelines. They apply to Elements in the official gallery and third-party libraries alike.
1. Develop the Element
- Copy
packages/docs/elements-templatetopackages/docs/elements/<category>/<slug>. The template includes a component and anindex.mdxdocumentation page. - Add its metadata to
packages/docs/src/components/Elements/element-definitions.tsto register its Studio composition, and add its page topackages/docs/elements-sidebars.ts. - Build and preview the Element in Studio:
Terminalcd packages/docs && bun remotion
The scaffold-element skill is an Agent Skill that can set up the template and Studio composition.
Declare the Element's dependencies in element-definitions.ts as described in the Element guidelines.
If the Element needs starter props, put them in initial-props.ts, type them with satisfies ComponentProps<typeof YourComponent>, and register them as initialProps in element-definitions.ts.
For installed assets, declare assets in element-definitions.ts and put staticFileRef() references in installationProps. Keep preview URLs in initialProps. For Elements without installed assets, use assets: [] and installationProps: null.
2. Prepare previews
Render and visually review the Element and its previews:
Terminalcd packages/docs bun run render-element-previews --element=<category>/<slug> bun test src/test/elements.test.ts
To make previews visible in the pull request deployment:
- Copy the rendered preview assets to
packages/docs/static/elementsand commit them. - Set
image,posterUrl, andvideoUrlto/elements/<category>-<slug>-preview.pngand/elements/<category>-<slug>-preview.mp4, matching those files.
3. Open the pull request
Include:
- The implementation, page, and gallery registration
- What makes it useful
- A working PNG and MP4 preview
- Links to inspiration, if any
Keep “Allow edits from maintainers” enabled on the pull request. After approval, a repository maintainer uploads the gallery previews to static storage.