R2 import is designed for games that are already hosted on a public Cloudflare R2 bucket. Instead of downloading files into IndexedDB, Zeno stores only the game’s URL and loads it in an iframe at play time. No Service Worker involvement, no file storage — the game runs directly from R2.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/xXmizzeryXx/zenodeployment/llms.txt
Use this file to discover all available pages before exploring further.
How to add an R2 game
Enter the base URL (first time only)
In the BASE URL field, enter your bucket’s public base URL, for example
https://pub-abc123.r2.dev. This value is saved to localStorage — you only need to enter it once.Add game links or folder names
In the GAME LINK OR FOLDER NAME field, paste either a full R2 link:Or just the folder name if the base URL is already saved:Click ADD (or press Enter) to add the entry to the queue. Repeat for each game you want to load.
Queueing multiple games
You can queue several games before clicking LOAD ALL. Each entry appears in the queue list below the input. Entries can be reordered by dragging and removed individually with the × button.How R2 games differ from uploaded games
| Feature | Uploaded / Git-imported | R2 imported |
|---|---|---|
| Files stored in IndexedDB | Yes | No |
| Service Worker registration | Yes | No |
| Re-registration on SW restart | Automatic | Not needed |
| Works offline | Yes (if previously loaded) | No |
| File size limit | IndexedDB quota | None (served from R2) |
src directly to the R2 URL — no PING_GAME check, no REGISTER_GAME message.
R2 bucket requirements
Your R2 bucket must be configured correctly before Zeno can load games from it.Public access
Public access
The bucket must have public access enabled in your Cloudflare R2 dashboard. Games served from a private bucket will fail to load with a 403 error.
CORS configuration
CORS configuration
The bucket must have a CORS policy that allows requests from the origin where Zeno is hosted. A permissive policy that allows all origins works for most setups:Without correct CORS headers, the browser will block the iframe’s sub-resource requests.
Persistence
R2 games are saved to IndexedDB as a URL reference only — no file buffers are stored. The entry contains the game’s name, icon, and the fullindex.html URL. Because no files are registered with the Service Worker, R2 games do not need re-registration after a SW restart and continue to work even if the SW is inactive.