Type object
File match eas.json
Schema URL https://catalog.lintel.tools/schemas/schemastore/eas-config/latest.json
Source https://raw.githubusercontent.com/expo/eas-cli/main/packages/eas-json/schema/eas.schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

The EAS config (eas.json) validation and documentation.

Properties

$schema string
cli object

Configure the basic behavior of your project with the EAS CLI

4 nested properties
version string

The compatible versions of EAS CLI with this config

Examples: ">=0.54.1"
requireCommit boolean

If all changes required to be committed before building or submitting

appVersionSource enum

Version policy defines whether version of your app should be based on your local project or values stored on EAS servers (remote).

This is the configuration required for eas build:version:set and works with the autoIncrement options per platform.

Values: "local" "remote"
promptToConfigurePushNotifications boolean

Specifies where EAS CLI should prompt to configure Push Notifications credentials. It defaults to true if expo-notifications is in your project dependencies, otherwise it defaults to false.

Default: true
build object

EAS Build configuration. Learn more

submit object

EAS Submit configuration. Learn more

Definitions

Cli object

Configure the basic behavior of your project with the EAS CLI

version string

The compatible versions of EAS CLI with this config

Examples: ">=0.54.1"
requireCommit boolean

If all changes required to be committed before building or submitting

appVersionSource enum

Version policy defines whether version of your app should be based on your local project or values stored on EAS servers (remote).

This is the configuration required for eas build:version:set and works with the autoIncrement options per platform.

Values: "local" "remote"
promptToConfigurePushNotifications boolean

Specifies where EAS CLI should prompt to configure Push Notifications credentials. It defaults to true if expo-notifications is in your project dependencies, otherwise it defaults to false.

Default: true
Build object

EAS Build configuration. Learn more

BuildCache object
disabled boolean

Disables caching. Defaults to false.

key string

Cache key. You can invalidate the cache by changing this value.

customPaths string[]

[DEPRECATED] Use paths instead. List of the paths that will be saved after a successful build and restored at the beginning of the next one. Both absolute and relative paths are supported, where relative paths are resolved from the directory with eas.json.

uniqueItems=true
paths string[]

List of the paths that will be saved after a successful build and restored at the beginning of the next one. Both absolute and relative paths are supported, where relative paths are resolved from the directory with eas.json.

uniqueItems=true
BuildProfile object

The build profile configuration.

withoutCredentials boolean

When set to true, EAS CLI won't require you to configure credentials when building the app. This comes in handy when working with custom builds.

Default: false
extends string

The name of the build profile that the current one should inherit values from. This value can't be specified per platform.

credentialsSource enum

The source of credentials used to sign build artifacts.

  • remote - if you want to use the credentials managed by EAS.
  • local - if you want to provide your own credentials.json file. learn more
Default: "remote"
Values: "remote" "local"
channel string

The channel name identifies which EAS Update channel a build belongs to. Learn more

distribution enum

The method of distributing your app.

  • internal - with this option you'll be able to share your build URLs with anyone, and they will be able to install the builds to their devices straight from the Expo website. When using internal, make sure the build produces an APK or IPA file. Otherwise, the shareable URL will be useless. Learn more
  • store - produces builds for store uploads, your build URLs won't be shareable.
Values: "internal" "store"
developmentClient boolean

If set to true, this field expresses the intent to produce a development client build.

For the build to be successful, the project must have expo-dev-client installed and configured.

This field is sugar for setting the iOS buildConfiguration to Debug and Android gradleCommand to :app:assembleDebug. Those fields, if provided for the same build profile, will take precedence.

Learn more

Default: false
prebuildCommand string

Optional override of the prebuild command used by EAS.

For example, you can specify prebuild --template example-template to use a custom template.

--platform and --non-interactive will be added automatically by the build engine, so you do not need to specify them manually.

Learn more

node string

The exact version of Node.js to use for the build.

corepack boolean

If set to true, corepack will be enabled at the beginning of the build process.

Default: false
yarn string

The exact version of Yarn to use for the build.

pnpm string

The exact version of pnpm to use for the build.

bun string

The exact version of Bun to use for the build.

env object

Environment variables that should be set during the build process.

Should only be used for values that you would commit to your git repository, i.e. not passwords or secrets.

cache object
4 nested properties
disabled boolean

