Introduction
Client-side rendering in the browser using WebCodecs
Client-Side Rendering (Browser Export) — Default
Client-side rendering is the default rendering mode in the RVE SDK. Users can export videos directly in their browser — no server infrastructure required. Under the hood, the SDK uses @remotion/web-renderer to encode video using the browser's built-in WebCodecs API.
This is enabled automatically when you use the SDK without providing a customRenderer. There are no API routes to implement, no servers to manage, and no cloud configuration. The video is rendered frame-by-frame in the browser and downloaded as an MP4 when complete.
When to Use Client-Side Rendering
Client-side rendering is the default — you're already using it if you haven't configured a customRenderer. It's ideal for:
- Getting started - works out of the box with zero setup
- Local-first apps - no server costs or infrastructure to maintain
- Prototyping and demos - ship a working export immediately
- Light to medium workloads - most use cases work well client-side
Still confused?
Think of client-side rendering like editing a photo in your browser and hitting "Save As" - the processing happens right on your device. No uploads, no servers, no waiting for a cloud job. The tradeoff is that rendering speed depends on the user's hardware, and some advanced features aren't available in this mode.
Browser Requirements
Client-side rendering requires a browser that supports the WebCodecs API. If a user's browser doesn't support it, the editor will show a dialog recommending they switch to a supported browser.
| Browser | Supported |
|---|---|
| Chrome 94+ | Yes |
| Edge 94+ | Yes |
| Firefox | No |
| Safari | No |
Feature Limitations
When client-side rendering is active, certain features are automatically disabled because the web rasterizer doesn't support them:
- Stickers - sticker panel is hidden and sticker items are filtered from tracks
- Animations - animation settings are hidden on video, image, and text panels
- 3D layouts - 3D layout selector is hidden on image panels
- Greenscreen - greenscreen toggle is hidden (canvas-based fallback is used internally)
- Caption word highlighting - captions display statically without per-word highlighting
These limitations are handled automatically - the UI adapts so users only see features that work with browser export.
How It Works
User clicks "Export Video"
│
▼
Browser checks WebCodecs support
→ Unsupported? Shows browser dialog
→ Supported? Continues...
│
▼
renderMediaOnWeb() renders each frame
→ Uses hardware acceleration when available
→ Progress bar shown to user
│
▼
Render complete → MP4 blob created
→ Automatic download to user's deviceCSR vs Server Rendering
Client-side rendering is the default. You only need server rendering if you have specific requirements like broad browser support or high-volume production workloads.
| CSR (Browser) — Default | SSR (Optional) | Lambda (Optional) | |
|---|---|---|---|
| Where it runs | User's browser | Your server | AWS Lambda |
| Server setup | None | API routes required | AWS + API routes |
| Best for | Getting started, most use cases | Full control, all browsers | Production, high volume |
| Dependencies | @remotion/web-renderer, @remotion/media | @remotion/bundler, @remotion/renderer | @remotion/lambda |
| Browser support | Chrome/Edge only | Any | Any |
Next Steps
- Set up client-side rendering in your project
- Compare with SSR or Lambda rendering