Client-side rendering in the Editor Starter
The Editor Starter can render videos in the browser using @remotion/web-renderer.
Enable client-side rendering
This feature is disabled by default.
Set ENABLE_CLIENT_SIDE_RENDERING to true:
src/editor/flags.tsexport const ENABLE_CLIENT_SIDE_RENDERING = true;
FEATURE_NEW_MEDIA_TAGS must also be enabled (which it is by default).
You do not need to configure the REMOTION_AWS_* environment variables or run deploy.ts for rendering.
note
Other Editor Starter features may still need backend routes or AWS credentials. For example, text rendering loads font metadata from /api/fonts/:name, asset uploads use Amazon S3, and captioning uses a backend route.
How it works
When the user clicks Render, the Editor Starter:
- Collects the current tracks, items, assets, composition settings, and font metadata.
- Passes the composition directly to
renderMediaOnWeb(). - Encodes the video in the browser using WebCodecs.
- Creates a temporary blob URL and shows the completed render in the task indicator, where it can be downloaded.
Unused Lambda routes
The /api/render and /api/progress routes are not used for client-side rendering.
However, by default, assets still upload to S3.
Main tradeoffs
- The user can leave the page when rendering on Lambda, but not with client-side rendering.
- Client-side rendering avoids Lambda compute costs. Remotion licensing, S3 asset storage, and bandwidth costs may still apply.
- The browser must support WebCodecs, and the composition must work within the limitations of client-side rendering.
- Client-side rendering may make the page less responsive.
- Lambda is generally better suited to long or distributed renders.
- More codecs are supported on Lambda, such as ProRes.
- Client-side rendering creates a temporary blob URL. Unlike Lambda output in S3, it is not persisted automatically.