# Browser support, size, versioning

> @faustine-ai/browser-sandbox documentation · https://browser-sandbox.faustine.ai/docs/browser-support/ · source: README.md on GitHub (https://github.com/faustine-ai/browser-sandbox)

Evergreen Chromium, Firefox and Safari 16+. The suite runs in Playwright's
Chromium, Firefox and WebKit. A browser missing a primitive (sandboxed
frames, `MessageChannel`, `blob:` workers, worker CSP inheritance) surfaces
as `SandboxUnavailable`; there is no degraded mode.

Sizes, min+gz, checked in CI against budgets: core 8.5 KB (budget 10),
worker runtime 2.4 KB (budget 4), frame relay 0.5 KB (budget 2).

The frame document carries a protocol version; the page checks it in the
handshake and refuses a mismatch. The worker runtime is **sent by the page**
in the `spawn` message, so the frame document rarely changes and a stale
cached copy keeps working across library versions until the protocol
itself changes. `frameVersion()` is a short hash to use as a cache key.

Timings on a laptop (local server): boot 2–7 ms, first run 3–5 ms, bridge
overhead per call ≤ 0.1 ms, a 1 MB string in and out 3–8 ms, a 5 MB `File`
in 3–5 ms.
