Skip to main content

Overview

Expo Application Services (EAS) handles building and submitting your app to the App Store and Google Play. For most apps, EAS is the only deployment workflow you need.

Prerequisites

  • Expo account (expo.dev)
  • EAS CLI installed: npm install -g eas-cli
  • Apple Developer account (for iOS)
  • Google Play Developer account (for Android)

Steps

1. Configure EAS

cd apps/mobile

# Login to Expo
eas login

# Configure EAS for your project
eas build:configure
This creates eas.json:
{
  "cli": {
    "version": ">= 5.0.0"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}

Development Builds (Required for Native SDKs)

Some integrations (RevenueCat, push notifications, background uploads) require a development build and will not work in Expo Go. Create a dev client:
eas build --platform ios --profile development
eas build --platform android --profile development

2. Build for iOS

# Development build (with dev client)
eas build --platform ios --profile development

# Production build (for App Store)
eas build --platform ios --profile production

3. Build for Android

# Development build
eas build --platform android --profile development

# Production build (for Play Store)
eas build --platform android --profile production

4. Submit to Stores

# Submit iOS build to App Store Connect
eas submit --platform ios

# Submit Android build to Google Play
eas submit --platform android

Environment Variables

For production builds, configure environment variables in eas.json:
{
  "build": {
    "production": {
      "env": {
        "EXPO_PUBLIC_API_URL": "https://your-api.railway.app"
      }
    }
  }
}

Troubleshooting

iOS: Run eas credentials to manage certificates Android: Ensure keystore is properly configured
EAS builds typically take 10-20 minutes. Check build logs for specific steps.
Check that all environment variables are set correctly for production.

Next Steps