Disables caching. Defaults to false.

key string

Cache key. You can invalidate the cache by changing this value.

customPaths string[]

[DEPRECATED] Use paths instead. List of the paths that will be saved after a successful build and restored at the beginning of the next one. Both absolute and relative paths are supported, where relative paths are resolved from the directory with eas.json.

uniqueItems=true
paths string[]

List of the paths that will be saved after a successful build and restored at the beginning of the next one. Both absolute and relative paths are supported, where relative paths are resolved from the directory with eas.json.

uniqueItems=true
autoIncrement boolean

When enabled, for iOS, bumps the last component of expo.ios.buildNumber (e.g. 1.2.3.39 -> 1.2.3.40) and for Android, bumps expo.android.versionCode (e.g. 3 -> 4).

Default: false
buildArtifactPaths string[]

List of paths (or patterns) where EAS Build is going to look for the build artifacts. Use applicationArchivePath to specify the path for uploading the application archive. Build artifacts are uploaded even if the build fails. EAS Build uses the fast-glob npm package for pattern matching (see their README to learn more about the syntax you can use).

resourceClass enum | string

The resource class that will be used to run this build, supported by both Android and iOS workers. Learn more

Default: "default"
config string

Custom workflow file name that will be used to run this build. You can also specify this property on platform level for platform-specific workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/

environment string

Environment to use for the server-side defined EAS environment variables during build process and command execution. Learn more

Examples: "production", "preview", "development"
android object

The Android-specific build profile configuration.

10 nested properties
withoutCredentials boolean

When set to true, EAS CLI won't require you to configure credentials when building the app. This comes in handy when you want to build debug binaries and the debug keystore is checked in to the repository or working with custom builds.

Default: false
image enum | enum

Image with build environment. Learn more

Default: "default"
resourceClass enum | string

The Android-specific resource class that will be used to run this build. Learn more

Default: "default"
ndk string

The version of Android NDK.

autoIncrement enum

Controls how EAS CLI bumps your application build version.

Allowed values:

  • "version" - bumps the patch of expo.version (e.g. 1.2.3 -> 1.2.4).
  • "versionCode" (or true) - bumps expo.android.versionCode (e.g. 3 -> 4).
  • false - versions won't be bumped automatically (default)

In the case of a bare project, it also updates versions in native code. expo.version corresponds to versionName and expo.android.versionCode to versionCode in the build.gradle. Google Play uses these values to identify the app build, versionName is the version visible to users, whereas versionCode defines the version number. The combination of those needs to be unique, so you can bump either of them.

This feature is not intended for use with dynamic configuration (app.config.js). EAS CLI will throw an error if you don't use app.json.

Default: false
Values: false true "versionCode" "version"
buildType enum

Type of the artifact you want to build. It controls what Gradle task will be used, can be overridden by gradleCommand or developmentClient: true option.

  • app-bundle - :app:bundleRelease
  • apk - :app:assembleRelease
Values: "app-bundle" "apk"
gradleCommand string

Gradle task that will be used to build your project, e.g. :app:assembleDebug to build a debug binary.

It's not recommended unless you need to run a task that buildType does not support, it takes priority over buildType and developmentClient.

applicationArchivePath string

Path (or pattern) where EAS Build is going to look for the application archive. EAS Build uses the fast-glob npm package for pattern matching (see their README to learn more about the syntax you can use).

Default: "android/app/build/outputs/**/*.{apk,aab}"
artifactPath string

[DEPRECATED] Use applicationArchivePath instead. Path (or pattern) where EAS Build is going to look for the build artifacts. EAS Build uses the fast-glob npm package for pattern matching (see their README to learn more about the syntax you can use).

Default: "android/app/build/outputs/**/*.{apk,aab}"
config string

Custom workflow file name that will be used to run this Android build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/

ios object

The iOS-specific build profile configuration.

14 nested properties
withoutCredentials boolean

When set to true, EAS CLI won't require you to configure credentials when building the app. This comes in handy when working with custom builds.

Default: false
simulator boolean

If set to true, creates build for simulator.

Default: false
enterpriseProvisioning enum

Provisioning method used for "distribution": "internal" when you have an Apple account with Apple Developer Enterprise Program membership.

