What this app does
The frontend is a static Next.js export. The OTA API lives in Cloudflare Pages Functions at /api/manifest and /api/assets.
Cloudflare Pages + R2
This repo is an isolated Cloudflare-native OTA experiment. It keeps the current updater untouched while giving us a safe place to serve Expo manifests and assets from R2.
The frontend is a static Next.js export. The OTA API lives in Cloudflare Pages Functions at /api/manifest and /api/assets.
Update bundles live in R2 instead of local disk. The function looks up the latest numeric timestamp folder for a runtime version and optional package name, then builds asset URLs from the active request domain.
updates/{packageName}/{runtimeVersion}/{timestamp}/
metadata.json
expoConfig.json
rollback
assets/...
bundles/...Configure an R2 bucket binding named OTA_BUCKET and a secret named PRIVATE_KEY_PEM if you want manifest signing.
Install dependencies, update wrangler.jsonc, upload a sample update tree to R2, and deploy to Pages.