Skip to main content
Mobile Launcher
Deployment

Google Play Deployment

Deploy your Android app to the Google Play Store

Google Play Deployment

This guide walks you through building your Android app and shipping it to Google Play, from account setup to production release.

Quick Start

Already have a Google Play Developer Account and your app created in the Play Console? Run these commands:

# 1. Build production AAB yarn build:prod # 2. Submit to Google Play eas submit --platform android --profile production

EAS handles keystore management and upload automatically. Your build will appear in the Play Console within minutes.

New personal accounts must complete a closed test with 20 testers for 14 days before you can publish to production. See Part 2 for details.


Full Guide

Prerequisites

Before you start, make sure you have:

  • Google Play Developer Account ($25 one-time fee), play.google.com/console
  • Gmail account for Google Play Console access
  • App built and tested locally with yarn android
  • App assets ready:
    • Hi-res icon (512x512 PNG)
    • Feature graphic (1024x500 PNG)
    • At least 2 phone screenshots
    • Short description (80 chars) and full description (4,000 chars)
  • Privacy Policy URL (required for all apps)

Part 1: Google Play Console Account Setup

Step 1: Create Your Developer Account

  1. Visit play.google.com/console/signup
  2. Sign in with your Google account
  3. Accept the Developer Distribution Agreement
  4. Pay the $25 one-time registration fee
  5. Complete your account details:
    • Developer name (displayed on Play Store)
    • Contact email and phone
    • Website (optional)
  6. If prompted, verify your identity with a government-issued ID

Organization accounts require additional verification (D-U-N-S number, business documents). This can take 1–2 weeks. Personal accounts are approved almost instantly.

Step 2: Create Your App

  1. In the Play Console, click "Create app"
  2. Fill in the details:
FieldValue
App nameYour app name (max 50 characters)
Default languageYour primary language
App or gameApp (usually)
Free or paidSelect carefully, you cannot change from Paid to Free later
  1. Accept the declarations (Developer Program Policies, US Export Laws)
  2. Click "Create app"

Step 3: Complete Store Listing

Navigate to GrowStore presenceMain store listing and fill in:

FieldDetails
Short descriptionMax 80 characters, appears on the Play Store listing
Full descriptionMax 4,000 characters, full app description
App icon512x512 PNG, 32-bit, up to 1MB
Feature graphic1024x500 PNG or JPEG, displayed at the top of your listing
Phone screenshotsMin 2, max 8. JPEG or PNG, 16:9 or 9:16 aspect ratio
Tablet screenshotsRequired if your app supports tablets

Screenshot tip: Use AppMockUp or Screenshots Pro to create professional screenshots with device frames and marketing text.

Step 4: Complete Setup Checklist

Google requires you to complete several setup steps before publishing. Navigate to Dashboard and work through each item:

  1. App access, Does your app require login? If yes, provide test credentials.
  2. Ads, Does your app contain ads? Select Yes or No.
  3. Content rating, Complete the IARC questionnaire (takes 5 minutes).
  4. Target audience, Select age groups your app targets.
  5. News app, Is this a news app? Usually No.
  6. Data safety, Declare what data your app collects, shares, and secures.
  7. Government apps, Is this a government app? Usually No.

Data safety is the most involved step. You need to declare every type of data your app collects (account info, location, app activity, etc.) and whether it's shared with third parties. Be thorough, inaccurate declarations can lead to app removal.


Part 2: Testing Tracks (CRITICAL)

Google has a strict testing pipeline, especially for new personal developer accounts.

Testing Track Overview

TrackReview RequiredMax TestersUse Case
Internal testingNo100Quick builds, team testing
Closed testingYes (hours)Unlimited (by invite)Beta testing, the "20 tester" requirement
Open testingYes (days)Unlimited (public)Public beta
ProductionYes (days)EveryonePublic release

The "20 Testers" Rule

New personal developer accounts must run a closed test with at least 20 opted-in testers for a minimum of 14 consecutive days before they can apply for production access.

This is Google's way to ensure app quality. Here's how to handle it:

  1. Go to TestingClosed testingCreate track
  2. Name your track (e.g., "Alpha")
  3. Create a testers list, add at least 20 email addresses
  4. Upload your first build (see Part 3)
  5. Share the opt-in link with your testers
  6. Testers must:
    • Click the opt-in link
    • Install the app from the Play Store
    • Keep it installed for 14 days