You can choose if you want to use adhoc or universal provisioning. The latter is recommended as it does not require you to register each individual device. If you don't provide this option and you still authenticate with an enterprise team, you'll be prompted which provisioning method to use.

Values: "universal" "adhoc"
autoIncrement enum

Controls how EAS CLI bumps your application build version.

Allowed values:

  • "version" - bumps the patch of expo.version (e.g. 1.2.3 -> 1.2.4).
  • "buildNumber" (or true) - bumps the last component of expo.ios.buildNumber (e.g. 1.2.3.39 -> 1.2.3.40).
  • false - versions won't be bumped automatically (default)

In the case of a bare project, it also updates versions in native code. expo.version corresponds to CFBundleShortVersionString and expo.ios.buildNumber to CFBundleVersion in the Info.plist. The App Store is using those values to identify the app build, CFBundleShortVersionString is the version visible to users, whereas CFBundleVersion defines the build number. The combination of those needs to be unique, so you can bump either of them.

This feature is not intended for use with dynamic configuration (app.config.js). EAS CLI will throw an error if you don't use app.json.

Default: false
Values: false true "buildNumber" "version"
image enum | enum

Image with build environment. Learn more

Default: "default"
resourceClass enum | string

The iOS-specific resource class that will be used to run this build. Learn more

Default: "default"
bundler string

The version of bundler to use for the build.

fastlane string

The version of fastlane to use for the build.

cocoapods string

The version of CocoaPods to use for the build.

scheme string

Xcode project's scheme.

  • managed project: does not have any effect
  • bare project
    • If your project has multiple schemes, you should set this value.
    • If the project has only one scheme, it will be detected automatically.
    • If multiple schemes exist and this value is not set, EAS CLI will prompt you to select one of them.
buildConfiguration string

Xcode project's Build Configuration.

  • managed project: "Release" or "Debug", defaults to "Release"
  • bare project: defaults to the value specified in the scheme

It takes priority over developmentClient field.

applicationArchivePath string

Path (or pattern) where EAS Build is going to look for the application archive.

EAS Build uses the fast-glob npm package for pattern matching, (See their README to learn more about the syntax you can use).

You should modify that path only if you are using a custom Gymfile.

The default is ios/build/Build/Products/*-iphonesimulator/*.app when building for simulator and ios/build/*.ipa in other cases.

artifactPath string

[DEPRECATED] Use applicationArchivePath instead. Path (or pattern) where EAS Build is going to look for the build artifacts.

EAS Build uses the fast-glob npm package for pattern matching, (See their README to learn more about the syntax you can use).

You should modify that path only if you are using a custom Gymfile.

The default is ios/build/Build/Products/*-iphonesimulator/*.app when building for simulator and ios/build/*.ipa in other cases.

config string

Custom workflow file name that will be used to run this iOS build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/

BuildProfileAndroid object

The Android-specific build profile configuration.

withoutCredentials boolean

When set to true, EAS CLI won't require you to configure credentials when building the app. This comes in handy when you want to build debug binaries and the debug keystore is checked in to the repository or working with custom builds.

Default: false
image enum | enum

Image with build environment. Learn more

Default: "default"
resourceClass enum | string

The Android-specific resource class that will be used to run this build. Learn more

Default: "default"
ndk string

The version of Android NDK.

autoIncrement enum

Controls how EAS CLI bumps your application build version.

Allowed values:

  • "version" - bumps the patch of expo.version (e.g. 1.2.3 -> 1.2.4).
  • "versionCode" (or true) - bumps expo.android.versionCode (e.g. 3 -> 4).
  • false - versions won't be bumped automatically (default)

In the case of a bare project, it also updates versions in native code. expo.version corresponds to versionName and expo.android.versionCode to versionCode in the build.gradle. Google Play uses these values to identify the app build, versionName is the version visible to users, whereas versionCode defines the version number. The combination of those needs to be unique, so you can bump either of them.

This feature is not intended for use with dynamic configuration (app.config.js). EAS CLI will throw an error if you don't use app.json.

Default: false
Values: false true "versionCode" "version"
buildType enum

Type of the artifact you want to build. It controls what Gradle task will be used, can be overridden by gradleCommand or developmentClient: true option.

  • app-bundle - :app:bundleRelease
  • apk - :app:assembleRelease
Values: "app-bundle" "apk"
gradleCommand string

Gradle task that will be used to build your project, e.g. :app:assembleDebug to build a debug binary.

It's not recommended unless you need to run a task that buildType does not support, it takes priority over buildType and developmentClient.

applicationArchivePath string

Path (or pattern) where EAS Build is going to look for the application archive. EAS Build uses the fast-glob npm package for pattern matching (see their README to learn more about the syntax you can use).

Default: "android/app/build/outputs/**/*.{apk,aab}"
artifactPath string

