Skip to main content

Edit props visually

Also available as a 6min video
Visual editing

To edit props visually, first register a schema with your <Composition>.

Opening the props editor​

To open the props editor, press the icon in the top right corner of the Remotion Studio to open the right sidebar. Alternatively, press Cmd/Ctrl + J to toggle the sidebar. Select the Props tab.

Editing props​

Use the controls in the props editor to live-update the props of your composition. If you have changes, an undo ↩️ button will appear which you can use to revert to your changes in the code.

Supported controls​

Controls are implemented for:

  • z.object()
  • z.string()
  • z.date()
  • z.number()
  • z.boolean()
  • z.array()
  • z.union() (only unions of two types, one of them being z.null() or z.undefined())
  • z.optional()
  • z.nullable()
  • z.enum()
  • zColor() (from @remotion/zod-types)
  • zTextarea() (from @remotion/zod-types)
  • staticFile() assets by typing as z.string() and using staticFile() in your code
  • .default()

Editing JSON​

Alternatively, you can edit the JSON schema directly by pressing JSON in the props editor. Changes will not apply if the schema is invalid.

Saving props to your code​

Remotion can statically analyze your root file and allow you to save props back to the code via the 💾 button. For this to work, your default props must be inlined into your <Composition>:

Inlined defaultProps
tsx
import React from "react";
import { Composition } from "remotion";
import { MyComponent, myCompSchema } from "./MyComponent";
 
export const RemotionRoot: React.FC = () => {
return (
<Composition
id="my-video"
component={MyComponent}
durationInFrames={100}
fps={30}
width={1920}
height={1080}
schema={myCompSchema}
defaultProps={{
propOne: "Hello World",
propTwo: "Welcome to Remotion",
}}
/>
);
};
Inlined defaultProps
tsx
import React from "react";
import { Composition } from "remotion";
import { MyComponent, myCompSchema } from "./MyComponent";
 
export const RemotionRoot: React.FC = () => {
return (
<Composition
id="my-video"
component={MyComponent}
durationInFrames={100}
fps={30}
width={1920}
height={1080}
schema={myCompSchema}
defaultProps={{
propOne: "Hello World",
propTwo: "Welcome to Remotion",
}}
/>
);
};

Rendering videos from your input​

If you would like to render a video based on your input in the controls, then you don't need to save the props back to the code. Use the Render button to open a render dialog where your modified default props are filled in as input props.