Publish a Bolt.new Expo app to the App Store and Google Play
How to take a mobile app built with Bolt.new and Expo to TestFlight, the App Store and Google Play: accounts, EAS builds, store rules and common rejections.
Leer en español →
Bolt.new builds mobile apps with Expo, but it doesn't submit them to the stores for you. You download the code, use Expo's command-line tool (EAS) to create signed builds, and upload them: on iOS to TestFlight and then App Store review, on Android to a testing track in Google Play Console and then production. You need an Apple Developer Program membership, a Google Play developer account and a free Expo account.
This guide covers the accounts and settings to decide before the first build, the commands for each store, the rules that changed in 2026 and the reasons first submissions most often come back rejected.
What do I need before the first build?
- A project that was built as a mobile app from the start. Bolt's documentation is explicit: say "mobile app" in your very first prompt, because projects created for the web don't easily switch to mobile later.
- An Apple Developer Program membership (US$99 a year) to publish on iOS.
- A Google Play developer account (a one-time US$25 registration) to publish on Android.
- An Expo account, plus Node.js LTS and Git on your computer.
- A privacy policy URL and support contact. Both stores ask for them.
Which settings are permanent?
Decide these before the first build, because changing them later is painful or impossible.
| Setting | Where | Why it matters |
|---|---|---|
slug | app.json | Bolt's Expo guide warns you can't change it after the first build |
iOS bundle identifier (ios.bundleIdentifier) | app.json | Identifies the app in App Store Connect; fixed once the app exists there |
Android package name (android.package) | app.json | Identifies the app on Google Play; can't change after the first upload |
App name (name) | app.json | Can change, but the store listing name is set separately |
Use a reverse-domain style identifier you control, such as com.yourcompany.yourapp.
How do I build and submit with EAS?
1. Set up the project on your computer
Download the project from Bolt (or clone it from GitHub), then run:
npm install -g eas-cli
eas login
npm install
npx expo-doctor
eas init
eas build:configure
expo-doctor flags dependency and configuration problems before you spend a build on them. eas build:configure creates eas.json with build profiles.
2. iOS: TestFlight first, then the App Store
eas build --platform ios --auto-submit
EAS builds the app, handles signing certificates (it can create them for you), creates the app record in App Store Connect and sends the build to TestFlight. Install it from the TestFlight invitation and test on a real phone. When you're happy, complete the listing in App Store Connect (screenshots, description, App Privacy answers, age rating) and submit for review.
One 2026 change: since April 28, 2026, Apple only accepts uploads built with Xcode 26 or later and the iOS 26 SDK. Expo's announcement says SDK 54 and later use an Xcode 26 build image by default. If your Bolt project is on an older Expo SDK, the upload is rejected before review, so upgrade the SDK first.
3. Android: a testing track, then production
eas build --platform android
Download the .aab file from the link EAS prints. In Google Play Console, create the app, open Testing > Internal testing, create a release, upload the file and add testers by email.
Two Google rules catch new developers:
- Personal accounts created after November 13, 2023 must run a closed test with at least 12 testers for 14 consecutive days before they can apply for production access. Organization accounts are exempt. Recruit testers early.
- Target API level. From August 31, 2026, new apps and updates must target Android 16 (API level 36). Recent Expo SDKs set this for you; an old one may not.
eas submit --platform android can upload builds for you once you've set up a Google service account key. For the first release, uploading by hand in Play Console is simpler.
Why do first submissions get rejected?
These are the review problems that show up again and again for apps generated by AI tools:
- No way to sign in for the reviewer. If the app requires an account, give Apple and Google a working demo login in the review notes.
- No in-app account deletion. Apple's App Review Guidelines require apps that let people create an account to also let them delete it from inside the app.
- Digital purchases outside the store's billing. Selling digital content or subscriptions inside an iOS app generally has to use in-app purchase. Bolt's documentation points to RevenueCat for this. Physical goods and real-world services can use a payment provider like Stripe.
- Placeholder content and dead buttons. Lorem ipsum, demo screens and "coming soon" tabs read as an unfinished app.
- A thin wrapper around a website. Apple's minimum functionality rule rejects apps that offer little beyond what the mobile site already does.
- Crashes on launch, often from a missing environment variable. In Expo, values the app reads at runtime must start with
EXPO_PUBLIC_, and like any front-end value they're visible to anyone who unpacks the app. Secrets stay on the server. More in our guide to environment variables in Bolt.new.
How do I ship updates later?
Make the change in Bolt, download or pull the new code, then rebuild and resubmit:
eas build --platform ios --auto-submit
eas build --platform android
Every store upload needs a higher build number. Setting "autoIncrement": true in the production profile of eas.json lets EAS handle that. Expo also offers over-the-air updates (EAS Update) for JavaScript-only changes, within each store's rules; anything that adds native code still needs a new build.
What if Expo Go won't open the project from Bolt?
When you preview on a phone, Expo Go may say you're signed in on the phone but not in Expo CLI, and logging in from Bolt's terminal can hang, because the terminal runs in the browser, not on your computer. Bolt's documented fix is to create a personal access token at expo.dev, save it as a secret named EXPO_TOKEN in the project, and run the login command again.
Quick answers
Can Bolt publish to the App Store with one click? No. Bolt's one-click publishing is for the web. Store builds go through Expo's EAS tools and your own developer accounts.
Do I need a Mac? Not for EAS cloud builds. You do need an Apple developer account and access to App Store Connect in a browser.
How long does review take? It varies. Plan for at least a few days for a first iOS submission, plus the 14-day closed test on a new personal Google account.
Can I test without paying for developer accounts? Yes, with Expo Go on your own phone. Paid accounts are only needed to distribute through the stores.
Want help getting it through review?
Our App Store publishing service covers builds, store listings and responses to rejections, and mobile app development picks up where Bolt leaves off. If the app itself needs fixing first, see Bolt app rescue or tell us where you're stuck. Before you submit, our beta testing guide helps you get useful feedback from those first testers.


