Store submission
App Store Connect + Play Console.
Store submission. Apple takes ~24 hours; Google takes ~2 hours. Both have their own gauntlets. eas submit automates the upload; the human review is still on you.
One command per store
$eas build --platform all --profile production # builds both$eas submit --platform ios # upload to App Store Connect$eas submit --platform android # upload to Play Console
EAS handles the upload. The store dashboards (App Store Connect / Play Console) handle the metadata + review.
Apple App Store — the bureaucracy
You need:
- Apple Developer Program — $99/year. Required for any App Store distribution.
- App Store Connect account set up; a new app record matching your bundle ID.
- Screenshots — at least 6.5'' iPhone (1290 × 2796) and iPad if your app supports it.
- App description, keywords, support URL, privacy URL
- Privacy policy — Apple is strict. You need one even for free apps with no data collection.
- Data-collection disclosure — every SDK that collects anything (analytics, crash reporting, ads) must be declared.
Apple review — the gotchas
- Reject reasons — "app crashes on launch", "feature doesn't work as described", "mentions a competitor", "requires login but doesn't describe what users can do without one". Read the rejection email carefully; resubmit.
- Submit a test account if your app requires login. Otherwise reviewers see only the login screen and reject for "incomplete experience".
- Use Sign in with Apple if you offer other social login. This is enforced.
Google Play Store
Less strict, faster, but still has rules:
- Play Developer account — $25 one-time.
- Target SDK — Google forces you to target a recent SDK every year. Update the target in
app.jsonwhen EAS warns. - Data-safety disclosure — similar to Apple's privacy disclosure.
- Internal testing → Closed → Open → Production — the staged rollout track. Use Internal first.
Subscribe to store-rejection emails
Both stores email when they accept, reject, or have a question. Set up the right recipient (your support email, not your dev email); a missed rejection means days of delay.
Versioning across stores
Same code, same version, same build number — push the production build to BOTH stores at once. iOS and Android users see the same update on the same day.
Quick check
Try it
For the chapter assignment, you don't need to fully submit to a store — that takes days. Instead, write a submission readiness checklist for your app in notes.md:
- App icon (1024×1024) ready? ☐
- Screenshots (at least 6.5'' iPhone) ready? ☐
- App description (max 4000 chars) written? ☐
- Privacy policy URL live? ☐
- Test account credentials prepared for reviewers? ☐
- Bundle ID matches App Store Connect entry? ☐
- EAS production build succeeded? ☐
Tick each off. Anything red means you'd be rejected if you submitted today.
What's next
Final lesson — OTA updates. Push JS changes to all users without a store re-submission.
Spot a typo? Have an idea?
Help us improve this lesson. One click opens a GitHub issue with the lesson URL pre-filled — suggest clearer wording, report a bug, or request more depth. The course keeps improving thanks to learners like you.
Suggest an improvement on GitHub