a0.dev to production: keep the prompt-built app, stop treating a0 web preview as the finish line
Web preview on react-native-web is a lab until native IPA/APK paths, App Store Connect Deployment under org accounts, and OTA within a pinned runtime all answer without the a0 chat. Keep the screens the agent already proved. Stop treating a green preview panel as the release bar.
To-production here means Bundle IDs, OTA runtime version, and Convex/Supabase secrets pin to accounts you control, and the primary journey completes on store or owned web with secrets injected outside the a0 preview shell. Web preview stays a studio option. A short note that people can trust the ship path is.
What living on a0 web preview still hides
Prompt-to-app is great at a screen you can show
That is the right first job. The second job is what users feel when payments fail on device or OTA drifts from the shipped runtime — whether you wrote it down or not.
Web preview proves render — not camera, push, or payments
Those need mobile testing or native IPA/APK builds.
The a0 panel is a leaky password drawer
Keys that only exist in project settings are not a safe home. Rotate anything that lived there.
“Generate & Submit worked” is not a release record by itself
Production answers: which binary is live, which runtime OTA targets, what checks passed, and how to undo.
a0 Deployment alone is not a full ship process
Owned EAS/CI beats panel submit when rollback and second-engineer deploys matter.
The handoff we actually run
Score the prompt-built app as something people can rely on
Keep the screens. Stop relying on an untested web preview to run the app.
01
Map Bundle ID, Team ID, runtime version, and backend projects
Document which model production uses — a0 Deployment vs owned EAS.
02
Move secrets onto production Convex/Supabase
Fresh values. Named in a vault. Fail closed when missing.
03
Stand a native build path that works with a0 closed
“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.”
Why is a green a0 web preview still not a finish for store-ready Expo ownership?
Web preview proves the prompt-to-app renders on react-native-web. It does not prove camera, biometrics, push, or payments work; those need mobile testing or native IPA/APK builds. It also does not prove you own App Store Connect Deployment, can rotate Convex/Supabase secrets without every collaborator opening a0, or can ship OTA without the chat panel.
Which Expo runtime version, ASC Bundle IDs, and Convex/Supabase prod projects must hold before store cutover?
Runtime version in Build Settings must match the binary you will ship; OTA only works within that runtime. Apple Developer / App Store Connect must sit under org accounts with Bundle ID and Team ID aligned. Convex or Supabase credentials must map to production projects — not preview defaults. Deep links and payment setup must list only production schemes and product IDs you own.
When should a0 Deployment stay vs owned EAS/CI for real traffic?
Use a0’s Deployment dashboard while iteration risk is acceptable — and budget platform lock-in explicitly. Prefer an owned Expo/EAS or CI path from source you control when rollback, second-engineer deploys, and vendor reviews matter. Document which model production uses so on-call does not discover “only Deploy in a0 works” during a launch spike.
How do you prove IPA/APK and OTA ship from owned Expo without rebuilding every prompt-shaped screen?
Run signup → session → write on a native build or production web path with production Convex/Supabase secrets. Confirm OTA stays within the shipped runtime version, payments fail closed when env is wrong, and closing the a0 chat does not stop the live binary. If those hold, the prompt-shaped UX stays, and the app no longer depends on web preview.
Keep the prompt-built app. Stop treating a0 web preview as the finish line.
Bring native build status, who holds App Store Connect, and whether OTA matches the shipped runtime. We put owned ship last — and we name the preview path you can roll back to.