Skip to main content

Expo EAS Build

Expo EAS (Expo Application Services) Build is a cloud-based build service for React Native applications. Alternative to AppChef and CLI builds with Expo ecosystem integration.

Expo Documentation: docs.expo.dev/build


Setup

1. Install Expo CLI and EAS CLI:

npm install -g expo-cli eas-cli

2. Create Expo account:

eas login

Or sign up at expo.dev/signup

3. Initialize EAS configuration:

cd /path/to/react-native-export
eas build:configure

Creates eas.json in project root.

4. Configure app.json:

{
"expo": {
"name": "My App",
"slug": "my-app",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.company.myapp",
"buildNumber": "1"
},
"android": {
"package": "com.company.myapp",
"versionCode": 1
}
}
}

Pricing

Free Plan:

  • 30 builds per month
  • Standard build queue
  • Both Android and iOS

Production Plan ($29/month):

  • Unlimited builds
  • Priority queue
  • Concurrent builds

Check current pricing: expo.dev/pricing


Android Builds

Build command:

eas build --platform android --profile production

Keystore Setup

Generate new keystore (automatic):

Run build command, select "Generate new Android Keystore" when prompted. Expo generates and stores securely.

Upload existing keystore:

eas credentials

Select Android → Production → Upload Keystore

Provide:

  • Keystore file
  • Keystore password
  • Key alias
  • Key password

Build Output

APK (default for preview):

{
"build": {
"preview": {
"android": {
"buildType": "apk"
}
}
}
}

AAB (for Play Store):

{
"build": {
"production": {
"android": {
"buildType": "app-bundle"
}
}
}
}

Download: From expo.dev → Projects → Builds


iOS Builds

Build command:

eas build --platform ios --profile production

Certificate Setup

Option 1: Automated (recommended)

Run build command, select "Generate new Apple credentials". Expo automatically:

  • Generates distribution certificate
  • Creates provisioning profile
  • Stores securely

Option 2: Manual upload

eas credentials

Select iOS → Production → Upload Certificate

Provide:

  • P12 certificate file
  • P12 password
  • Provisioning profile file

Build Output

IPA file for App Store, TestFlight, or device testing.

Download: From Expo dashboard after build completion.


Build Profiles

Configure in eas.json:

Development:

{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
}
}
}

Preview (internal testing):

{
"build": {
"preview": {
"distribution": "internal"
}
}
}

Production (app stores):

{
"build": {
"production": {}
}
}

CI/CD Integration

Expo works with all major CI/CD platforms.

GitHub Actions example:

- name: Setup Expo
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}

- name: Build Android
run: eas build --platform android --profile production --non-interactive

Generate Expo token:

eas build:configure

Store token in CI secrets.


Comparison with Other Methods

FeatureExpo EASAppChefCLI
SetupExpo CLIWeb browserNode + SDKs
Cost30 free/monthFreeFree
Build locationExpo cloudWaveMaker cloudLocal
iOS buildsAny OSAny OSmacOS only
Certificate managementManual or automatedManualManual
Build limits30/month (free)25 apps, 10 builds/appUnlimited
IntegrationExpo ecosystemWaveMaker StudioCI/CD

When to Use Expo

Use Expo when:

  • Using Expo SDK and libraries
  • Want automated certificate management
  • Need custom native code with expo-dev-client
  • CI/CD pipeline with Expo CLI

Use AppChef or CLI instead when:

  • WaveMaker-centric workflow
  • No Expo ecosystem integration
  • Want GUI-based builds (AppChef)
  • Need unlimited builds without cost (CLI)

Troubleshooting

Build Failed

View logs:

eas build:list
eas build:view [BUILD_ID]

Download logs from Expo dashboard.

Keystore/Certificate Issues

Android:

Verify keystore credentials correct.

iOS:

  • Check P12 password
  • Verify provisioning profile includes certificate
  • Ensure bundle identifier matches

Build Limit Reached

Free plan: 30 builds/month limit

Solutions:

  • Wait for monthly reset
  • Upgrade to Production plan ($29/month)
  • Use CLI builds locally (unlimited)

Summary

  • Setup: Expo CLI, EAS CLI, Expo account
  • Build command: eas build --platform android/ios --profile production
  • Certificates: Automated generation or manual upload
  • Pricing: 30 builds/month (free), unlimited ($29/month)
  • Download: From expo.dev dashboard
  • Best for: Expo ecosystem integration, automated certificate management

Build Documentation:

Publishing Documentation:

External Resources: