Skip to content

Chapter 8: Mobile App Deployment – From Build to Store πŸ“±πŸš€ ​

"The most important thing is the user experience and how your app can solve a problem." - WWDC

Building your mobile app is a big step, but getting it into the hands of users through the App Store (iOS) and Google Play Store (Android) is where your product truly comes to life. This chapter walks you through how to deploy an Expo-based mobile app, starting from setting up your Expo project to publishing on both platforms.

1️⃣ Setting Up Your Expo Project for Deployment ​

Expo makes mobile app development and deployment significantly easier. Before you think about publishing, properly configuring your Expo project is essential.

βœ… Step 1: Sign Up and Set Up Expo ​

Create an Expo Account:

  • πŸ‘‰ Visit https://expo.dev and sign up for a free account.
  • This account is essential for managing builds, OTA (Over-the-Air) updates, and app publishing.

βœ… Step 2: Create a Project in Expo Dashboard ​

  • Go to https://expo.dev/accounts
  • Under your account, create a new project. This will generate a unique projectId.
  • Copy this projectId β€” You'll need to use this in your app configuration.

βœ… Step 3: Add projectId in Your App Code ​

You can just mention this to your AI Agent so that the Agent configures this on your behalf using the following prompt:

These are the expo details:
Slug: {Add yours}
ID: {Add yours}
Owner: {Add yours}

Expo init and build the expo app ({Android or iOS}) using the EAS workflow for {production or preview}

πŸ‘‰ Next steps:

  • You would need to log in to your Expo account using your username and password (the agent would ask you that).
  • In case you face errors, I would suggest deleting folders node_modules, Android or iOS, package-lock.json, and package.json and trying again npm install and expo building yourself

πŸ’‘ Important:

  • This projectId uniquely identifies your app for Expo's build and update services.
  • Preview builds are meant for internal testing and QA (Quality Assurance) before you launch your app to real users
  • Production builds are optimized, secure, and ready for publishing to the App Store or Google Play Store.

πŸ“š Refer to Official Expo Documentation ​

For the most up-to-date details, always refer to Expo's official documentation: πŸ‘‰ Expo Documentation πŸ‘‰ EAS Build Documentation πŸ‘‰ Expo Updates Guide

2️⃣ Generating Production Builds (Android & iOS) ​

πŸ“Œ Step 1: Set Up Developer Accounts ​

πŸ“Œ Step 2: Generate App Builds (Using Expo) ​

If you're using Expo, generate production-ready builds using:

bash
eas build -p android
eas build -p ios
  • Android β†’ .aab file (Android App Bundle)
  • iOS β†’ .ipa file
  • These are the files you will upload to the respective app stores.

3️⃣ Uploading Your App to the Stores ​

πŸ“± Google Play Store (Android) ​

➑️ Go to Google Play Console β†’ Click "Create App" ➑️ Fill out App Details (Name, Description, Category) ➑️ Upload the .aab file (mandatory for new apps) ➑️ Set up Store Listing (Screenshots, Privacy Policy, Keywords)

⚠️ New Google Play Policy (Effective 2024) ​

🚨 Mandatory 14-Day & 20-Tester Rule Before Public Launch: To move to production, Google now requires:

  • At least 20 testers in Open or Closed Testing tracks.
  • Minimum 14 days of testing before public release.
  • Note: Internal Testing does not count toward this requirement.

βœ… Testing Tracks Explained: ​

TypePurposeVisible Publicly?Tester LimitCounts for 14-Day Rule?
InternalQuick internal tests within the dev team❌ NoUp to 100❌ No
ClosedPrivate invite-only testing (QA teams, trusted users)❌ NoFlexible (email/groups)βœ… Yes
OpenPublic beta testing, anyone can joinβœ… Yes (as a test)Unlimitedβœ… Yes
ProductionFull public releaseβœ… YesUnlimitedβœ… After meeting the 14-day requirement
  1. Start with Internal Testing to fix initial bugs.
  2. Move to Closed/Open Testing (get at least 20 testers), run for 14 days.
  3. Once stable, promote to Production.

βœ… Finding Testers for Google Play (Closed/Open Testing): ​

πŸ’‘ Pro Tip: Always share clear instructions on how to join, what feedback is needed, and where to report issues (e.g., Google Form, Discord, email).

🍏 Apple App Store (iOS) ​

➑️ Upload the .ipa file using:

➑️ Create an App Store Listing in App Store Connect. ➑️ Submit for TestFlight Beta Testing (highly recommended before public release). ➑️ Set up App Store Metadata:

  • Screenshots
  • App Icon
  • Description
  • Pricing ➑️ Submit for Review – Typically takes 1–2 days (may take longer if issues arise). ➑️ Once approved, schedule or manually release your app!

πŸ’‘ Pro Tip: Apple is strict about Privacy Policies, UI guidelines, and in-app purchasesβ€”double-check these before submission.

4️⃣ Handling Common Review Rejections ​

πŸ’₯ Google Play Rejections: ​

  • ❌ Policy Violations – Review Google's Content Policies.
  • ❌ Crashes & ANRs (App Not Responding) – Test on multiple devices before submission.

πŸ’₯ Apple App Store Rejections: ​

  • ❌ Privacy Issues – Only request necessary permissions.
  • ❌ Inaccurate Metadata – Ensure descriptions & screenshots reflect real app behavior.
  • ❌ Performance Bugs – Apple tests on real devices, to avoid crashes!

5️⃣ Post-Launch: Monitoring & Updates ​

πŸš€ Once your app is live, focus on growth and stability:

🎯 Your App is Live β€” What's Next? ​

Congratulations! πŸŽ‰ Your app is now available for users worldwide. But the work doesn't stop here:

  • Gather real user feedback.
  • Monitor performance and stability.
  • Plan and release updates to improve user experience.

πŸ‘‰ Up next: How to iterate, scale, and grow your product to the next level! πŸš€

Comments

Share your thoughts and questions about this page. Sign in with GitHub to comment.

Open-source under the MIT License. Created by the community, for the community. A passion project of Angshuman Gupta.