Knowledge Base
Software
2025-11-25
10 min

Building and Releasing Expo Android Apps with EAS

Step-by-step setup and release workflow for Expo EAS Android builds - from initial configuration, signing credentials, and APK/AAB generation to submitting updates on Google Play and maintaining version consistency.

React Native
Expo
EAS
Android
Play Store
Deployment
Versioning

A complete guide to setting up and managing Expo EAS builds for Android using the CLI. It covers initial project configuration, credential management, build types (APK vs AAB), submission to Google Play, and versioning best practices for future releases.

📦1 - Install & Authenticate

  1. 1
    Install required CLIs
    bash
    npm install -g expo-cli eas-cli
  2. 2
    Login to Expo / EAS
    bash
    npx expo login
    # or
    eas login
  3. 3
    Verify session
    bash
    eas whoami

⚙️2 - Project Configuration

Run the EAS setup wizard once inside your Expo project root.

bash
eas build:configure
ℹ️
This creates eas.json for your build profiles (e.g. preview and production).
json
{
  "build": {
    "preview": {
      "distribution": "internal",
      "android": { "buildType": "apk" }
    },
    "production": {
      "distribution": "store",
      "android": { "buildType": "app-bundle" }
    }
  }
}

🧩3 - Check app.json / app.config.js

Ensure Android identifiers, versioning, and permissions are defined.

json
{
  "expo": {
    "name": "App Name",
    "slug": "app-slug",
    "version": "1.0.0",
    "android": {
      "package": "com.appname.identifier",
      "versionCode": 1,
      "permissions": [
        "ACCESS_FINE_LOCATION",
        "ACCESS_COARSE_LOCATION",
        "INTERNET"
      ],
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      }
    }
  }
}
⚠️
Increment android.versionCode for every Play Store submission.

🧱4 - Build Types & Commands

  1. 1
    Internal testing build (APK)
    bash
    eas build -p android --profile preview
  2. 2
    Play Store bundle (AAB)
    bash
    eas build -p android --profile production
  3. 3
    List past builds
    bash
    eas build:list

🔑5 - Signing Credentials

When prompted, let Expo manage credentials automatically.

bash
eas credentials -p android
ℹ️
EAS stores keystores securely. You can export or back them up later if you decide to manage signing manually.

📱6 - Testing the APK

  1. 1
    Manual install
    bash
    # copy to device and install
    adb install -r yourapp.apk
  2. 2
    Smoke-test checklist
    • App launches without errors
    • Registration & login flows work
    • Network and API calls succeed
    • Permissions prompt correctly
    • Splash / icons display correctly

🚀7 - Submit to Google Play

After a successful AAB build, you can either upload manually via Play Console or submit directly from CLI.

bash
eas submit -p android --latest
  • Opt into Play App Signing (recommended)
  • Complete store listing & content rating
  • Add release notes for each locale (e.g. en-ZA)
  • Roll out to Internal Testing track first

🔄8 - Update Cycle & Versioning

  1. 1
    Bump versions
    json
    "version": "1.0.1",
    "android": { "versionCode": 2 }
  2. 2
    Rebuild & submit
    bash
    eas build -p android --profile production
    eas submit -p android --latest
  3. 3
    Check builds
    bash
    eas build:list
ℹ️
For hotfixes to JS/UI only, consider using eas update to push over-the-air updates without rebuilding.

🧠9 - Common Gotchas

  • Android 9+ blocks HTTP (cleartext). Use HTTPS or add a network security config via expo-build-properties.
  • Android 13+ requires runtime permission for POST_NOTIFICATIONS.
  • Each Play Store update must increment versionCode.
  • Don't delete Expo-managed keystores unless you've exported a backup.

Filed under: React Native, Expo, EAS Builds, Android, Play Store, Deployment, Versioning

Last updated: 2025-11-25