a0.dev to production: keep the Expo app, stop treating a0 publish as the finish line
An a0.dev project that looks finished after the AI coding agent writes React Native/Expo screens—and after one-click App Store or Google Play upload—is still a lab until you own the Expo tree, Convex or Supabase project credentials, and store signing outside a0’s agent session. Production means install → auth → core journey on binaries you can rebuild without reopening a0, secrets injected by your backend and EAS (or equivalent), and store listings you can update when a0 is unavailable. You keep the mobile UX a0 already proved; you stop treating “agent green + submitted” as the release bar.
CodeCross LLC frames a0-to-production as graduating an a0.dev Expo/React Native MVP from agent preview and one-click store upload to owned builds and backends. Operators pin Convex or Supabase credentials, App Store Connect / Play Console access, and signing to org accounts, then prove device journeys without the a0 agent session. Done when a clean Expo checkout ships and store updates no longer require a0’s publish button.
What a0 web preview and one-click upload hide
A green react-native-web panel is not an Expo release you operate
a0.dev compresses prompt-to-device into chat, web preview, and Generate & Submit. Real testers expose camera and payments that never ran on react-native-web, Convex or Supabase keys that only exist in the agent session, and a store listing that only updates while someone still has a0 open.
react-native-web never proved native modules
Camera, biometrics, push, and IAP need an IPA/APK or the a0 app / Expo Go. Treating web preview as store-ready hides the first crash on a real device.
Backend keys live only inside the agent session
If Convex or Supabase credentials rotate only by reopening a0, closing the chat orphans TestFlight and Play clients already installed.
Generate & Submit is the only upload path
One-click App Store Connect Deployment proves a0 can ship a binary. It does not prove a second engineer can sign with org credentials when a0 is down.
OTA and runtime version stay implicit
Build Settings runtime must match the shipped binary. An OTA that assumes a0’s preview chrome will brick clients after the first store cutover.
The Expo-ownership pass we actually run
Pin the checkout, then cut over off Generate & Submit
Keep the screens the agent already sold. Move ship authority to an Expo tree and store consoles you name. a0 remains a prompt workshop until device journeys succeed with the chat closed.
01
Land the Expo/RN tree in an org remote
Pin Expo SDK and lockfiles. A teammate who never opened a0 can install and run a local or EAS profile. Document which Convex vs Supabase project the agent wired.
02
Remap Convex or Supabase onto org-administered projects
Copy secret names, mint fresh values, and stop treating agent history as the vault. Preview defaults stay off production tracks.
03
Point Bundle ID, Team ID, and listings at org store seats
App Store Connect Deployment and Play Console live under company accounts. Dual-allow a0-managed upload only during the cutover window.
04
Prove install → auth → write on a binary you signed
Deep links and payments fail closed when env is wrong. If those hold with the a0 agent closed, the mobile UX stays; one-click publish is optional.
How to
Move an a0.dev Expo app onto builds and backends you control
Owned Expo checkout, Convex or Supabase admin, and store credentials. Success is the primary device journey completing after you close the a0 agent.
Step 01
Treat a0 web preview and one-click upload as a lab
Keep the Expo screens if they still match what operators will buy. Do not treat a green react-native-web panel or Generate & Submit as durable ownership.
Step 02
Extract the Expo tree and pin Expo SDK / Build Settings
Record runtime version so OTA stays compatible. Document which screens only worked in the a0 app or Expo Go versus web preview.
Step 03
Map Convex or Supabase names onto destination secrets
Mint new values. Split sandbox from production. Never leave production keys only in agent message history.
Step 04
Stand org App Store Connect and Play seats
Align Bundle ID and Team ID. Prefer EAS (or equivalent) when rollback and second-engineer binaries matter. Write down which model production uses.
Step 05
Run install → auth → paid path on a device build you signed
Confirm IAP fails closed when store/env credentials are wrong. Closing the a0 agent must not stop updates or crash the live backend.
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.”
Does App Store or Play submission via a0 equal owning the Expo release pipeline?
No. One-click publish proves a0 can build, create or update a listing, and upload on your behalf. Ownership means you can reproduce the Expo project from source, sign with org credentials, and ship a hotfix without the a0 agent. Until then, store presence is convenience—not a durable release plane.
What must Convex or Supabase backends prove off an a0 agent session?
Auth, data writes, and any built-in AI inference routes must succeed with destination secrets on a backend project your org administers. If schemas, RLS, or API keys only exist inside a0’s session context, closing a0 orphans the mobile clients already in TestFlight or Play. Document which backend a0 wired and who can rotate it.
When should EAS or your own store credentials replace a0 one-click upload?
Prefer a0-managed upload while store-iteration risk is acceptable and you explicitly budget platform lock-in. Prefer EAS (or equivalent) plus org App Store Connect / Play Console when rollback, second-engineer binaries, and vendor reviews matter. Write down which model production uses before a launch spike discovers only a0’s button works.
How do you verify install → auth → paid path on device builds you signed?
Install a binary from your pipeline (not only a0 preview), complete signup/session, exercise write paths against the owned backend, and confirm IAP or subscription wiring fails closed when store/env credentials are wrong. Closing the a0 agent must not stop updates or crash the live backend. If those hold, a0-shaped UX stays; control has matured past one-click publish.
Make a0 Generate & Submit optional for store updates.
Bring the Expo checkout and the store-listing story. We will say whether this week is an owned binary — or another agent session pretending to be production.