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 β
- Apple Developer Program β $99/year - Join here
- Google Play Developer Account β $25 one-time fee - Join here
π Step 2: Generate App Builds (Using Expo) β
If you're using Expo, generate production-ready builds using:
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: β
Type | Purpose | Visible Publicly? | Tester Limit | Counts for 14-Day Rule? |
---|---|---|---|---|
Internal | Quick internal tests within the dev team | β No | Up to 100 | β No |
Closed | Private invite-only testing (QA teams, trusted users) | β No | Flexible (email/groups) | β Yes |
Open | Public beta testing, anyone can join | β Yes (as a test) | Unlimited | β Yes |
Production | Full public release | β Yes | Unlimited | β After meeting the 14-day requirement |
π‘ Recommended Google Play Flow: β
- Start with Internal Testing to fix initial bugs.
- Move to Closed/Open Testing (get at least 20 testers), run for 14 days.
- Once stable, promote to Production.
β Finding Testers for Google Play (Closed/Open Testing): β
- r/AndroidClosedTesting β A popular Reddit community for finding Android testers.
- Beta Testing Communities on Discord, and Slack.
- Social Media & Forums β Post in relevant groups (Twitter, LinkedIn, Indie Hackers, r/androiddev).
- Email Lists & Waitlists β Engage early subscribers and communities.
π‘ 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:
- EAS Submit (direct from Expo CLI), or
- Apple Transporter (Mac App Store), or
- Xcode (if you prefer manual upload).
β‘οΈ 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:
- β Crash Monitoring β Tools like Sentry or Firebase Crashlytics.
- β Analytics β Google Analytics, PostHog, Mixpanel.
- β OTA (Over-The-Air) Updates β Use Expo Updates or CodePush.
- β Push Notifications β OneSignal, Firebase Messaging.
π― 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.