Stability requirements
Load fast, never crash, use only standards‑compliant Web APIs. Per‑channel limits live on each channel page.
Bundle size
Section titled “Bundle size”- MUST: total bundle < 250 MiB (YouTube’s cap is binding).
- MUST: any single file < 30 MiB.
- SHOULD: individual files < 512 KiB.
- SHOULD: initial bundle (page load →
bootstrapper.complete()) < 15 MiB.
Lazy‑load anything not required for the first interactive frame. FRVR’s CDN supports it: see CDN reference.
Load time
Section titled “Load time”- SHOULD become interactive in under 5 seconds on a mid‑tier mobile / 4G.
- MUST show progress while loading. The bootstrapper splash is fine.
- MUST call
FRVR.bootstrapper.complete()only when the game is interactive (not on a “Tap to start”).
Saved game data
Section titled “Saved game data”- MUST keep cloud save < 3 MiB total.
- SHOULD keep it < 500 KiB.
- MUST be JSON‑serializable. Binary data needs base64 (and counts toward the budget).
Crashes
Section titled “Crashes”- MUST NOT have reproducible crashes on any supported device.
- MUST NOT exceed 512 MB JS heap peak. Older iPhones kill the webview, taking the host with them.
- MUST NOT crash the host app or browser.
Web standards
Section titled “Web standards”- MUST use only W3C / WHATWG APIs (JS, Canvas, WebGL, WebAudio).
- MUST work in Chrome, Edge, Firefox, Safari (desktop and iOS WebView), and the in‑app webviews used by Facebook, Samsung, Xiaomi, etc.
- MUST work on the YouTube app on Android and iOS (for YouTube Playables builds).
- MUST NOT depend on
eval,new Function(string), or runtime code generation. Most channels run a strict CSP.
File paths and names
Section titled “File paths and names”- MUST use relative paths only.
- MUST restrict file names to alphanumerics plus
_,-,..
Service workers
Section titled “Service workers”- MUST NOT register a service worker. The channel either provides one or forbids it.
- Cache busting is handled by the FRVR pipeline (file hashes appended at packaging).