Publish your app with fewer surprises.
Follow the Apple App Store, Google Play, and Expo EAS steps below. Use the screenshot checklist before uploading your store graphics so platform-specific controls, personal information, and misleading images do not cause avoidable delays.
Guidance reviewed August 5, 2026 · Store screens and rules can changeApple App Store
- Confirm the Apple account and agreements.
Use an active Apple Developer Program membership. The Account Holder must accept current agreements before a new app record can be created.
- Create the app record first.
In App Store Connect, open Apps, choose the plus button, select New App, then enter the platform, app name, primary language, bundle ID, and SKU.
- Match the bundle identifier exactly.
The bundle ID in the uploaded build must match the App Store Connect record. Treat it as a permanent app identity.
- Complete the store information.
Add the description, keywords, category, support URL, privacy URL, age rating, app privacy answers, pricing, availability, screenshots, and review contact information.
- Build and upload the iOS binary.
Upload with Xcode, Transporter, or Expo EAS Submit. Apple processes the build before it appears in App Store Connect.
- Test with TestFlight.
Install the processed build, test sign-in and purchases, and give external testers clear instructions when needed.
- Select the build and provide review access.
Attach the build to the app version. Provide a working demo account and notes for features that are not obvious to the reviewer.
- Submit for review and choose release timing.
Resolve every required field and warning, then submit. Choose manual, automatic, or scheduled release based on your launch plan.
Google Play
- Create the app in Play Console.
Select Create app, choose the default language, name, app or game, free or paid status, support email, and required declarations.
- Choose the package name carefully.
The package name becomes fixed after an artifact is uploaded and cannot later be reused for a different app.
- Complete App content.
Finish privacy policy, ads declaration, app access, target audience, content rating, data safety, and any category-specific declarations shown on the dashboard.
- Build the store listing.
Add the title, short and full descriptions, app icon, feature graphic, screenshots, contact details, and localized assets where appropriate.
- Upload a signed Android App Bundle.
New Google Play apps publish with an AAB. Use Play App Signing and confirm that the version code is higher than the previous release.
- Run an internal or closed test.
Check installation, login, permissions, billing, links, and common device sizes. Some newer personal developer accounts must satisfy specific testing requirements before production access.
- Create and review the release.
Add release notes, resolve errors, review the countries and rollout settings, then send the release for review.
- Monitor after launch.
Watch crashes, Android vitals, reviews, policy messages, and staged-rollout performance before expanding to everyone.
Expo EAS command guide
EAS Build creates the signed store binary. EAS Submit uploads the binary into Apple or Google’s distribution pipeline. It does not complete your descriptions, screenshots, privacy answers, reviewer notes, or final store release for you.
First-time setup
Apple production build and upload
Google Play production build and upload
eas build --platform ios --profile production --auto-submit or eas build --platform android --profile production --auto-submit.Before every new build: confirm the bundle/package identifier, marketing version, iOS build number, Android version code, production environment variables, API URLs, icons, splash screen, privacy descriptions, and signing credentials.
Screenshot pass-or-fix guide
| Check | Likely pass | Fix before upload |
|---|---|---|
| Correct platform | iOS screens show the real iPhone/iPad build; Android screens show the real Android build. | Android navigation controls or Google Play imagery shown in an Apple listing, or an iPhone-only interface presented as Android. |
| Accurate experience | The pictured feature exists and works in the submitted build. | Mocked features, outdated screens, unavailable buttons, or claims that the app cannot perform. |
| Dimensions | Exact accepted dimensions or ratios with no distortion. | Stretched UI, blurry enlargement, sideways image, or unreadable text. |
| Status bar | Clean, consistent indicators with no personal notifications. | Carrier names, message previews, low-battery warnings, private email, GPS alerts, or inconsistent times. |
| Privacy | Fictional names, locations, messages, accounts, and photos. | Real customer information, personal addresses, private conversations, API keys, or test credentials. |
| Branding | Your own branding and properly licensed material. | Unlicensed logos, trademarked characters, other app-store badges, rankings, prices, or misleading awards. |
| Device support | Phone screenshots show a phone layout; required tablet screenshots show the actual tablet layout. | A phone screenshot merely enlarged inside a tablet canvas when the app’s tablet interface is materially different. |