--- title: Configuring EAS Submit with eas.json sidebar_title: Configuration with eas.json --- import EasJsonPropertiesTable from '~/components/plugins/EasJsonPropertiesTable'; import submitAndroidSchema from '~/scripts/schemas/unversioned/eas-json-submit-android-schema.js'; import submitIosSchema from '~/scripts/schemas/unversioned/eas-json-submit-ios-schema.js'; **eas.json** is your go-to place for configuring EAS Submit (and [EAS Build](/build/eas-json.mdx)). It is located at the root of your project next to your **package.json**. Even though **eas.json** is not mandatory for using EAS Submit, it makes your life easier if you'll need to switch between different configurations. **eas.json** looks something like this: ```json { "cli": { "version": ">= 0.34.0" }, "submit": { "production": { "android": { "serviceAccountKeyPath": "../path/to/api-xxx-yyy-zzz.json", "track": "internal" }, "ios": { "appleId": "john@turtle.com", "ascAppId": "1234567890", "appleTeamId": "AB12XYZ34S" } } } } ``` The JSON object under the `submit` key can contain multiple submit profiles. Every submit profile can have an arbitrary name. If you run `eas submit` without a profile name specified and you have the `production` profile defined in **eas.json**, it'll be used to configure your submission. If you'd like EAS CLI to pick up another submit profile, you need to specify it with a parameter, e.g. `eas submit --platform ios --profile foobar`. The schema of this file looks like this: {/* prettier-ignore */} ```json { "cli": { "version": /* @info Required EAS CLI version range. */"SEMVER_RANGE"/* @end */, "requireCommit": /* @info If true, ensures that all changes are committed before a build. Defults to false. */boolean/* @end */ }, "build": { // EAS Build configuration ... } "submit": { /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_1"/* @end */: { "android": { /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */ }, "ios": { /* @info iOS-specific configuration */...IOS_OPTIONS/* @end */ } }, /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_2"/* @end */: { "extends": "SUBMIT_PROFILE_NAME_1", "android": { /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */ } }, ... } } ``` If you're also using EAS Build, [see how to use **eas.json** to configure your builds](/build/eas-json.mdx). ### Sharing configuration between profiles Submit profiles can extend another submit profile using the `"extends"` key. For example, in the `preview` profile you may have `"extends": "production"`; this would make the `preview` profile inherit configuration of the `production` profile. ## Android-specific options ## iOS-specific options