en un clic
add-cli-option
Add 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.
Menu
Add 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.
Best practices for Remotion - Video creation in React
Release a new Remotion version
Fix newly added optional parameters, optional React props, and optional type/interface members in Remotion monorepo diffs by converting internal APIs to required nullable values and updating call sites. Use when a PR, review, or user asks to forbid new `foo?: T` / `param?: T` additions except for exported or documented public APIs where requiring the value would be breaking.
Wait for a Remotion pull request to become mergeable, handle merge conflicts, distinguish genuine CI failures from flakes, rerun flaky checks through the flake skill, and merge the PR. Use when asked to run /merge, merge a current PR after checks pass, or shepherd a Remotion PR through CI to merge.
Add 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.
Add a new sound effect to @remotion/sfx
| name | add-cli-option |
| description | Add 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. |
How to convert a hardcoded CLI flag into a proper AnyRemotionOption, or add a brand new one.
Create packages/renderer/src/options/<name>.tsx:
import type {AnyRemotionOption} from './option';
let myValue = false; // module-level default state
const cliFlag = 'my-flag' as const;
export const myFlagOption = {
name: 'Human-readable Name',
cliFlag,
description: () => <>Description shown in docs.</>,
ssrName: null, // or 'myFlag' if used in SSR APIs
docLink: 'https://www.remotion.dev/docs/config#setmyflagenabled',
type: false as boolean, // default value, also sets the TypeScript type
getValue: ({commandLine}) => {
if (commandLine[cliFlag] !== undefined) {
return {value: commandLine[cliFlag] as boolean, source: 'cli'};
}
return {value: myValue, source: 'config'};
},
setConfig(value) {
myValue = value;
},
} satisfies AnyRemotionOption<boolean>;
The type in AnyRemotionOption<T> and type: <default> as T determines the option's value type. Use boolean, string | null, number | null, etc.
For negating flags (like --disable-ask-ai → askAIEnabled = false), handle the inversion in getValue.
packages/renderer/src/options/index.tsx:
allOptions objectThis makes it available as BrowserSafeApis.options.myFlagOption throughout the codebase.
packages/cli/src/parsed-cli.ts:
BrowserSafeApis.options.myFlagOption.cliFlag to the BooleanFlags arraypackages/cli/src/parse-command-line.ts:
BrowserSafeApis.optionsCommandLineOptions type, add: [myFlagOption.cliFlag]: TypeOfOption<typeof myFlagOption>;Instead of reading parsedCli['my-flag'] directly, resolve via:
const myFlag = myFlagOption.getValue({commandLine: parsedCli}).value;
For Studio options, this is typically in packages/cli/src/studio.ts. For render options, in the relevant render command file.
packages/cli/src/config/index.ts:
BrowserSafeApis.optionsFlatConfig type (either in the RemotionConfigObject global interface or the FlatConfig intersection)Config object: setMyFlagEnabled: myFlagOption.setConfigThis step is mandatory. Every new option must have its docs updated to use <Options id="..." /> so the description is pulled from the option definition automatically (single source of truth). If converting an existing hardcoded flag, replace any hand-written description with the <Options> component.
CLI command pages (check all that apply — cli/render.mdx, lambda/cli/render.mdx, cloudrun/cli/render.mdx, cli/benchmark.mdx):
### \--my-flag`` section<Options id="my-flag" /> as the description body (no import needed — it's globally available)id must match the option's cliFlag / id valuepackages/docs/docs/config.mdx:
## \setMyFlagEnabled()`` section with:
<Options id="my-flag" /> for the descriptionFollow the pattern of nearby entries (e.g., setAskAIEnabled, setEnableCrossSiteIsolation).
cd packages/renderer && bun run make
cd packages/cli && bun run make
packages/renderer/src/options/option.tspackages/renderer/src/options/ask-ai.tsx (boolean, studio-only)packages/renderer/src/options/index.tsxpackages/cli/src/parsed-cli.tspackages/cli/src/parse-command-line.tspackages/cli/src/config/index.ts