๐๏ธ EAS Build Setup โ
Expo Application Services (EAS) provides cloud-based builds for your mobile app. This means you can build Android and iOS binaries without installing Android Studio or Xcode locally. EAS also manages code signing (certificates and provisioning profiles).
1๏ธโฃ Step 1: Install EAS CLI โ
If you haven't already:
npm install -g eas-cli2๏ธโฃ Step 2: Log In to Expo โ
eas loginEnter your Expo account credentials.
3๏ธโฃ Step 3: Link the Project โ
Navigate to the mobile app directory and initialize the EAS project:
cd packages/mobile
eas initThis creates a project on Expo's servers and adds a projectId to your app.json:
{
"expo": {
"extra": {
"eas": {
"projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}4๏ธโฃ Step 4: Create eas.json โ
Create the EAS build configuration file at packages/mobile/eas.json:
{
"cli": {
"version": ">= 15.0.0",
"appVersionSource": "remote"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"simulator": true
}
},
"preview": {
"distribution": "internal",
"ios": {
"simulator": false
}
},
"production": {
"autoIncrement": true,
"ios": {
"image": "latest"
},
"android": {
"image": "latest",
"buildType": "app-bundle"
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "your-apple-id@email.com",
"ascAppId": "your-app-store-connect-app-id",
"appleTeamId": "YOUR_TEAM_ID"
},
"android": {
"serviceAccountKeyPath": "./google-play-service-account.json",
"track": "internal"
}
}
}
}๐ Build Profiles Explained โ
| Profile | Purpose | Output |
|---|---|---|
๐งช development | Testing with full native modules | Dev client for simulators/devices |
๐ preview | Share test builds with your team | Installable APK/IPA |
๐ production | App Store / Play Store submission | Optimized, signed binary |
5๏ธโฃ Step 5: Configure iOS Credentials โ
EAS can manage your Apple certificates automatically:
eas credentials --platform iosSelect "Let EAS manage my credentials" (recommended). EAS will:
- ๐ Create a distribution certificate
- ๐ Create a provisioning profile
- ๐ Store them securely on Expo's servers
You'll be prompted to sign in with your Apple ID. Use the account enrolled in the Apple Developer Program.
๐ก
If you prefer to manage credentials yourself, select "I want to provide my own credentials" and upload your .p12 certificate and .mobileprovision file.
6๏ธโฃ Step 6: Configure Android Credentials โ
EAS can also manage Android signing keys:
eas credentials --platform androidSelect "Let EAS manage my credentials". EAS will generate:
- ๐ An upload keystore (for signing the APK/AAB)
- ๐ท๏ธ A key alias and passwords
๐จ Keep Your Keystore Safe
The Android upload keystore is permanent. If you lose it, you can never update your app on Google Play. EAS stores it securely, but you should also download a backup:
eas credentials --platform android
# Select "Download credentials"Save the downloaded .jks file and passwords in a secure location (password manager, encrypted drive).
7๏ธโฃ Step 7: Set Up Google Play Service Account โ
To enable automatic submission to Google Play, create a service account:
๐ Open Google Cloud Console: console.cloud.google.com
๐ Create or select a project associated with your Play Console
๐ Enable the Google Play Android Developer API:
- Go to APIs & Services โ Library
- Search for "Google Play Android Developer API"
- Click Enable
๐ค Create a service account:
- Go to APIs & Services โ Credentials
- Click "Create Credentials" โ "Service Account"
- Name:
eas-build-submit - Role: none needed at this step
- Click "Done"
๐ Generate a JSON key:
- Click on the service account you just created
- Go to the "Keys" tab
- Click "Add Key" โ "Create new key" โ "JSON"
- Download the JSON file
๐ Grant Play Console access:
- Go to play.google.com/console
- Settings โ Developer account โ API access
- Click "Link" next to the Google Cloud project
- Find the service account and click "Grant access"
- Grant these permissions:
- โ Release to production, exclude devices, and use Play App Signing
- โ Release apps to testing tracks
- โ Manage testing tracks and edit tester lists
๐พ Save the JSON key:
- Place the downloaded JSON file at
packages/mobile/google-play-service-account.json - Add it to
.gitignoreโ never commit this file to version control
- Place the downloaded JSON file at
echo "google-play-service-account.json" >> packages/mobile/.gitignore8๏ธโฃ Step 8: Test a Build โ
Run a test build to verify everything is configured correctly:
# Android test build
eas build --profile preview --platform android
# iOS test build
eas build --profile preview --platform iosEAS will:
- โ๏ธ Upload your project to Expo's build servers
- ๐ฆ Install dependencies
- ๐จ Build the native app
- ๐ Sign it with your credentials
- ๐ Provide a download link
The first build takes 10-20 minutes. Subsequent builds are faster due to caching.
๐ฐ EAS Build Pricing โ
| Plan | Builds per Month | Build Priority |
|---|---|---|
| ๐ Free | 30 | Standard queue |
| ๐ Production ($99/month) | Unlimited | Priority queue |
The free tier is sufficient for most restaurants. You only need builds when publishing updates.
โก๏ธ Next Step โ
Continue to Building for Android or Building for iOS.