Release Android and iOS Apps with EAS

This guide shows how to use Expo Application Services (EAS) to build and release Android and iOS Apps.

Get Started

Login with eas to be able to run builds and submit.

npx eas login

Remote EAS Builds

You can trigger a build in the EAS cloud from the cli. It will display a link to the remote build.

# trigger eas build with remote credentials
eas build --platform all --profile preview

To run a EAS build locally, use the --local flag. The profile is defined in the eas.json file that specifies how releases in the Play Store are configured (Internal, Alpha, Beta, Production).

By default, EAS will use credentials configured remotely in EAS to communicate with Google Play and App Store Connect. After the first time credential setup, you can run builds and submit to the Play Stores locally. If you want to authenticate against the Play Stores using local credentials, you need to configure “credentialsSource”: “local” for each platform in the build section of eas.json.

EAS Submit

You can submit a build to the Play stores like this. The CLI asks which remote build to submit. This requires properly configured credentials on the EAS side and Play store side (see below). For submitting a local build artifact, see Create a production build locally - Expo Documentation.

eas submit --platform android
eas submit --platform ios 

First Time Configuration

Configure Credentials

Understand Play Store credentials by reading Security - Expo Documentation.

  • Setup Google Service Account.
  • Enable Google Play API in Google Cloud.
  • Create The Apple Store Connect API Key once.

Setup Credentials for EAS and Play Stores

EAS handles configuring and registering the required credentials for Google Play and Apple Developer.

npx credentials

Follow the CLI to configure the credentials for each profile (development, preview, production)

  • Setup Google Service Account, Enable Google Play API
  • For Android, it generates an keystore file used to sign the Android APK after build which is required to upload the APK to Google Play. Google Play then resigns the APK with their own keystore.
  • For iOS, each developer internal releases require a adhoc provisioning profile with registered devices. See below how to register them.

Inspect the credentials that EAS created on the Play Stores.

Download the credentials locally. Also see Using local credentials - Expo Documentation.

  • The credentials.json contains paths and secrets for the credentials.
  • The credentials folder contains the downloaded credentials
  • The Apple Store Connect API Key AppleAuthKey_69XC6MNS5S.p8. See https://github.com/expo/fyi/blob/main/creating-asc-api-key.md
  • The Apple Distribution Certificate distcertpl2
  • The Apple Provisioning Profile profile.mobileprovision

Understand credentials required by reading Internal distribution - Expo Documentation.

Register iOS Devices for Distribution Profile

When triggering an submission for internal usage in iOS, you need to register devices to the IOS Adhoc-provisioning profile.

npx eas device:create
npx eas device:list

Note: Apparently, a interactive build is required to sync the profile after registering a new devices.

Inspect created devices and rename them here Certificates, Identifiers & Profiles - Apple Developer