# Expo Application Services (EAS) Documentation
Expo Application Services (EAS) are deeply integrated cloud services for Expo and React Native apps, from the team behind Expo.
## Introduction
## Configuration with eas.json
Learn about available properties for EAS Build and EAS Submit to configure and override their default behavior from within your project.
**eas.json** is the configuration file for EAS CLI and services. You can find the complete reference of all available schema properties for [EAS Build](/build/introduction) and [EAS Submit](/submit/introduction) on this page.
> **info** To learn more about how a project using EAS services is configured with **eas.json**, see [Configure EAS Build with eas.json](/build/eas-json/) and [Configure EAS Submit with eas.json](/submit/eas-json/).
## EAS Build
The following properties are available in the schema for the `build` key in **eas.json**.
Note: Example schema of multiple build profiles
---
```json eas.json
{
"build": {
"base": {
"node": "12.13.0",
"yarn": "1.22.5",
"env": {
"EXAMPLE_ENV": "example value"
},
"android": {
"image": "default",
"env": {
"PLATFORM": "android"
}
},
"ios": {
"image": "latest",
"env": {
"PLATFORM": "ios"
}
}
},
"development": {
"extends": "base",
"developmentClient": true,
"env": {
"ENVIRONMENT": "development"
},
"android": {
"distribution": "internal",
"withoutCredentials": true
},
"ios": {
"simulator": true
}
},
"staging": {
"extends": "base",
"env": {
"ENVIRONMENT": "staging"
},
"distribution": "internal",
"android": {
"buildType": "apk"
}
},
"production": {
"extends": "base",
"env": {
"ENVIRONMENT": "production"
}
}
}
}
```
---
### Common properties for native platforms
| Property | Description |
| --- | --- |
| `withoutCredentials` | **(boolean)** - When set to `true`, EAS CLI won't require you to configure credentials when building the app. This comes in handy when using EAS Build [custom builds](/custom-builds/get-started/). Defaults to `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: local, remote)** - The source of credentials used to sign the application archive. - `local` - if you want to provide your own [**credentials.json**](/app-signing/local-credentials). - `remote` - if you want to use the credentials managed by EAS (default option). |
| `releaseChannel` | **(string)** - **Deprecated**: Name of the release channel for the Classic Updates service, which is only supported in SDK 49 and lower. If you do not specify a channel, your binary will pull releases from the `default` channel. EAS Update uses the [channel](#channel) field, so you can remove [`releaseChannel`](#releasechannel) after [migrating to EAS Update](/eas-update/migrate-from-classic-updates/). |
| `channel` | **(string)** - The EAS Update channel where this build will look for updates. [Learn more](../../eas-update/how-it-works). Standalone builds will check for and download updates matching platform, native runtime, and channel. This field has no effect when [`developmentClient`](#developmentclient) is set to `true`, as development builds can run updates from any channel. If you have not yet migrated from Classic Updates to EAS Update, then continue to use the [`releaseChannel`](#releasechannel) field instead. |
| `distribution` | **(enum: store, internal)** - 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 a **.apk** or **ipa** file. Otherwise, the shareable URL will be not work. See [internal distribution](/build/internal-distribution) for more information. - `store` - produces builds for store uploads, your build URLs won't be shareable. |
| `developmentClient` | **(boolean)** - If set to `true` (defaults to `false`), this field will produce a [development build](/workflow/overview/#development-builds). For the build to be successful, the project must have [`expo-dev-client`](/versions/latest/sdk/dev-client/) installed and configured. **Note**: this field is for setting the `gradleCommand` to `:app:assembleDebug` for Android and `buildConfiguration` to `Debug` for iOS . If these fields are provided for the same build profile, will take precedence over `developmentClient`. |
| `resourceClass` | **(enum: default, medium, large)** - The resource class that will be used to run this build. To see mapping for each platform, see [Android-specific resource class field](#resourceclass-1) and [iOS-specific resource class field](#resourceclass-2). The `large` resource class is not available on the free plan. |
| `prebuildCommand` | **(string)** - Optional override of the [prebuild](/more/expo-cli/#prebuild) command used by EAS. For example, you can specify `prebuild --template example-template` to use a custom template. **Note**: `--platform` and `--non-interactive` will be added automatically by the build engine, so you do not need to specify them manually. |
| `buildArtifactPaths` | **(string[])** - List of paths (or patterns) where EAS Build is going to look for the build artifacts. Use `applicationArchivePath` for specifying the path for uploading the application archive. Build artifacts are uploaded even if the build fails. EAS Build uses [glob patterns](https://github.com/isaacs/node-glob#glob-primer) for pattern matching. |
| `node` | **(string)** - Version of Node.js used for build. |
| `corepack` | **(boolean)** - If set to `true`, [corepack](https://nodejs.org/api/corepack.html) will be enabled at the beginning of build process. Defaults to `false`. |
| `yarn` | **(string)** - Version of Yarn used for build. |
| `pnpm` | **(string)** - Version of pnpm used for build. |
| `bun` | **(string)** - Version of Bun used for build. You can also use a specific version. Learn [how to configure the exact version in eas.json](/guides/using-bun/#customize-bun-version-on-eas). |
| `expoCli` | **(string)** - **Deprecated**: Version of [`expo-cli`](https://www.npmjs.com/package/expo-cli) used to [prebuild](/more/expo-cli/#prebuild) your app. It only affects managed projects on Expo SDK 45 and lower. For newer SDKs, EAS Build will use the versioned [Expo CLI](/more/expo-cli/). It is included with `expo` library. You can opt out of using the versioned Expo CLI by setting the `EXPO_USE_LOCAL_CLI=0` environment variable in the build profile. |
| `env` | **(object)** - [Environment variables](/guides/environment-variables/) that should be set during the build process. It should only be used for values that you would commit to your git repository and not for passwords or [secrets](/build-reference/variables/). |
| `autoIncrement` | **(boolean)** - Controls how EAS CLI bumps your application build version. Defaults to `false`. When enabled, for Android, bumps `expo.android.versionCode` (for example, `3`to `4`). For iOS, bumps the last component of `expo.ios.buildNumber` (for example, `1.2.3.39` to `1.2.3.40`). |
| `cache` | **(object)** - Cache configuration. This feature is intended for caching values that require a lot of computation. For example, compilation results (both final binaries and any intermediate files). However, it doesn't work well for **node_modules** because the cache is not local to the machine, so the download speed is similar to downloading from the npm registry. |
| • `disabled` | **(boolean)** - Disables caching. Defaults to `false`. |
| • `key` | **(string)** - Cache key. You can invalidate the cache by changing this value. |
| • `paths` | **(array)** - 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**. |
| `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](/custom-builds/get-started/). Example: `"config": "production.yml"` will use workflow from `.eas/build/production.yml`. |
| `environment` | **(enum: development, preview, production)** - The environment used to apply environment variables for the build process. [Learn more](/eas/environment-variables). |
### Android-specific options
| Property | Description |
| --- | --- |
| `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. Defaults to `false`. |
| `image` | **(string)** - [Image with build environment](/build-reference/infrastructure/). |
| `resourceClass` | **(enum: default, medium, large)** - The Android-specific resource class that will be used to run this build. Defaults to `medium`. For information on available build resources for each resource class, see [Android build server configurations](/build-reference/infrastructure/#android-build-server-configurations). The `large` resource class is not available on the free plan. |
| `ndk` | **(string)** - Version of Android NDK. |
| `autoIncrement` | **(boolean \| "version" \| "versionCode")** - Controls how EAS CLI bumps your application build version. Defaults to `false`. Allowed values: - `"version"` - bumps the patch of `expo.version` (for example, `1.2.3` to `1.2.4`). - `"versionCode"` (or `true`) - bumps `expo.android.versionCode` (for example, `3` to `4`). - `false` - versions won't be bumped automatically (default). Based on the value of [`cli.appVersionSource` in **eas.json**](/build-reference/app-versions/), the values will be updated locally in your project or on EAS servers. |
| `buildType` | **(enum: app-bundle, apk)** - Type of the artifact you want to build. It controls which Gradle task will be used to build the project. It can be overridden by `gradleCommand` or `developmentClient: true` option. - `app-bundle` - `:app:bundleRelease` (creates **.aab** artifact) - `apk` - `:app:assembleRelease` (creates **.apk** artifact) |
| `gradleCommand` | **(string)** - Gradle task that will be used to build your project. For example, `: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`](#buildtype) and [`developmentClient`](#developmentclient). |
| `applicationArchivePath` | **(string)** - Path (or pattern) where EAS Build is going to look for the application archive. EAS Build uses [glob patterns](https://github.com/isaacs/node-glob#glob-primer) for pattern matching. The default value is `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 level for platform-agnostic workflows. [Learn more](/custom-builds/get-started/). Example: `"config": "production-android.yml"` will use workflow from `.eas/build/production-android.yml`. |
### iOS-specific options
| Property | Description |
| --- | --- |
| `withoutCredentials` | **(boolean)** - When set to `true`, EAS CLI won't require you to configure credentials when building the app. This comes in handy when using EAS Build [custom builds](/custom-builds/get-started/). Defaults to `false`. |
| `simulator` | **(boolean)** - If set to true, creates build for iOS Simulator. Defaults to `false`. |
| `enterpriseProvisioning` | **(enum: universal, adhoc)** - 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. |
| `autoIncrement` | **(boolean \| "version" \| "buildNumber")** - Controls how EAS CLI bumps your application build version. Defaults to `false`. Allowed values: - `"version"` - bumps the patch of `expo.version` (for example, `1.2.3` to `1.2.4`). - `"buildNumber"` (or `true`) - bumps the last component of `expo.ios.buildNumber` (for example, `1.2.3.39` to `1.2.3.40`). - `false` - versions won't be bumped automatically (default) Based on the value of [`cli.appVersionSource` in **eas.json**](/build-reference/app-versions/), the values will be updated locally in your project or on EAS servers. |
| `image` | **(string)** - [Image with build environment](/build-reference/infrastructure). |
| `resourceClass` | **(enum: default, medium, large)** - The iOS-specific resource class that will be used to run this build. Defaults to `medium`. For information on available build resources for each resource class, see [iOS build server configurations](/build-reference/infrastructure/#ios-build-server-configurations). The `large` resource class is not available on the free plan. |
| `bundler` | **(string)** - Version of [bundler](https://bundler.io/). |
| `fastlane` | **(string)** - Version of fastlane. |
| `cocoapods` | **(string)** - Version of CocoaPods. |
| `scheme` | **(string)** - Xcode project's scheme. If a project: - Has multiple schemes, you should set this value. - Has only one scheme, it will be detected automatically. - Have multiple schemes schemes and if this value is **not** set, EAS CLI will prompt you to select one of them. |
| `buildConfiguration` | **(string)** - Xcode project's Build Configuration. - For an Expo project, the value is `"Release"` or `"Debug"`. Defaults to `"Release"`. - For a [bare React Native](/bare/overview/) project, defaults to the value specified in the scheme. It takes priority over [`developmentClient`](#developmentclient). |
| `applicationArchivePath` | **(string)** - Path (or pattern) where EAS Build is going to look for the application archive. EAS Build uses [glob patterns](https://github.com/isaacs/node-glob#glob-primer) for pattern matching. 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 level for platform-agnostic workflows. [Learn more](/custom-builds/get-started/). Example: `"config": "production-ios.yml"` will use workflow from `.eas/build/production-ios.yml`. |
## EAS Submit
The following properties are available in the schema for the `submit` key in **eas.json**.
Note: Example schema of with production profile
---
```json eas.json
{
"cli": {
"version": ">= 0.34.0"
},
"submit": {
"production": {
"android": {
"track": "internal"
},
"ios": {
"appleId": "john@turtle.com",
"ascAppId": "1234567890",
"appleTeamId": "AB12XYZ34S"
}
}
}
}
```
---
### Android-specific options
| Property | Description |
| --- | --- |
| `serviceAccountKeyPath` | **(string)** - Path to the JSON file with [Google Service Account Key](https://expo.fyi/creating-google-service-account) used to authenticate with Google Play. |
| `track` | **(enum: production, beta, alpha, internal)** - The track of the application to use. |
| `releaseStatus` | **(enum: completed, draft, halted, inProgress)** - The [status of a release](https://developers.google.com/android-publisher/api-ref/rest/v3/edits.tracks#status). |
| `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](https://developers.google.com/android-publisher/api-ref/rest/v3/edits.tracks#status). |
| `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`. |
| `applicationId` | **(string)** - The application ID that is used when accessing Service Account Key managed by Expo. It does not have any effect if you are using local credentials. In most cases this value will be autodetected. However, if you have multiple product flavors, this value might be necessary. |
### iOS-specific options
| Property | Description |
| --- | --- |
| `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](https://expo.fyi/asc-app-id). When set, results in skipping the app creation step. |
| `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](/workflow/configuration/). |
| `ascApiKeyPath` | **(string)** - The path to your [App Store Connect Api Key **.p8** file](https://expo.fyi/creating-asc-api-key). |
| `ascApiKeyIssuerId` | **(string)** - The Issuer ID of your [App Store Connect Api Key](https://expo.fyi/creating-asc-api-key). |
| `ascApiKeyId` | **(string)** - The Key ID of your [App Store Connect Api Key](https://expo.fyi/creating-asc-api-key). |
| `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. However, if you have multiple Xcode schemes and targets, this value might be necessary. |
| `metadataPath` | **(string)** - The path to your [store configuration file](/eas/metadata/). |
| `groups` | **(array)** - An array of TestFlight internal group names to add the build to. Note: on top of the groups you provide here, the build will be automatically added to the groups that have been created with the "Enable automatic distribution" App Store Connect setting. |
## EAS CLI reference
EAS CLI is a command-line tool that allows you to interact with Expo Application Services (EAS) from your terminal.
You can use EAS Command-Line Interface (CLI) to build, update, submit, deploy or use workflows in your Expo and React Native project from a terminal window.
## Installation
You need to install the EAS CLI globally on your machine. You do this by running the following command:
Alternatively, you can use CLI tools provided by your package manager to run EAS CLI commands:
## Commands
Use the EAS CLI by running one of the commands documented on this page, optionally followed by any flags or arguments. Flags customize the behavior of a command, and arguments are specific to the command.
# EAS CLI commands (v16.32.0)
## eas account:login
Log in with your Expo account.
```
USAGE
$ eas account:login [-s]
FLAGS
-s, --sso Login with SSO
DESCRIPTION
log in with your Expo account
ALIASES
$ eas login
```
## eas account:logout
Log out.
```
USAGE
$ eas account:logout
DESCRIPTION
log out
ALIASES
$ eas logout
```
## eas account:usage [ACCOUNT_NAME]
View account usage and billing for the current cycle.
```
USAGE
$ eas account:usage [ACCOUNT_NAME] [--json] [--non-interactive]
ARGUMENTS
ACCOUNT_NAME Account name to view usage for. If not provided, the account will be selected interactively (or defaults
to the only account if there is just one)
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
view account usage and billing for the current cycle
```
## eas account:view
Show the username you are logged in as.
```
USAGE
$ eas account:view
DESCRIPTION
show the username you are logged in as
ALIASES
$ eas whoami
```
## eas analytics [STATUS]
Display or change analytics settings.
```
USAGE
$ eas analytics [STATUS]
DESCRIPTION
display or change analytics settings
```
## eas autocomplete [SHELL]
Display autocomplete installation instructions.
```
USAGE
$ eas autocomplete [SHELL] [-r]
ARGUMENTS
SHELL (zsh|bash|powershell) Shell type
FLAGS
-r, --refresh-cache Refresh cache (ignores displaying instructions)
DESCRIPTION
display autocomplete installation instructions
EXAMPLES
$ eas autocomplete
$ eas autocomplete bash
$ eas autocomplete zsh
$ eas autocomplete powershell
$ eas autocomplete --refresh-cache
```
## eas branch:create [NAME]
Create a branch.
```
USAGE
$ eas branch:create [NAME] [--json --non-interactive]
ARGUMENTS
NAME Name of the branch to create
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
create a branch
```
## eas branch:delete [NAME]
Delete a branch.
```
USAGE
$ eas branch:delete [NAME] [--json --non-interactive]
ARGUMENTS
NAME Name of the branch to delete
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
delete a branch
```
## eas branch:list
List all branches.
```
USAGE
$ eas branch:list [--offset ] [--limit ] [--json --non-interactive]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 50 and is capped at 100.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
DESCRIPTION
list all branches
```
## eas branch:rename
Rename a branch.
```
USAGE
$ eas branch:rename [--from ] [--to ] [--json --non-interactive]
FLAGS
--from= current name of the branch.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--to= new name of the branch.
DESCRIPTION
rename a branch
```
## eas branch:view [NAME]
View a branch.
```
USAGE
$ eas branch:view [NAME] [--offset ] [--limit ] [--json --non-interactive]
ARGUMENTS
NAME Name of the branch to view
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 25 and is capped at 50.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
DESCRIPTION
view a branch
```
## eas build
Start a build.
```
USAGE
$ eas build [-p android|ios|all] [-e ] [--local] [--output ] [--wait] [--clear-cache] [-s |
--auto-submit-with-profile ] [--what-to-test ] [-m ] [--build-logger-level
trace|debug|info|warn|error|fatal] [--freeze-credentials] [--verbose-logs] [--json --non-interactive]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to
"production" if defined in eas.json.
-m, --message= A short message describing the build
-p, --platform=(android|ios|all)
-s, --auto-submit Submit on build complete using the submit profile with the
same name as the build profile
--auto-submit-with-profile=PROFILE_NAME Submit on build complete using the submit profile with
provided name
--build-logger-level=(trace|debug|info|warn|error|fatal) The level of logs to output during the build process.
Defaults to "info".
--clear-cache Clear cache before the build
--freeze-credentials Prevent the build from updating credentials in
non-interactive mode
--json Enable JSON output, non-JSON messages will be printed to
stderr.
--local Run build locally [experimental]
--non-interactive Run the command in non-interactive mode.
--output= Output path for local build
--verbose-logs Use verbose logs for the build process
--[no-]wait Wait for build(s) to complete
--what-to-test= Specify the "What to Test" information for the build in
TestFlight (iOS-only). To be used with the `auto-submit`
flag
DESCRIPTION
start a build
```
## eas build:cancel [BUILD_ID]
Cancel a build.
```
USAGE
$ eas build:cancel [BUILD_ID] [--non-interactive] [-p android|ios|all] [-e ]
FLAGS
-e, --profile=PROFILE_NAME Filter builds by build profile if build ID is not provided
-p, --platform=(android|ios|all) Filter builds by the platform if build ID is not provided
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
cancel a build
```
## eas build:configure
Configure the project to support EAS Build.
```
USAGE
$ eas build:configure [-p android|ios|all]
FLAGS
-p, --platform=(android|ios|all) Platform to configure
DESCRIPTION
configure the project to support EAS Build
```
## eas build:delete [BUILD_ID]
Delete a build.
```
USAGE
$ eas build:delete [BUILD_ID] [--non-interactive] [-p android|ios|all] [-e ]
FLAGS
-e, --profile=PROFILE_NAME Filter builds by build profile if build ID is not provided
-p, --platform=(android|ios|all) Filter builds by the platform if build ID is not provided
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
delete a build
```
## eas build:dev
Run dev client simulator/emulator build with matching fingerprint or create a new one.
```
USAGE
$ eas build:dev [-p ios|android] [-e ]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. It must be a profile allowing to create
emulator/simulator internal distribution dev client builds. The "development-simulator"
build profile will be selected by default.
-p, --platform=(ios|android)
DESCRIPTION
run dev client simulator/emulator build with matching fingerprint or create a new one
```
## eas build:download
Download simulator/emulator builds for a given fingerprint hash.
```
USAGE
$ eas build:download --fingerprint [-p ios|android] [--dev-client] [--json --non-interactive]
FLAGS
-p, --platform=(ios|android)
--[no-]dev-client Filter only dev-client builds.
--fingerprint= (required) Fingerprint hash of the build to download
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
download simulator/emulator builds for a given fingerprint hash
```
## eas build:inspect
Inspect the state of the project at specific build stages, useful for troubleshooting.
```
USAGE
$ eas build:inspect -p android|ios -s archive|pre-build|post-build -o [-e ] [--force] [-v]
FLAGS
-e, --profile=PROFILE_NAME
Name of the build profile from eas.json. Defaults to "production" if defined in eas.json.
-o, --output=OUTPUT_DIRECTORY
(required) Output directory.
-p, --platform=(android|ios)
(required)
-s, --stage=(archive|pre-build|post-build)
(required) Stage of the build you want to inspect.
archive - builds the project archive that would be uploaded to EAS when building
pre-build - prepares the project to be built with Gradle/Xcode. Does not run the native build.
post-build - builds the native project and leaves the output directory for inspection
-v, --verbose
--force
Delete OUTPUT_DIRECTORY if it already exists.
DESCRIPTION
inspect the state of the project at specific build stages, useful for troubleshooting
```
## eas build:list
List all builds for your project.
```
USAGE
$ eas build:list [-p android|ios|all] [--status
new|in-queue|in-progress|pending-cancel|errored|finished|canceled] [--distribution store|internal|simulator]
[--channel ] [--app-version ] [--app-build-version ] [--sdk-version ] [--runtime-version
] [--app-identifier ] [-e ] [--git-commit-hash ] [--fingerprint-hash ] [--offset
] [--limit ] [--json --non-interactive] [--simulator]
FLAGS
-e, --build-profile= Filter only builds created with the
specified build profile
-p, --platform=(android|ios|all)
--app-build-version= Filter only builds created with the
specified app build version
--app-identifier= Filter only builds created with the
specified app identifier
--app-version= Filter only builds created with the
specified main app version
--channel=
--distribution=(store|internal|simulator) Filter only builds with the specified
distribution type
--fingerprint-hash= Filter only builds with the specified
fingerprint hash
--git-commit-hash= Filter only builds created with the
specified git commit hash
--json Enable JSON output, non-JSON messages
will be printed to stderr.
--limit= The number of items to fetch each query.
Defaults to 10 and is capped at 50.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use
for paginating results. Defaults to 0.
--runtime-version= Filter only builds created with the
specified runtime version
--sdk-version= Filter only builds created with the
specified Expo SDK version
--simulator Filter only iOS simulator builds. Can
only be used with --platform flag set to
"ios"
--status=(new|in-queue|in-progress|pending-cancel|errored|finished|canceled) Filter only builds with the specified
status
DESCRIPTION
list all builds for your project
```
## eas build:resign
Re-sign a build archive.
```
USAGE
$ eas build:resign [-p android|ios] [-e ] [--source-profile ] [--wait] [--id ] [--offset
] [--limit ] [--json --non-interactive]
FLAGS
-e, --target-profile=PROFILE_NAME Name of the target build profile from eas.json. Credentials and environment
variables from this profile will be used when re-signing. Defaults to "production"
if defined in eas.json.
-p, --platform=(android|ios)
--id= ID of the build to re-sign.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 50 and is capped at 100.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
--source-profile=PROFILE_NAME Name of the source build profile from eas.json. Used to filter builds eligible for
re-signing.
--[no-]wait Wait for build(s) to complete.
DESCRIPTION
re-sign a build archive
```
## eas build:run
Run simulator/emulator builds from eas-cli.
```
USAGE
$ eas build:run [--latest | --id | --path | --url ] [-p android|ios] [-e ]
[--offset ] [--limit ]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile used to create the build to run. When specified, only builds
created with the specified build profile will be queried.
-p, --platform=(android|ios)
--id= ID of the simulator/emulator build to run
--latest Run the latest simulator/emulator build for specified platform
--limit= The number of items to fetch each query. Defaults to 50 and is capped at 100.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
--path= Path to the simulator/emulator build archive or app
--url= Simulator/Emulator build archive url
DESCRIPTION
run simulator/emulator builds from eas-cli
```
## eas build:submit
Submit app binary to App Store and/or Play Store.
```
USAGE
$ eas build:submit [-p android|ios|all] [-e ] [--latest | --id | --path | --url ]
[--what-to-test ] [--verbose] [--wait] [--verbose-fastlane] [-g ] [--non-interactive]
FLAGS
-e, --profile= Name of the submit profile from eas.json. Defaults to "production" if defined in
eas.json.
-g, --groups=... Internal TestFlight testing groups to add the build to (iOS only). Learn more:
https://developer.apple.com/help/app-store-connect/test-a-beta-version/add-internal-
testers
-p, --platform=(android|ios|all)
--id= ID of the build to submit
--latest Submit the latest build for specified platform
--non-interactive Run command in non-interactive mode
--path= Path to the .apk/.aab/.ipa file
--url= App archive url
--verbose Always print logs from EAS Submit
--verbose-fastlane Enable verbose logging for the submission process
--[no-]wait Wait for submission to complete
--what-to-test= Sets the "What to test" information in TestFlight (iOS only).
DESCRIPTION
submit app binary to App Store and/or Play Store
ALIASES
$ eas build:submit
```
## eas build:version:get
Get the latest version from EAS servers.
```
USAGE
$ eas build:version:get [-p android|ios|all] [-e ] [--json --non-interactive]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined in
eas.json.
-p, --platform=(android|ios|all)
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
get the latest version from EAS servers
```
## eas build:version:set
Update version of an app.
```
USAGE
$ eas build:version:set [-p android|ios] [-e ]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined in
eas.json.
-p, --platform=(android|ios)
DESCRIPTION
update version of an app
```
## eas build:version:sync
Update a version in native code with a value stored on EAS servers.
```
USAGE
$ eas build:version:sync [-p android|ios|all] [-e ]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined in
eas.json.
-p, --platform=(android|ios|all)
DESCRIPTION
update a version in native code with a value stored on EAS servers
```
## eas build:view [BUILD_ID]
View a build for your project.
```
USAGE
$ eas build:view [BUILD_ID] [--json]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
DESCRIPTION
view a build for your project
```
## eas channel:create [NAME]
Create a channel.
```
USAGE
$ eas channel:create [NAME] [--json --non-interactive]
ARGUMENTS
NAME Name of the channel to create
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
create a channel
```
## eas channel:delete [NAME]
Delete a channel.
```
USAGE
$ eas channel:delete [NAME] [--json --non-interactive]
ARGUMENTS
NAME Name of the channel to delete
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
Delete a channel
```
## eas channel:edit [NAME]
Point a channel at a new branch.
```
USAGE
$ eas channel:edit [NAME] [--branch ] [--json --non-interactive]
ARGUMENTS
NAME Name of the channel to edit
FLAGS
--branch= Name of the branch to point to
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
point a channel at a new branch
```
## eas channel:list
List all channels.
```
USAGE
$ eas channel:list [--offset ] [--limit ] [--json --non-interactive]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 10 and is capped at 25.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
DESCRIPTION
list all channels
```
## eas channel:pause [NAME]
Pause a channel to stop it from sending updates.
```
USAGE
$ eas channel:pause [NAME] [--branch ] [--json --non-interactive]
ARGUMENTS
NAME Name of the channel to edit
FLAGS
--branch= Name of the branch to point to
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
pause a channel to stop it from sending updates
```
## eas channel:resume [NAME]
Resume a channel to start sending updates.
```
USAGE
$ eas channel:resume [NAME] [--branch ] [--json --non-interactive]
ARGUMENTS
NAME Name of the channel to edit
FLAGS
--branch= Name of the branch to point to
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
resume a channel to start sending updates
```
## eas channel:rollout [CHANNEL]
Roll a new branch out on a channel incrementally.
```
USAGE
$ eas channel:rollout [CHANNEL] [--action create|edit|end|view] [--percent ] [--outcome
republish-and-revert|revert] [--branch ] [--runtime-version ] [--private-key-path ] [--json
--non-interactive]
ARGUMENTS
CHANNEL channel on which the rollout should be done
FLAGS
--action=(create|edit|end|view) Rollout action to perform
--branch= Branch to roll out. Use with --action=create
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--outcome=(republish-and-revert|revert) End outcome of rollout. Use with --action=end
--percent= Percent of users to send to the new branch. Use with --action=edit or
--action=create
--private-key-path= File containing the PEM-encoded private key corresponding to the certificate
in expo-updates' configuration. Defaults to a file named "private-key.pem" in
the certificate's directory. Only relevant if you are using code signing:
https://docs.expo.dev/eas-update/code-signing/
--runtime-version= Runtime version to target. Use with --action=create
DESCRIPTION
Roll a new branch out on a channel incrementally.
```
## eas channel:view [NAME]
View a channel.
```
USAGE
$ eas channel:view [NAME] [--json --non-interactive] [--offset ] [--limit ]
ARGUMENTS
NAME Name of the channel to view
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 50 and is capped at 100.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
DESCRIPTION
view a channel
```
## eas config
Display project configuration (app.json + eas.json).
```
USAGE
$ eas config [-p android|ios] [-e ] [--json --non-interactive]
FLAGS
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined in
eas.json.
-p, --platform=(android|ios)
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
display project configuration (app.json + eas.json)
```
## eas credentials
Manage credentials.
```
USAGE
$ eas credentials [-p android|ios]
FLAGS
-p, --platform=(android|ios)
DESCRIPTION
manage credentials
```
## eas credentials:configure-build
Set up credentials for building your project.
```
USAGE
$ eas credentials:configure-build [-p android|ios] [-e ]
FLAGS
-e, --profile=PROFILE_NAME The name of the build profile in eas.json.
-p, --platform=(android|ios)
DESCRIPTION
Set up credentials for building your project.
```
## eas deploy [options]
Deploy your Expo Router web build and API Routes.
```
USAGE
$ eas deploy [options]
$ eas deploy --prod
FLAGS
--alias=name Custom alias to assign to the new deployment.
--dry-run Outputs a tarball of the new deployment instead of uploading it.
--environment= Environment variable's environment, e.g. 'production', 'preview', 'development'
--export-dir=dir [default: dist] Directory where the Expo project was exported.
--id=xyz123 Custom unique identifier for the new deployment.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--prod Create a new production deployment.
DESCRIPTION
deploy your Expo Router web build and API Routes
ALIASES
$ eas worker:deploy
```
## eas deploy:alias
Assign deployment aliases.
```
USAGE
$ eas deploy:alias [--prod] [--alias ] [--id ] [--json --non-interactive]
FLAGS
--alias=name Custom alias to assign to the existing deployment.
--id=xyz123 Unique identifier of an existing deployment.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--prod Promote an existing deployment to production.
DESCRIPTION
Assign deployment aliases.
ALIASES
$ eas worker:alias
$ eas deploy:promote
```
## eas deploy:alias:delete [ALIAS_NAME]
Delete deployment aliases.
```
USAGE
$ eas deploy:alias:delete [ALIAS_NAME] [--json --non-interactive]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
Delete deployment aliases.
ALIASES
$ eas worker:alias:delete
```
## eas deploy:delete [DEPLOYMENT_ID]
Delete a deployment.
```
USAGE
$ eas deploy:delete [DEPLOYMENT_ID] [--json --non-interactive]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
Delete a deployment.
ALIASES
$ eas worker:delete
```
## eas deploy:promote
Assign deployment aliases.
```
USAGE
$ eas deploy:promote [--prod] [--alias ] [--id ] [--json --non-interactive]
FLAGS
--alias=name Custom alias to assign to the existing deployment.
--id=xyz123 Unique identifier of an existing deployment.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--prod Promote an existing deployment to production.
DESCRIPTION
Assign deployment aliases.
ALIASES
$ eas worker:alias
$ eas deploy:promote
```
## eas device:create
Register new Apple Devices to use for internal distribution.
```
USAGE
$ eas device:create
DESCRIPTION
register new Apple Devices to use for internal distribution
```
## eas device:delete
Remove a registered device from your account.
```
USAGE
$ eas device:delete [--apple-team-id ] [--udid ] [--json --non-interactive]
FLAGS
--apple-team-id= The Apple team ID on which to find the device
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--udid= The Apple device ID to disable
DESCRIPTION
remove a registered device from your account
```
## eas device:list
List all registered devices for your account.
```
USAGE
$ eas device:list [--apple-team-id ] [--offset ] [--limit ] [--json --non-interactive]
FLAGS
--apple-team-id=
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 50 and is capped at 100.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
DESCRIPTION
list all registered devices for your account
```
## eas device:rename
Rename a registered device.
```
USAGE
$ eas device:rename [--apple-team-id ] [--udid ] [--name ] [--json --non-interactive]
FLAGS
--apple-team-id= The Apple team ID on which to find the device
--json Enable JSON output, non-JSON messages will be printed to stderr.
--name= The new name for the device
--non-interactive Run the command in non-interactive mode.
--udid= The Apple device ID to rename
DESCRIPTION
rename a registered device
```
## eas device:view [UDID]
View a device for your project.
```
USAGE
$ eas device:view [UDID]
DESCRIPTION
view a device for your project
```
## eas diagnostics
Display environment info.
```
USAGE
$ eas diagnostics
DESCRIPTION
display environment info
```
## eas env:create [ENVIRONMENT]
Create an environment variable for the current project or account.
```
USAGE
$ eas env:create [ENVIRONMENT] [--name ] [--value ] [--force] [--type string|file] [--visibility
plaintext|sensitive|secret] [--scope project|account] [--environment ] [--non-interactive]
ARGUMENTS
ENVIRONMENT Environment to create the variable in. Default environments are 'production', 'preview', and
'development'.
FLAGS
--environment=... Environment variable's environment, e.g. 'production', 'preview',
'development'
--force Overwrite existing variable
--name= Name of the variable
--non-interactive Run the command in non-interactive mode.
--scope=(project|account) [default: project] Scope for the variable
--type=(string|file) The type of variable
--value= Text value or the variable
--visibility=(plaintext|sensitive|secret) Visibility of the variable
DESCRIPTION
create an environment variable for the current project or account
```
## eas env:delete [ENVIRONMENT]
Delete an environment variable for the current project or account.
```
USAGE
$ eas env:delete [ENVIRONMENT] [--variable-name ] [--variable-environment ] [--scope
project|account] [--non-interactive]
ARGUMENTS
ENVIRONMENT Current environment of the variable to delete. Default environments are 'production', 'preview', and
'development'.
FLAGS
--non-interactive Run the command in non-interactive mode.
--scope=(project|account) [default: project] Scope for the variable
--variable-environment= Current environment of the variable to delete
--variable-name= Name of the variable to delete
DESCRIPTION
delete an environment variable for the current project or account
```
## eas env:exec ENVIRONMENT BASH_COMMAND
Execute a command with environment variables from the selected environment.
```
USAGE
$ eas env:exec ENVIRONMENT BASH_COMMAND [--non-interactive]
ARGUMENTS
ENVIRONMENT Environment to execute the command in. Default environments are 'production', 'preview', and
'development'.
BASH_COMMAND bash command to execute with the environment variables from the environment
FLAGS
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
execute a command with environment variables from the selected environment
```
## eas env:get [ENVIRONMENT]
View an environment variable for the current project or account.
```
USAGE
$ eas env:get [ENVIRONMENT] [--variable-name ] [--variable-environment ] [--format
long|short] [--scope project|account] [--non-interactive]
ARGUMENTS
ENVIRONMENT Current environment of the variable. Default environments are 'production', 'preview', and 'development'.
FLAGS
--format=(long|short) [default: short] Output format
--non-interactive Run the command in non-interactive mode.
--scope=(project|account) [default: project] Scope for the variable
--variable-environment= Current environment of the variable
--variable-name= Name of the variable
DESCRIPTION
view an environment variable for the current project or account
```
## eas env:list [ENVIRONMENT]
List environment variables for the current project or account.
```
USAGE
$ eas env:list [ENVIRONMENT] [--include-sensitive] [--include-file-content] [--environment ]
[--format long|short] [--scope project|account]
ARGUMENTS
ENVIRONMENT Environment to list the variables from. Default environments are 'production', 'preview', and
'development'.
FLAGS
--environment=... Environment variable's environment, e.g. 'production', 'preview', 'development'
--format=(long|short) [default: short] Output format
--include-file-content Display files content in the output
--include-sensitive Display sensitive values in the output
--scope=(project|account) [default: project] Scope for the variable
DESCRIPTION
list environment variables for the current project or account
```
## eas env:pull [ENVIRONMENT]
Pull environment variables for the selected environment to .env file.
```
USAGE
$ eas env:pull [ENVIRONMENT] [--non-interactive] [--environment ] [--path ]
ARGUMENTS
ENVIRONMENT Environment to pull variables from. Default environments are 'production', 'preview', and 'development'.
FLAGS
--environment= Environment variable's environment, e.g. 'production', 'preview', 'development'
--non-interactive Run the command in non-interactive mode.
--path= [default: .env.local] Path to the result `.env` file
DESCRIPTION
pull environment variables for the selected environment to .env file
```
## eas env:push [ENVIRONMENT]
Push environment variables from .env file to the selected environment.
```
USAGE
$ eas env:push [ENVIRONMENT] [--environment ] [--path ] [--force]
ARGUMENTS
ENVIRONMENT Environment to push variables to. Default environments are 'production', 'preview', and 'development'.
FLAGS
--environment=... Environment variable's environment, e.g. 'production', 'preview', 'development'
--force Skip confirmation and automatically override existing variables
--path= [default: .env.local] Path to the input `.env` file
DESCRIPTION
push environment variables from .env file to the selected environment
```
## eas env:update [ENVIRONMENT]
Update an environment variable on the current project or account.
```
USAGE
$ eas env:update [ENVIRONMENT] [--variable-name ] [--variable-environment ] [--name ]
[--value ] [--type string|file] [--visibility plaintext|sensitive|secret] [--scope project|account]
[--environment ] [--non-interactive]
ARGUMENTS
ENVIRONMENT Current environment of the variable to update. Default environments are 'production', 'preview', and
'development'.
FLAGS
--environment=... Environment variable's environment, e.g. 'production', 'preview',
'development'
--name= New name of the variable
--non-interactive Run the command in non-interactive mode.
--scope=(project|account) [default: project] Scope for the variable
--type=(string|file) The type of variable
--value= New value or the variable
--variable-environment= Current environment of the variable to update
--variable-name= Current name of the variable
--visibility=(plaintext|sensitive|secret) Visibility of the variable
DESCRIPTION
update an environment variable on the current project or account
```
## eas fingerprint:compare [HASH1] [HASH2]
Compare fingerprints of the current project, builds, and updates.
```
USAGE
$ eas fingerprint:compare [HASH1] [HASH2] [--build-id ] [--update-id ] [--open] [--environment ]
[--json --non-interactive]
ARGUMENTS
HASH1 If provided alone, HASH1 is compared against the current project's fingerprint.
HASH2 If two hashes are provided, HASH1 is compared against HASH2.
FLAGS
--build-id=... Compare the fingerprint with the build with the specified ID
--environment= If generating a fingerprint from the local directory, use the specified environment.
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--open Open the fingerprint comparison in the browser
--update-id=... Compare the fingerprint with the update with the specified ID
DESCRIPTION
compare fingerprints of the current project, builds, and updates
EXAMPLES
$ eas fingerprint:compare # Compare fingerprints in interactive mode
$ eas fingerprint:compare # Compare fingerprint against local directory
$ eas fingerprint:compare # Compare provided fingerprints
$ eas fingerprint:compare --build-id # Compare fingerprint from build against local directory
$ eas fingerprint:compare --build-id --environment production # Compare fingerprint from build against local directory with the "production" environment
$ eas fingerprint:compare --build-id --build-id # Compare fingerprint from a build against another build
$ eas fingerprint:compare --build-id --update-id # Compare fingerprint from build against fingerprint from update
$ eas fingerprint:compare --update-id # Compare fingerprint from update against provided fingerprint
```
## eas fingerprint:generate
Generate fingerprints from the current project.
```
USAGE
$ eas fingerprint:generate [-p android|ios] [--environment | -e ] [--json --non-interactive]
FLAGS
-e, --build-profile= Name of the build profile from eas.json.
-p, --platform=(android|ios)
--environment= Environment variable's environment, e.g. 'production', 'preview', 'development'
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
generate fingerprints from the current project
EXAMPLES
$ eas fingerprint:generate # Generate fingerprint in interactive mode
$ eas fingerprint:generate --build-profile preview # Generate a fingerprint using the "preview" build profile
$ eas fingerprint:generate --environment preview # Generate a fingerprint using the "preview" environment
$ eas fingerprint:generate --json --non-interactive --platform android # Output fingerprint json to stdout
```
## eas help [COMMAND]
Display help for eas.
```
USAGE
$ eas help [COMMAND] [-n]
ARGUMENTS
COMMAND Command to show help for.
FLAGS
-n, --nested-commands Include all nested commands in the output.
DESCRIPTION
Display help for eas.
```
## eas init
Create or link an EAS project.
```
USAGE
$ eas init [--id ] [--force] [--non-interactive]
FLAGS
--force Whether to create a new project/link an existing project without additional prompts or overwrite
any existing project ID when running with --id flag
--id= ID of the EAS project to link
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
create or link an EAS project
ALIASES
$ eas init
```
## eas init:onboarding [TARGET_PROJECT_DIRECTORY]
Continue onboarding process started on the https://expo.new website.
```
USAGE
$ eas init:onboarding [TARGET_PROJECT_DIRECTORY]
DESCRIPTION
continue onboarding process started on the https://expo.new website.
ALIASES
$ eas init:onboarding
$ eas onboarding
```
## eas login
Log in with your Expo account.
```
USAGE
$ eas login [-s]
FLAGS
-s, --sso Login with SSO
DESCRIPTION
log in with your Expo account
ALIASES
$ eas login
```
## eas logout
Log out.
```
USAGE
$ eas logout
DESCRIPTION
log out
ALIASES
$ eas logout
```
## eas metadata:lint
Validate the local store configuration.
```
USAGE
$ eas metadata:lint [--json] [--profile ]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr
--profile= Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json.
DESCRIPTION
validate the local store configuration
```
## eas metadata:pull
Generate the local store configuration from the app stores.
```
USAGE
$ eas metadata:pull [-e ]
FLAGS
-e, --profile= Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json.
DESCRIPTION
generate the local store configuration from the app stores
```
## eas metadata:push
Sync the local store configuration to the app stores.
```
USAGE
$ eas metadata:push [-e ]
FLAGS
-e, --profile= Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json.
DESCRIPTION
sync the local store configuration to the app stores
```
## eas new [PATH]
Create a new project configured with Expo Application Services (EAS).
```
USAGE
$ eas new [PATH] [-p bun|npm|pnpm|yarn]
ARGUMENTS
PATH Path to create the project (defaults to current directory)
FLAGS
-p, --package-manager=(bun|npm|pnpm|yarn) [default: npm] Package manager to use for installing dependencies
DESCRIPTION
Create a new project configured with Expo Application Services (EAS)
ALIASES
$ eas new
```
## eas onboarding [TARGET_PROJECT_DIRECTORY]
Continue onboarding process started on the https://expo.new website.
```
USAGE
$ eas onboarding [TARGET_PROJECT_DIRECTORY]
DESCRIPTION
continue onboarding process started on the https://expo.new website.
ALIASES
$ eas init:onboarding
$ eas onboarding
```
## eas open
Open the project page in a web browser.
```
USAGE
$ eas open
DESCRIPTION
open the project page in a web browser
```
## eas project:info
Information about the current project.
```
USAGE
$ eas project:info
DESCRIPTION
information about the current project
```
## eas project:init
Create or link an EAS project.
```
USAGE
$ eas project:init [--id ] [--force] [--non-interactive]
FLAGS
--force Whether to create a new project/link an existing project without additional prompts or overwrite
any existing project ID when running with --id flag
--id= ID of the EAS project to link
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
create or link an EAS project
ALIASES
$ eas init
```
## eas project:new [PATH]
Create a new project configured with Expo Application Services (EAS).
```
USAGE
$ eas project:new [PATH] [-p bun|npm|pnpm|yarn]
ARGUMENTS
PATH Path to create the project (defaults to current directory)
FLAGS
-p, --package-manager=(bun|npm|pnpm|yarn) [default: npm] Package manager to use for installing dependencies
DESCRIPTION
Create a new project configured with Expo Application Services (EAS)
ALIASES
$ eas new
```
## eas project:onboarding [TARGET_PROJECT_DIRECTORY]
Continue onboarding process started on the https://expo.new website.
```
USAGE
$ eas project:onboarding [TARGET_PROJECT_DIRECTORY]
DESCRIPTION
continue onboarding process started on the https://expo.new website.
ALIASES
$ eas init:onboarding
$ eas onboarding
```
## eas submit
Submit app binary to App Store and/or Play Store.
```
USAGE
$ eas submit [-p android|ios|all] [-e ] [--latest | --id | --path | --url ]
[--what-to-test ] [--verbose] [--wait] [--verbose-fastlane] [-g ] [--non-interactive]
FLAGS
-e, --profile= Name of the submit profile from eas.json. Defaults to "production" if defined in
eas.json.
-g, --groups=... Internal TestFlight testing groups to add the build to (iOS only). Learn more:
https://developer.apple.com/help/app-store-connect/test-a-beta-version/add-internal-
testers
-p, --platform=(android|ios|all)
--id= ID of the build to submit
--latest Submit the latest build for specified platform
--non-interactive Run command in non-interactive mode
--path= Path to the .apk/.aab/.ipa file
--url= App archive url
--verbose Always print logs from EAS Submit
--verbose-fastlane Enable verbose logging for the submission process
--[no-]wait Wait for submission to complete
--what-to-test= Sets the "What to test" information in TestFlight (iOS only).
DESCRIPTION
submit app binary to App Store and/or Play Store
ALIASES
$ eas build:submit
```
## eas update
Publish an update group.
```
USAGE
$ eas update [--branch ] [--channel ] [-m ] [--input-dir ] [--skip-bundler]
[--clear-cache] [--emit-metadata] [--rollout-percentage ] [-p android|ios|all] [--auto] [--private-key-path
] [--environment ] [--json --non-interactive]
FLAGS
-m, --message= A short message describing the update
-p, --platform=(android|ios|all) [default: all]
--auto Use the current git branch and commit message for the EAS branch and update message
--branch= Branch to publish the update group on
--channel= Channel that the published update should affect
--clear-cache Clear the bundler cache before publishing
--emit-metadata Emit "eas-update-metadata.json" in the bundle folder with detailed information about
the generated updates
--environment= Environment to use for the server-side defined EAS environment variables during
command execution, e.g. "production", "preview", "development"
--input-dir= [default: dist] Location of the bundle
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--private-key-path= File containing the PEM-encoded private key corresponding to the certificate in
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
certificate's directory. Only relevant if you are using code signing:
https://docs.expo.dev/eas-update/code-signing/
--rollout-percentage= Percentage of users this update should be immediately available to. Users not in the
rollout will be served the previous latest update on the branch, even if that update
is itself being rolled out. The specified number must be an integer between 1 and
100. When not specified, this defaults to 100.
--skip-bundler Skip running Expo CLI to bundle the app before publishing
DESCRIPTION
publish an update group
```
## eas update:configure
Configure the project to support EAS Update.
```
USAGE
$ eas update:configure [-p android|ios|all] [--environment ] [--non-interactive]
FLAGS
-p, --platform=(android|ios|all) [default: all] Platform to configure
--environment= Environment to use for the server-side defined EAS environment variables during
command execution, e.g. "production", "preview", "development"
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
configure the project to support EAS Update
```
## eas update:delete GROUPID
Delete all the updates in an update group.
```
USAGE
$ eas update:delete GROUPID [--json --non-interactive]
ARGUMENTS
GROUPID The ID of an update group to delete.
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
DESCRIPTION
delete all the updates in an update group
```
## eas update:edit [GROUPID]
Edit all the updates in an update group.
```
USAGE
$ eas update:edit [GROUPID] [--rollout-percentage ] [--branch ] [--json --non-interactive]
ARGUMENTS
GROUPID The ID of an update group to edit.
FLAGS
--branch= Branch for which to list updates to select from
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--rollout-percentage= Rollout percentage to set for a rollout update. The specified number must be an integer
between 1 and 100.
DESCRIPTION
edit all the updates in an update group
```
## eas update:list
View the recent updates.
```
USAGE
$ eas update:list [--branch | --all] [-p android|ios|all] [--runtime-version ] [--offset
] [--limit ] [--json --non-interactive]
FLAGS
-p, --platform=(android|ios|all) Filter updates by platform
--all List updates on all branches
--branch= List updates only on this branch
--json Enable JSON output, non-JSON messages will be printed to stderr.
--limit= The number of items to fetch each query. Defaults to 25 and is capped at 50.
--non-interactive Run the command in non-interactive mode.
--offset= Start queries from specified index. Use for paginating results. Defaults to 0.
--runtime-version= Filter updates by runtime version
DESCRIPTION
view the recent updates
```
## eas update:republish
Roll back to an existing update.
```
USAGE
$ eas update:republish [--channel | --branch | --group ] [--destination-channel |
--destination-branch ] [-m ] [-p android|ios|all] [--private-key-path ] [--rollout-percentage
] [--json --non-interactive]
FLAGS
-m, --message= Short message describing the republished update group
-p, --platform=(android|ios|all) [default: all]
--branch= Branch name to select an update group to republish from
--channel= Channel name to select an update group to republish from
--destination-branch= Branch name to republish to if republishing to a different branch
--destination-channel= Channel name to select a branch to republish to if republishing to a different
branch
--group= Update group ID to republish
--json Enable JSON output, non-JSON messages will be printed to stderr.
--non-interactive Run the command in non-interactive mode.
--private-key-path= File containing the PEM-encoded private key corresponding to the certificate in
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
certificate's directory. Only relevant if you are using code signing:
https://docs.expo.dev/eas-update/code-signing/
--rollout-percentage= Percentage of users this update should be immediately available to. Users not in the
rollout will be served the previous latest update on the branch, even if that update
is itself being rolled out. The specified number must be an integer between 1 and
100. When not specified, this defaults to 100.
DESCRIPTION
roll back to an existing update
```
## eas update:revert-update-rollout
Revert a rollout update for a project.
```
USAGE
$ eas update:revert-update-rollout [--channel | --branch | --group ] [-m ] [--private-key-path
] [--json --non-interactive]
FLAGS
-m, --message=