Don't skip this step. Google will not let you publish to production without completing the closed testing requirement. Start recruiting testers early, friends, family, colleagues, or online communities.

Tips for Recruiting Testers

  • Ask friends and family
  • Post in relevant Reddit communities or Discord servers
  • Use beta testing platforms like BetaFamily
  • Join communities of other indie developers who need testers (tester swaps)

Part 3: Build & Submit

Step 1: Configure Your Project

Ensure your app.json has the correct Android configuration:

Json
{
  "expo": {
    "name": "Your App Name",
    "slug": "your-app-slug",
    "version": "1.0.0",
    "android": {
      "package": "com.yourcompany.yourapp",
      "versionCode": 1,
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      },
      "permissions": [
        "CAMERA",
        "READ_EXTERNAL_STORAGE"
      ]
    }
  }
}

Minimize permissions! Only include permissions your app actually uses. Requesting unnecessary permissions (like RECORD_AUDIO or ACCESS_FINE_LOCATION) triggers stricter review and can lead to rejection.

Step 2: Configure EAS Submit

Add your Google Play service account key to eas.json:

Json
{
  "submit": {
    "production": {
      "android": {
        "serviceAccountKeyPath": "./google-play-service-account.json",
        "track": "internal"
      }
    }
  }
}

How to get the service account key:

  1. Go to Google Cloud Console
  2. Create a project (or select existing)
  3. Enable the Google Play Android Developer API
  4. Create a Service Account with role Service Account User
  5. Generate a JSON key and save it as google-play-service-account.json in your project root
  6. In the Play ConsoleSetupAPI access → link the service account and grant Release manager permissions

Add to .gitignore! Never commit your service account key. Add google-play-service-account.json to .gitignore. For CI/CD, store it as an EAS Secret or GitHub Secret.

Step 3: Run the Production Build

yarn build:prod

This triggers an EAS cloud build that:

  1. Compiles your app for Android
  2. Signs it with your upload keystore (EAS manages this automatically)
  3. Generates an .aab (Android App Bundle) file
  4. Stores it on your Expo dashboard

The build typically takes 10–15 minutes. Monitor progress at expo.dev.

First build? EAS will generate and manage your keystore automatically. It stores it securely on Expo's servers. You can download it later with eas credentials if needed.

Step 4: Upload to Google Play

Choose one of these methods:

Option A: EAS Submit (Recommended)

eas submit --platform android --profile production

EAS will upload your .aab directly to the Play Console track specified in your eas.json.

Option B: Manual Upload

  1. Download the .aab from your Expo dashboard → your project → Builds
  2. Go to Play ConsoleTesting → select your track (e.g., Closed testing)
  3. Click "Create new release"
  4. Drag and drop (or browse) to upload your .aab file
  5. Add release notes (what's new in this version)
  6. Click "Review release""Start rollout"

Part 4: From Testing to Production

Once you've completed the 20-tester closed testing requirement (14 days), you can apply for production access.

Apply for Production Access

  1. Go to Dashboard in the Play Console
  2. You should see a notification: "You can now publish to production"
  3. Go to ProductionCreate new release
  4. Upload your latest .aab (or promote from a testing track)
  5. Add release notes
  6. Click "Review release""Start rollout to production"

Staged Rollouts

Google allows you to release to a percentage of users first:

Rollout %Use Case
5–10%Catch critical bugs early
25–50%Validate stability with more users
100%Full release

You can increase the rollout percentage at any time from the Production tab.

Review Timeline

TrackReview Duration
Internal testingNo review, available immediately
Closed testingHours to 1 day
Open testing1–3 days
Production (first release)Up to 7 days
Production (updates)1–3 days

Common Issues

IssueSolution
"You need 20 testers"Complete the closed testing requirement. 20 unique testers must opt in and stay active for 14 days.
Keystore errorsEAS manages your keystore automatically. Run eas credentials to verify or reset.
Version code conflictIncrement versionCode in app.json for every new upload. Each build must have a unique, higher version code.
"Deobfuscation file not found"Not a blocker, Google recommends uploading a mapping file for crash reports, but it's optional for Expo builds.
Permissions warningRemove unused permissions from app.json. Google flags apps that request sensitive permissions without justification.
Data safety rejectionReview your data safety declaration carefully. Make sure you declare all third-party SDKs (Firebase, Sentry, RevenueCat) and their data collection.
App rejected for policyRead the rejection email carefully. Common issues: missing privacy policy, misleading description, or restricted content.

Next Steps