Skip to content

YouTube Playables

The strictest channel FRVR ships to. Friction is around aspect ratios (must support all of them) and external network calls (essentially none allowed). Read in addition to the global requirements.

Source of truth: Google’s Playables certification requirements.

The game MUST be playable in every ratio: 9:32, 9:21, 9:16, 3:4, 1:1, 4:3, 16:9, 21:9, 32:9. Pillarbox / letterbox padding is acceptable; refusing to render or breaking layout is not.

MUST NOT lock device orientation or posture.

FRVR.tracker.gameReady() is a required method. You MUST call it the moment the game becomes interactable — when the player has reached actual gameplay or a main menu they can act on. Never call it before then (e.g. during boot, asset loading, or a logo screen).

// Call exactly once, as soon as the player can interact:
FRVR.tracker.gameReady();

Calling gameReady() too early — while the game is still loading or non‑interactive — is a rejection.

Thumbnails, titles, and descriptions submitted to the YouTube Developer Portal MUST NOT include studio logos.

FRVR.bootstrapper.complete() MUST only be called once the game is interactive (main menu or playable state). See Signal when the game is interactive.

  • MUST use onAudioSuspend / onAudioResume for mute. Host mute state is bridged automatically.
  • MUST NOT ship an in‑game mute button. (Stricter than the global baseline.)
  • MUST NOT use the Page Visibility API or any web API to detect pause. Use only the FRVR lifecycle hooks.
  • On onSuspend, everything stops: game loop, rendering, audio, animations, timers, network, input.
  • The game MUST NOT become interactive until onResume fires. No early input, audio, or rendering.
  • MUST use FRVR.cloudStorage and FRVR.localStorage for all state. MUST NOT touch window.localStorage, cookies, IndexedDB, or engine‑level storage (Unity PlayerPrefs, Cocos sys.localStorage, Construct’s local storage). Direct use is a rejection. (Stricter than the global baseline.)
  • Cloud save total < 3 MiB.
  • Final exit save is best‑effort, capped at 64 KiB. Don’t rely on it.
  • Saves from previous versions MUST continue to load.
  • MUST use FRVR.locale.get().
  • MUST NOT use navigator.language / navigator.languages.
  • MUST support English. Other languages optional.

YouTube is the most restrictive monetization channel:

  • MUST NOT show off‑platform ads. Only ads routed through FRVR.ads (which the channel bundle wires to YouTube’s own ad surface, currently in public preview) are permitted.
  • MUST NOT offer off‑platform IAP. There is no on‑platform IAP today; IAP is effectively disabled.
  • MUST declare any monetization in the YouTube Developer Portal.
  • The channel bundle reports FRVR.iap.isReady() === false and FRVR.ads.isSupported(type) === false for unsupported types. Gate UI accordingly.
  • MUST NOT make external network calls. Everything ships in the YouTube‑hosted bundle. Only network traffic from the FRVR channel bundle is permitted.
  • MUST NOT attempt to work around the restriction (Google‑domain proxies, encoding payloads in image requests, etc.).
  • MUST comply with the Google Privacy Policy, in addition to the FRVR privacy policy.
  • MUST NOT access the clipboard except in response to an explicit user paste.

YouTube enforces the global budgets plus:

  • Initial bundle (page load → FRVR.bootstrapper.complete()): MUST < 30 MiB; SHOULD < 15 MiB.
  • Total bundle: MUST < 250 MiB.
  • Single file: MUST < 30 MiB; SHOULD < 512 KiB.
  • Saved data: MUST < 3 MiB; SHOULD < 500 KiB.
  • Load time: SHOULD be < 5 seconds to interactive.
  • MUST work on the YouTube app on Android and iOS, plus Edge, Chrome, Firefox, Safari.
  • MUST NOT exceed 512 MB JS heap peak.
  • MUST use only relative paths.
  • MUST restrict file names to alphanumerics plus _, -, ..
  • MUST comply with YouTube Community Guidelines.
  • MUST NOT be “made for kids”. Content must suit the general 13+ audience.
  • MUST NOT use deceptive titles, thumbnails, or descriptions.
  • MUST comply with YouTube Developer ToS.
  • MUST secure all third‑party IP, trademark, music, and personality rights for distribution on YouTube.
  • Staging links are confidential and MUST NOT be shared outside testing.