EAS config
The EAS config (eas.json) validation and documentation
| 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
The EAS config (eas.json) validation and documentation.
Properties
Configure the basic behavior of your project with the EAS CLI
4 nested properties
The compatible versions of EAS CLI with this config
If all changes required to be committed before building or submitting
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.
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.
EAS Build configuration. Learn more
EAS Submit configuration. Learn more
Definitions
Configure the basic behavior of your project with the EAS CLI
The compatible versions of EAS CLI with this config
If all changes required to be committed before building or submitting
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.
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.
EAS Build configuration. Learn more
Disables caching. Defaults to false.
Cache key. You can invalidate the cache by changing this value.
[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.
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.
The build profile configuration.
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.
The name of the build profile that the current one should inherit values from. This value can't be specified per platform.
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 owncredentials.jsonfile. learn more
The channel name identifies which EAS Update channel a build belongs to. Learn more
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 usinginternal, make sure the build produces an APK or IPA file. Otherwise, the shareable URL will be useless. Learn morestore- produces builds for store uploads, your build URLs won't be shareable.
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
buildConfigurationtoDebugand AndroidgradleCommandto:app:assembleDebug. Those fields, if provided for the same build profile, will take precedence.
Optional override of the prebuild command used by EAS.
For example, you can specify prebuild --template example-template to use a custom template.
--platformand--non-interactivewill be added automatically by the build engine, so you do not need to specify them manually.
The exact version of Node.js to use for the build.
If set to true, corepack will be enabled at the beginning of the build process.
The exact version of Yarn to use for the build.
The exact version of pnpm to use for the build.
The exact version of Bun to use for the build.
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.
4 nested properties
Disables caching. Defaults to false.
Cache key. You can invalidate the cache by changing this value.
[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.
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.
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).
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).
The resource class that will be used to run this build, supported by both Android and iOS workers. Learn more
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 to use for the server-side defined EAS environment variables during build process and command execution. Learn more
The Android-specific build profile configuration.
10 nested properties
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.
Image with build environment. Learn more
The Android-specific resource class that will be used to run this build. Learn more
The version of Android NDK.
Controls how EAS CLI bumps your application build version.
Allowed values:
"version"- bumps the patch ofexpo.version(e.g.1.2.3->1.2.4)."versionCode"(ortrue) - bumpsexpo.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.
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:bundleReleaseapk-:app:assembleRelease
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.
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).
[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).
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/
The iOS-specific build profile configuration.
14 nested properties
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.
If set to true, creates build for simulator.
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.
Controls how EAS CLI bumps your application build version.
Allowed values:
"version"- bumps the patch ofexpo.version(e.g.1.2.3->1.2.4)."buildNumber"(ortrue) - bumps the last component ofexpo.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.
Image with build environment. Learn more
The iOS-specific resource class that will be used to run this build. Learn more
The version of bundler to use for the build.
The version of fastlane to use for the build.
The version of CocoaPods to use for the build.
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.
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.
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.
[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.
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/
The Android-specific build profile configuration.
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.
Image with build environment. Learn more
The Android-specific resource class that will be used to run this build. Learn more
The version of Android NDK.
Controls how EAS CLI bumps your application build version.
Allowed values:
"version"- bumps the patch ofexpo.version(e.g.1.2.3->1.2.4)."versionCode"(ortrue) - bumpsexpo.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.
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:bundleReleaseapk-:app:assembleRelease
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.
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).
[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).
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/
The iOS-specific build profile configuration.
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.
If set to true, creates build for simulator.
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.
Controls how EAS CLI bumps your application build version.
Allowed values:
"version"- bumps the patch ofexpo.version(e.g.1.2.3->1.2.4)."buildNumber"(ortrue) - bumps the last component ofexpo.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.
Image with build environment. Learn more
The iOS-specific resource class that will be used to run this build. Learn more
The version of bundler to use for the build.
The version of fastlane to use for the build.
The version of CocoaPods to use for the build.
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.
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.
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.
[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.
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/
EAS Submit configuration. Learn more
The name of the submit profile that the current one should inherit values from.
The Android-specific submit profile configuration.
6 nested properties
Path to the JSON file with service account key used to authenticate with Google Play. Learn more
The track of the application to use.
The status of a release. Learn more
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
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.
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.
The iOS-specific submit profile configuration.
13 nested properties
Your Apple ID username (you can also set the EXPO_APPLE_ID env variable).
App Store Connect unique application Apple ID number. When set, results in skipping the app creation step. Learn more
Your Apple Developer Team ID.
An unique ID for your app that is not visible on the App Store, will be generated unless provided.
Primary language. Defaults to en-US.
The name of your company, needed only for the first submission of any app to the App Store.
The name of your app as it will appear on the App Store. Defaults to expo.name from the app config.
The path to your App Store Connect Api Key .p8 file. Learn more
The Issuer ID of your App Store Connect Api Key. Learn more
The Key ID of your App Store Connect Api Key. Learn more
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.
Internal TestFlight testing groups to add the build to (iOS only). Learn more
The path to your store configuration file. Learn more
The Android-specific submit profile configuration.
Path to the JSON file with service account key used to authenticate with Google Play. Learn more
The track of the application to use.
The status of a release. Learn more
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
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.
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.
The iOS-specific submit profile configuration.
Your Apple ID username (you can also set the EXPO_APPLE_ID env variable).
App Store Connect unique application Apple ID number. When set, results in skipping the app creation step. Learn more
Your Apple Developer Team ID.
An unique ID for your app that is not visible on the App Store, will be generated unless provided.
Primary language. Defaults to en-US.
The name of your company, needed only for the first submission of any app to the App Store.
The name of your app as it will appear on the App Store. Defaults to expo.name from the app config.
The path to your App Store Connect Api Key .p8 file. Learn more
The Issuer ID of your App Store Connect Api Key. Learn more
The Key ID of your App Store Connect Api Key. Learn more
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.
Internal TestFlight testing groups to add the build to (iOS only). Learn more
The path to your store configuration file. Learn more