Publishing Expo Apps to App Store & Play Store
Introduction
Publishing your Expo app to app stores involves building binaries, configuring credentials, and submitting for review. This guide covers both iOS and Android.
Prerequisites
- Expo CLI installed
- Apple Developer and Google Play accounts
Step 1: Configure App Metadata
Update app.json
:
{
"expo": {
"name": "MyApp",
"slug": "myapp",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": { "image": "./assets/splash.png" },
"ios": {
"bundleIdentifier": "com.example.myapp",
"buildNumber": "1"
},
"android": {
"package": "com.example.myapp",
"versionCode": 1
}
}
}
Step 2: Build Standalone Apps
iOS
expo build:ios
# Choose managed credentials or provide your own
Android
expo build:android
# Select apk or aab
Step 3: Download Binaries
After build completes, download the .ipa
(iOS) and .aab
or .apk
(Android) from Expo dashboard.
Step 4: Submit to App Store
Use Transporter app or Xcode Organizer:
xcrun altool --upload-app -f MyApp.ipa -t ios --apiKey YOUR_API_KEY --apiIssuer YOUR_ISSUER_ID
Step 5: Submit to Play Store
Use expo upload:android
or Play Console:
expo upload:android --key path/to/google-play-key.json
Or via CLI:
fastlane supply --aab MyApp.aab --json_key google-play-key.json --package_name com.example.myapp
Step 6: Automate CI/CD
Integrate GitHub Actions:
name: Publish Expo
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: expo/expo-github-action@v7
with:
expo-version: latest
expo-command: build:android --non-interactive
- uses: actions/upload-artifact@v3
with:
name: android-app
path: ./android/app/build/outputs/*.aab
Summary
Use expo build
to generate store binaries, configure credentials, and submit with Transporter or Play Console. Automate builds with CI/CD for streamlined releases.