Flex App
FLEX APP
Pricing
Back to blogs
Expo EAS Build: Ultimate React Native Production Guide
May 19, 2025

Expo EAS Build: Ultimate React Native Production Guide

This guide will help developers master Expo’s EAS Build system, covering:

  • What EAS Build is and why it matters
  • How it differs from classic builds
  • Setting up and configuring EAS Build
  • Step-by-step deployment walkthrough
  • Common pitfalls and tips for smooth production release
  • Managing builds, credentials, and app stores with EAS

Table of Contents

  1. Introduction: Why Build & Deploy Matters
  2. What is Expo EAS Build?
  3. Classic Expo Build vs. EAS Build
  4. Setting Up Your Project for EAS Build
  5. Configuring eas.json for Production Builds
  6. Managing Credentials: Signing Your Apps
  7. Running Your First EAS Build
  8. Testing Your Production Build
  9. Submitting to App Stores via EAS Submit
  10. Common Pitfalls & How to Avoid Them
  11. Tips for a Smooth Production Release
  12. Advanced: Using Build Profiles and Environment Variables
  13. Conclusion

1. Introduction: Why Build & Deploy Matters

As a developer, building your app for production and publishing it to app stores is a critical milestone. Yet, many get stuck due to:

  • Complex native build processes
  • Manual management of certificates and provisioning profiles
  • Confusing configurations across platforms
  • Handling multiple build environments (dev, staging, production)

Expo’s EAS Build aims to simplify and streamline this process with cloud-powered builds tailored for production. In this guide, you’ll learn the right way to use EAS Build so you can focus on shipping your app confidently and efficiently.


2. What is Expo EAS Build?

EAS Build (Expo Application Services Build) is a hosted service by Expo that compiles your React Native project into native binaries (APKs, AABs for Android; IPAs for iOS) in the cloud.

Unlike the old expo build command:

  • It supports custom native code and packages
  • It’s faster and more reliable
  • It uses configurable build profiles
  • It manages signing credentials automatically or manually
  • Supports both managed and bare workflow apps

EAS Build replaces the classic Expo build with a modern, production-ready system that scales with your app’s complexity.


3. Classic Expo Build vs. EAS Build

FeatureClassic expo buildEAS Build
Custom native code
Build profiles
Cloud hosted builds
Credential managementSemi-automaticFully automated & manual options
Build speedSlowerFaster with caching & parallel
Managed & Bare workflowsManaged onlyManaged & Bare
Support for latest SDKsLimitedSupports latest React Native & Expo SDKs

If your app requires native code modifications or you want granular control, EAS Build is the way to go.


4. Setting Up Your Project for EAS Build

Step 1: Install EAS CLI

You need Expo’s new CLI tool for EAS services.

npm install -g eas-cli

or

yarn global add eas-cli

Step 2: Login to Your Expo Account

eas login

Use your Expo credentials or sign up.

Step 3: Initialize EAS in Your Project

From your project root:

eas build:configure

This will create an eas.json file with default build profiles for Android and iOS.

Step 4: Review app.json or app.config.js

Ensure your Expo config includes all required info:

  • name and slug
  • version and buildNumber/versionCode
  • Splash screens and icons
  • Permissions

Example app.json snippet:

{
  "expo": {
    "name": "MyApp",
    "slug": "my-app",
    "version": "1.0.0",
    "ios": {
      "buildNumber": "1"
    },
    "android": {
      "versionCode": 1
    },
    "assetBundlePatterns": ["**/*"],
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    }
  }
}

5. Configuring eas.json for Production Builds

The eas.json file controls how your app builds. It contains profiles you can customize per environment.

Basic eas.json:

{
  "build": {
    "production": {
      "ios": {
        "workflow": "managed",
        "buildType": "app-store"
      },
      "android": {
        "workflow": "managed",
        "buildType": "apk"
      }
    },
    "development": {
      "ios": {
        "workflow": "managed",
        "buildType": "development"
      },
      "android": {
        "workflow": "managed",
        "buildType": "apk"
      }
    }
  }
}
  • workflow: "managed" or "bare" depending on your app
  • buildType: "app-store", "development", "apk", or "aab" (Android App Bundle)

For production, you’ll often build with app-store (iOS) and aab (Android).


6. Managing Credentials: Signing Your Apps

iOS Credentials

To submit to the App Store, your iOS app must be signed with:

  • A valid Distribution Certificate
  • A Provisioning Profile linked to your app’s Bundle Identifier

EAS Build can manage these automatically:

eas credentials

You’ll be prompted to:

  • Let Expo create new credentials for you, or
  • Upload your own certificates and profiles

Android Credentials

For Android, you need:

  • A Keystore to sign your APK/AAB
  • Upload key for Play Store (if you use Play App Signing)

EAS can also generate or manage your keystores.


7. Running Your First EAS Build

Run production build for iOS:

eas build --platform ios --profile production

Run production build for Android:

eas build --platform android --profile production

You’ll see logs streaming as your build runs in the cloud. After the build finishes, you get a URL to download the binary.


8. Testing Your Production Build

  • Download the .apk or .aab for Android, install or upload to Play Store.
  • For iOS, use TestFlight to distribute and test your .ipa.
  • Verify app version, build number, assets, and functionality.

9. Submitting to App Stores via EAS Submit

You can also use EAS to submit your builds automatically:

eas submit --platform ios --path ./path-to-your-app.ipa
eas submit --platform android --path ./path-to-your-app.aab

Configure your credentials for submission or use environment variables.


10. Common Pitfalls & How to Avoid Them

  • Incorrect Bundle ID or Package Name: Make sure these match your app and provisioning profiles.
  • Missing App Icons or Splash Screens: Add all required assets for iOS and Android.
  • Version Code and Build Number Mismatches: Always increment build numbers before submitting.
  • Expired Credentials: Renew certificates and keystores when needed.
  • Not Using the Right Profile: Double-check eas.json profile used during build.

11. Tips for a Smooth Production Release

  • Use version control on your eas.json and config files.
  • Automate builds using CI/CD pipelines with EAS CLI.
  • Test your builds thoroughly on physical devices.
  • Use build hooks in eas.json for scripts like environment variable injection.
  • Monitor build status via Expo dashboard.

12. Advanced: Using Build Profiles and Environment Variables

You can define multiple profiles in eas.json for:

  • Development
  • Staging
  • Production

Example:

{
  "build": {
    "production": {...},
    "staging": {
      "ios": {
        "workflow": "managed",
        "buildType": "app-store"
      },
      "android": {
        "workflow": "managed",
        "buildType": "apk"
      },
      "env": {
        "API_URL": "https://staging.example.com"
      }
    }
  }
}

Pass environment variables to your app for different build environments.


13. Conclusion

Deploying your app for production with Expo EAS Build unlocks a streamlined, modern approach that simplifies native builds, signing, and publishing.

By mastering:

  • Configuring your project and eas.json
  • Managing signing credentials
  • Running and testing production builds
  • Automating submissions

You can deliver your React Native apps faster, with fewer headaches.

If you haven’t tried EAS Build yet, now’s the perfect time to start — it’s a game changer for Expo developers.