The Browser SDK runs entirely in the browser — there’s no server-side runtime to deploy. What you do deploy is the host application that loads it, plus the small backend surface that mints tokens for your users. This section covers the four things that consistently come up between “it works on my laptop” and “it works in production”:
Idiomatic patterns for wrapping the SDK in React, Vue, Svelte, and Angular — managing client lifetimes, subscribing observables into component state, and avoiding double-mount pitfalls in dev mode.
The SDK is browser-only. Cover dynamic imports, "use client"
boundaries, and route handlers that mint tokens without leaking
your project credentials.
Symptom → cause → fix for the issues that show up most often: expired tokens, black video, autoplay-blocked audio, ICE failures, and browser quirks.
A Browser SDK app is split between two runtimes:
The SDK never sees your SignalWire API credentials. Project ID and auth token live exclusively on the backend; the browser only ever holds a short-lived JWT it received from your token endpoint. This is the most important invariant to preserve across every framework, deployment target, and CDN setup discussed in this section.
Everything else (CDN choice, framework, SSR strategy) is a variation on this shape. The remaining pages in this section walk through the practical details of each layer.