Building and Publishing Your App
Once your app works in Expo Go, the final step is producing a real, installable build, and eventually shipping it to the App Store / Google Play.
EAS Build
EAS (Expo Application Services) builds native app binaries in the cloud, so you don't need a Mac to build an iOS app.
npm install -g eas-cli
eas login
eas build:configure
eas build --platform ios
eas build --platform android
eas build:configure sets up an eas.json with build profiles (e.g. development, preview, production), each can produce a different kind of build, a quick internal test build vs. a production, store-ready one.
App configuration
Your app's name, icon, splash screen, version, and bundle identifier all live in app.json (or app.config.js for dynamic config):
{
"expo": {
"name": "Kodstigen Notes",
"slug": "kodstigen-notes",
"version": "1.0.0",
"icon": "./assets/icon.png",
"ios": { "bundleIdentifier": "com.kodstigen.notes" },
"android": { "package": "com.kodstigen.notes" }
}
}
Submitting to the stores
eas submit --platform ios
eas submit --platform android
eas submit uploads your latest build directly to App Store Connect / the Google Play Console, from there it goes through each store's normal review process, exactly like an app built without Expo at all.
Over-the-air updates
For JavaScript-only changes (no new native code), EAS Update can push a new version directly to users who already installed your app, skipping the app store review entirely:
eas update --branch production --message "Fix login bug"
NOTE
OTA updates can only ship JavaScript/asset changes, if you add a new native dependency (like a new device API package), that requires a full new build submitted through the store again.