Move your a0.dev app off a0’s hosting without losing the Expo app you built
Installs stay live only if someone hits Generate & Submit — that is the lock-in, not the prompt chat. End dependence on a0 web preview and Deployment while an owned Expo tree, org App Store Connect, and Convex/Supabase you administer take the release seat. Keep the mobile product the agent already proved; stop needing the a0 panel for every hotfix.
Getting a0.dev out of the runtime seat means owned Expo is how you build, store credentials sit with the org, and pausing preview — or stopping Deployment — leaves the public store/web origin healthy. Copying screens is homework. An exit is a day installs stay healthy after you stop opening a0 for every release.
Where exits go wrong
Taking a screenshot of the preview is the easy part
Screens move. Store consoles, OTA channels, backend ownership, and the habit of “open a0 and Deploy” do not move unless you plan them.
Nobody is admin after you leave the a0 project
If Bundle IDs, App Store Connect, and Convex billing still sit under one personal seat, you copied files. You did not leave.
Binaries still only generate through a0’s Deployment button
Stand EAS/CI from the owned tree before you drain a0.
OTA and backend keys only exist inside a0
Mint fresh values on org projects; rotate what touched the panel.
Support still needs a door you control
Status, a contact, and a way to pull a bad binary must live on something the team runs — not in one person’s a0 chat.
The exit we actually run
Own Expo, stores, and backends — then pause a0 Deployment for a day
Org store accounts, vaulted secrets, cold native build, then a day without Generate & Submit.
01
Move Apple/Play and backend admin under the org
Second named admin before you cut the habit.
02
Re-home Convex/Supabase and payment secrets out of a0
Fresh values. Shared vault. Rotate what touched the panel.
03
Prove a cold native build and submit without a0 admin
Second engineer clones, builds, and releases without a0 workspace rights.
04
Practice a day without a0 Deployment
Only then retire “open a0 and Deploy” as the recovery playbook.
How to
How to move your app off a0.dev without losing the Expo app
Cut dependence on a0 preview and Deployment. Keep the app. Prove a day without Generate & Submit.
Step 01
Inventory what only exists in a0
Deployment ACLs, OTA channels, panel secrets, preview share links.
Step 02
Stand org ownership of stores, DNS schemes, and vault
Second admin named. Personal seats off the critical path.
Step 03
Prove cold clone → native build → submit on the destination
No leftover a0 preview context.
Step 04
Replay the primary journey on a store or production web path
Sign-in, writes, payments, and undo.
Step 05
Pause a0 Deployment and watch a full day
Support knows the old recovery habit. Then retire it.
Read next
Proof, the essay, and sibling intents
These pages are already on the site. Use them to pressure-test the bet before a call.
“What impressed us most about CodeCross was their ability to deeply understand our vision and translate it into a complete digital solution. Unlike many agencies that just focus on technical delivery, CodeCross approached our project like true partners.”
Which ASC Generate & Submit seats, Expo builds, and Convex or Supabase projects still prove a0 owns production?
Customer binaries still only generate through a0’s Deployment button; OTA only pushes from there; Convex/Supabase keys only exist inside its project settings; TestFlight builds require opening Generate & Submit. Opening a0 for prompt tweaks is fine. Needing a0-hosted preview or its Deployment for production availability is the lock-in.
How do App Store Connect, OTA channels, and backend projects leave a0 before you pause Deployment for a day?
Stand up parallel paths first: confirm Apple Developer / Play consoles and Bundle IDs are org-owned; create production Convex or Supabase projects; copy secret names from a0, inject fresh values; dual-test native builds and deep links until journeys pass. Flip store current version and OTA channels only after IPA/APK and payments succeed off a0 preview.
What role should owned Expo source play once a0 Deployment is no longer production?
The owned Expo/RN tree becomes the only release artifact: CI or EAS builds from a clean checkout, injects destination secrets, and submits without a0 admin. The a0 project may still iterate prompts for spikes, but production never ships from “whatever is open in that chat.” Second-engineer proof: clone, install, native build, release without workspace rights on a0.
How do you retire a0 preview tunnels and QR shares without stranding TestFlight testers?
Publish TestFlight / Play internal tracks and production OTA from the owned path; migrate QR-based a0 app / Expo Go testers to those tracks; drain web-preview share links. Keep temporary redirects only where you control the URL scheme. Tell support the cutover window so “open a0 and Deploy” stops being the recovery playbook.
Keep the Expo app. Stop shipping only from a0 Deployment.
Bring how people install, who holds App Store Connect, and whether pausing a0 would block hotfixes. We put owned ship last — and we name the a0 path you can roll back to.