[DEPRECATED] Use applicationArchivePath instead. Path (or pattern) where EAS Build is going to look for the build artifacts. EAS Build uses the fast-glob npm package for pattern matching (see their README to learn more about the syntax you can use).

Default: "android/app/build/outputs/**/*.{apk,aab}"
config string

Custom workflow file name that will be used to run this Android build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/

BuildProfileIos object

The iOS-specific build profile configuration.

withoutCredentials boolean

When set to true, EAS CLI won't require you to configure credentials when building the app. This comes in handy when working with custom builds.

Default: false
simulator boolean

If set to true, creates build for simulator.

Default: false
enterpriseProvisioning enum

Provisioning method used for "distribution": "internal" when you have an Apple account with Apple Developer Enterprise Program membership.

You can choose if you want to use adhoc or universal provisioning. The latter is recommended as it does not require you to register each individual device. If you don't provide this option and you still authenticate with an enterprise team, you'll be prompted which provisioning method to use.

Values: "universal" "adhoc"
autoIncrement enum

Controls how EAS CLI bumps your application build version.

Allowed values:

  • "version" - bumps the patch of expo.version (e.g. 1.2.3 -> 1.2.4).
  • "buildNumber" (or true) - bumps the last component of expo.ios.buildNumber (e.g. 1.2.3.39 -> 1.2.3.40).
  • false - versions won't be bumped automatically (default)

In the case of a bare project, it also updates versions in native code. expo.version corresponds to CFBundleShortVersionString and expo.ios.buildNumber to CFBundleVersion in the Info.plist. The App Store is using those values to identify the app build, CFBundleShortVersionString is the version visible to users, whereas CFBundleVersion defines the build number. The combination of those needs to be unique, so you can bump either of them.

This feature is not intended for use with dynamic configuration (app.config.js). EAS CLI will throw an error if you don't use app.json.

Default: false
Values: false true "buildNumber" "version"
image enum | enum

Image with build environment. Learn more

Default: "default"
resourceClass enum | string

The iOS-specific resource class that will be used to run this build. Learn more

Default: "default"
bundler string

The version of bundler to use for the build.

fastlane string

The version of fastlane to use for the build.

cocoapods string

The version of CocoaPods to use for the build.

scheme string

Xcode project's scheme.

  • managed project: does not have any effect
  • bare project
    • If your project has multiple schemes, you should set this value.
    • If the project has only one scheme, it will be detected automatically.
    • If multiple schemes exist and this value is not set, EAS CLI will prompt you to select one of them.
buildConfiguration string

Xcode project's Build Configuration.

  • managed project: "Release" or "Debug", defaults to "Release"
  • bare project: defaults to the value specified in the scheme

It takes priority over developmentClient field.

applicationArchivePath string

Path (or pattern) where EAS Build is going to look for the application archive.

EAS Build uses the fast-glob npm package for pattern matching, (See their README to learn more about the syntax you can use).

You should modify that path only if you are using a custom Gymfile.

