Create EAS Profiles

Start with four profiles: development, preview, e2e-test, and production.

{
  "cli": {
    "version": ">= 16.0.0",
    "appVersionSource": "local"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
      "channel": "preview",
      "android": { "buildType": "apk" }
    },
    "e2e-test": {
      "distribution": "internal",
      "channel": "preview"
    },
    "production": {
      "channel": "production",
      "autoIncrement": true,
      "android": { "buildType": "app-bundle" }
    }
  },
  "submit": {
    "internal": {
      "android": { "track": "internal" }
    },
    "production": {
      "android": { "track": "production" },
      "ios": {}
    }
  }
}

Profile Meanings

ProfilePurpose
developmentCustom dev client for native debugging
previewInstallable internal build for QA and stakeholders
e2e-testStable target for Maestro or other built-app tests
productionStore-bound binary with production channel

Add Project-Specific Values

Before the first release, decide:

  • Android package name.
  • iOS bundle identifier.
  • Version and build number strategy.
  • Runtime version policy.
  • Credential ownership.
  • Google Play and Apple account access.
  • Which profile maps to which update channel.

Warning: Keep service account key paths and credential files out of source control. If a profile references a local key file, ensure it is gitignored and documented in private setup notes.