npx skills add ...
npx skills add remotion-dev/skills --skill remotion-interactivity
npx skills add remotion-dev/skills --skill remotion-interactivity
Structure Remotion markup for interactivity
By writing Remotion markup in a specific way, the Remotion Studio is able to recognize the structure of the code and makes it interactive:
If the markup is too complex for the Studio to make it interactive, then the values become grayed out.
InteractiveEvery HTML and SVG element such as <div> can be turned interactive using Interactive:
This allows styles and keyframes to be set in the Studio. Be sensible, if a component has many elements, the timeline might get messy.
Add a name prop to elements to make them easily identifyable.
The best way is to just pass a plain object to style - no referring to constants, no object spreading, no math.
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.
scale, translate, rotate CSS propertiesAvoid the transform CSS property.
If possible, use scale, rotate and translate instead because only they are interactively editable.
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>.
Use only calculateMetadata() for the part of the metadata that is dynamic.
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.
Render separate elements if one version should have effects and another should not.
To make a custom userland component interactive, use: Make a component interactive
If a Remotion component mainly consists of video and audio clips, see Video editing for best practices on how to structure Remotion markup so the clips are interactively editable in the timeline.