Custom entry point
Override the generated Remotion composition for advanced use cases.
Democraft normally generates an entry from demo.ts, including components in
its visuals map. You do not need this page to use a local or copied remocn
component. Create a custom entry only when you need to replace the composition,
override caption/callout internals, or control Remotion registration directly.
Why a custom entry?
The Remotion entry point is the file that calls registerRoot(Root). It defines which <Composition> renders your video and what props it receives. By taking control of it, you can:
- Register custom visual components (
local.*renderers). - Override built-in renderers with your own implementations.
- Mix remocn-registry components with your own.
Creating the entry file
In your project root (next to demo.ts), create remotion-entry.ts:
Import your components and add them to defineVisualRegistry():
defineVisualRegistry extends the built-in defaults — you only list
your additions. Entries with the same ID as a built-in renderer override
the default.
Pass --entry to the CLI when rendering:
Installing remocn components from the registry
Remocn components are distributed via a shadcn-compatible registry. The registry is already configured in components.json:
This copies the component source into your project (typically components/remocn/). You then import it in your entry file and register it:
You own the cloned source. Edit the .tsx file directly to change colors, timing, animation curves — anything. The component is yours.
The defineVisualRegistry API
Each entry has:
kind—"caption"or"callout"(determines which overlay type uses it).id— the renderer string authors write indemo.ts.component— a React component acceptingCaptionPropsorCalloutProps.
The returned registry includes all built-in renderers plus your additions.
Experimental
The defineVisualRegistry API is stable in shape but the broader adapter model (remocnAdapter(), defineConfig({ adapters })) is still being wired through the pipeline. Today, register components via the custom entry as shown above. The adapters config field exists but is not yet consumed at render time.
Using the entry with the Studio
The Studio's render queue accepts an entryPath in the enqueue request. When set, the render uses your custom entry instead of the built-in one.
From the Studio UI, this field appears in the render panel. Programmatically:
When entryPath is omitted, the Studio falls back to @democraft/remotion/dist/entry.js (the built-in entry).
Next steps
- Creating components — the
CaptionProps/CalloutPropscontract and a full example. - Components overview — what remocn is and the namespace convention.