6.9 KiB
6.9 KiB
App Store Submission Guide
Complete guide for publishing the Expo React Native app to Apple App Store and Google Play Store.
1. Prerequisites
Accounts & Fees
| Platform | Cost | Notes |
|---|---|---|
| Apple Developer Program | $99/year | Required for App Store distribution |
| Google Play Console | $25 one-time | Developer registration |
| Expo Account | Free (paid plans available) | Required for EAS Build/Submit |
- Apple Developer account review: 1-2 days
- Google Play developer account review: days to weeks
Tools
npm install -g eas-cli
eas login
eas whoami # verify login
2. Project Configuration
Initialize EAS
eas build:configure
Generates eas.json with three build profiles: development, preview, production.
Key app.json / app.config.ts Fields
{
"name": "Multica",
"slug": "multica",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.multica.app",
"buildNumber": "1" // increment on each submission
},
"android": {
"package": "com.multica.app",
"versionCode": 1 // increment on each submission
},
"icon": "./assets/icon.png", // 1024x1024 PNG
"splash": {
"image": "./assets/splash.png"
}
}
3. App Signing & Credentials
iOS
- EAS auto-manages credentials (recommended): Distribution Certificate + Provisioning Profile
- Or create manually in Apple Developer Portal
Android
- EAS auto-generates Keystore (recommended), stored securely on EAS servers
- Back up Keystore — losing it means you cannot update the published app
- Play Store requires AAB (Android App Bundle) format
4. Production Build
# iOS
eas build --platform ios --profile production
# Android
eas build --platform android --profile production
# Both
eas build --platform all --profile production
Builds run in Expo cloud — no local Xcode or Android Studio needed.
5. Store Listing Preparation
Required for Both Platforms
Privacy Policy
- Mandatory — must be a publicly accessible URL
- Must clearly state:
- What data the app collects and how
- Whether data is shared with third parties
- Data retention and deletion policies
- How users can request data deletion
- 2025 rule: If data is sent to third-party AI, must disclose explicitly and obtain user consent
- Tools: Termly, PrivacyPolicies.com, or custom page
App Screenshots
- iOS: Multiple sizes required (6.7", 6.5", 5.5" iPhone + iPad)
- Android: 2-8 screenshots
- Must accurately reflect current app interface
App Icon
- 1024x1024 high-resolution PNG
- No alpha/transparency for iOS
App Description
- Short description (≤80 chars for Google Play)
- Full description
Support URL
- A link where users can get help
Account Deletion
- If the app supports registration, users must be able to delete their account and data in-app
- Both Apple and Google require this
Apple App Store Connect — Additional Requirements
| Item | Details |
|---|---|
| Privacy Nutrition Labels | Fill out data collection practices per category in App Store Connect |
| App Review Information | Reviewer contact info, demo/test account credentials |
| Content Rating | Age classification |
| Export Compliance | Encryption usage declaration |
| Info.plist Permission Strings | Clear purpose description for each permission (camera, location, etc.) |
Google Play Console — Additional Requirements
| Item | Details |
|---|---|
| Data Safety Form | Detail data collection and sharing (required even if no data is collected) |
| Content Rating Questionnaire | IARC rating questionnaire |
| Target Audience | Declare if the app targets children |
| First Upload | Must be done manually via Play Console (Google Play API limitation) |
6. Submit to Stores
Apple App Store
eas submit --platform ios
This uploads the build to App Store Connect / TestFlight. Then you must:
- Log into App Store Connect
- Select the uploaded build
- Associate it with a version
- Fill in all metadata, screenshots, privacy labels
- Submit for App Review
Google Play Store
eas submit --platform android
First time: Must upload AAB manually in Play Console.
After initial upload:
- Navigate to Production → Create new release
- Upload AAB or use the EAS-submitted build
- Fill in description, screenshots, data safety form
- Submit for review
Auto-Submit (Optional)
eas build --platform all --profile production --auto-submit
7. App Review
| Apple | ||
|---|---|---|
| Review time | Typically 24-48 hours | Hours to 7 days |
| Common rejections | Incomplete features, misleading screenshots, missing privacy policy, unclear permission strings | Data safety form mismatch, policy violations |
| After rejection | Fix issues, resubmit | Fix issues, resubmit |
8. Post-Launch
OTA Updates (No Re-Review Needed)
eas update --branch production
- Only for JS/asset-level changes
- Native code changes still require a new build + review
CI/CD Automation
Create .eas/workflows/build-and-submit.yml to auto-build and submit on push to main.
Google Service Account Key (for Automated Android Submissions)
- Go to EAS dashboard → Credentials → Android
- Click Application identifier → Service Credentials
- Add Google Service Account Key
9. Checklist
- Register Apple Developer + Google Play Console accounts
- Configure
app.jsonandeas.json - Prepare app icon, splash screen, screenshots
- Write and host privacy policy URL
- Implement in-app account deletion (if registration exists)
- Add Info.plist permission descriptions (iOS)
- Run
eas build --platform all --profile production - Create app in App Store Connect, fill metadata + privacy labels
- Create app in Google Play Console, fill data safety form, manual first AAB upload
eas submitor submit manually for review- Wait for review approval → live
- Set up
eas updatefor OTA updates