The default is ios/build/Build/Products/*-iphonesimulator/*.app when building for simulator and ios/build/*.ipa in other cases.

artifactPath string

[DEPRECATED] Use applicationArchivePath instead. Path (or pattern) where EAS Build is going to look for the build artifacts.

EAS Build uses the fast-glob npm package for pattern matching, (See their README to learn more about the syntax you can use).

You should modify that path only if you are using a custom Gymfile.

The default is ios/build/Build/Products/*-iphonesimulator/*.app when building for simulator and ios/build/*.ipa in other cases.

config string

Custom workflow file name that will be used to run this iOS build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/

Submit object

EAS Submit configuration. Learn more

SubmitProfile object
extends string

The name of the submit profile that the current one should inherit values from.

android object

The Android-specific submit profile configuration.

6 nested properties
serviceAccountKeyPath string

Path to the JSON file with service account key used to authenticate with Google Play. Learn more

track string
Default: "internal"
Examples: "beta", "alpha", "internal", "production"
releaseStatus enum

The status of a release. Learn more

Default: "completed"
Values: "draft" "inProgress" "halted" "completed"
rollout number

The initial fraction of users who are eligible to receive the release. Should be a value from 0 (no users) to 1 (all users). Works only with inProgress release status. Learn more

changesNotSentForReview boolean

Indicates that the changes sent with this submission will not be reviewed until they are explicitly sent for review from the Google Play Console UI. Defaults to false.

Default: false
applicationId string

The application id that will be used when accessing Service Account Keys managed by Expo, it does not have any effect if you are using local credentials. In most cases this value will be autodetected, but if you have multiple product flavors, this value might be necessary.

ios object

The iOS-specific submit profile configuration.

13 nested properties
appleId string

Your Apple ID username (you can also set the EXPO_APPLE_ID env variable).

ascAppId string

App Store Connect unique application Apple ID number. When set, results in skipping the app creation step. Learn more

appleTeamId string

Your Apple Developer Team ID.

sku string

An unique ID for your app that is not visible on the App Store, will be generated unless provided.

language string

Primary language. Defaults to en-US.

companyName string

The name of your company, needed only for the first submission of any app to the App Store.

appName string

The name of your app as it will appear on the App Store. Defaults to expo.name from the app config.

ascApiKeyPath string

The path to your App Store Connect Api Key .p8 file. Learn more

ascApiKeyIssuerId string

The Issuer ID of your App Store Connect Api Key. Learn more

ascApiKeyId string

The Key ID of your App Store Connect Api Key. Learn more

bundleIdentifier string

The Bundle identifier that will be used when accessing submit credentials managed by Expo, it does not have any effect if you are using local credentials. In most cases this value will be autodetected, but if you have multiple Xcode schemes and targets, this value might be necessary.

groups array

Internal TestFlight testing groups to add the build to (iOS only). Learn more

metadataPath string

The path to your store configuration file. Learn more

SubmitProfileAndroid object

The Android-specific submit profile configuration.

serviceAccountKeyPath string

Path to the JSON file with service account key used to authenticate with Google Play. Learn more

track string
Default: "internal"
Examples: "beta", "alpha", "internal", "production"
releaseStatus enum

The status of a release. Learn more

Default: "completed"
Values: "draft" "inProgress" "halted" "completed"
rollout number

The initial fraction of users who are eligible to receive the release. Should be a value from 0 (no users) to 1 (all users). Works only with inProgress release status. Learn more

changesNotSentForReview boolean

Indicates that the changes sent with this submission will not be reviewed until they are explicitly sent for review from the Google Play Console UI. Defaults to false.

Default: false
applicationId string

The application id that will be used when accessing Service Account Keys managed by Expo, it does not have any effect if you are using local credentials. In most cases this value will be autodetected, but if you have multiple product flavors, this value might be necessary.

SubmitProfileIos object

The iOS-specific submit profile configuration.

appleId string

Your Apple ID username (you can also set the EXPO_APPLE_ID env variable).

ascAppId string

App Store Connect unique application Apple ID number. When set, results in skipping the app creation step. Learn more

appleTeamId string

Your Apple Developer Team ID.

sku string

An unique ID for your app that is not visible on the App Store, will be generated unless provided.

language string

Primary language. Defaults to en-US.

companyName string

The name of your company, needed only for the first submission of any app to the App Store.

appName string

The name of your app as it will appear on the App Store. Defaults to expo.name from the app config.

ascApiKeyPath string

The path to your App Store Connect Api Key .p8 file. Learn more

ascApiKeyIssuerId string

The Issuer ID of your App Store Connect Api Key. Learn more

ascApiKeyId string

The Key ID of your App Store Connect Api Key. Learn more

bundleIdentifier string

The Bundle identifier that will be used when accessing submit credentials managed by Expo, it does not have any effect if you are using local credentials. In most cases this value will be autodetected, but if you have multiple Xcode schemes and targets, this value might be necessary.

groups array

Internal TestFlight testing groups to add the build to (iOS only). Learn more

metadataPath string

The path to your store configuration file. Learn more