Skip to content

Stability requirements

Load fast, never crash, use only standards‑compliant Web APIs. Per‑channel limits live on each channel page.

  • 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.

  • 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”).
  • 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).
  • 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.
  • 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.
  • MUST use relative paths only.
  • MUST restrict file names to alphanumerics plus _, -, ..
  • 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).