1--- 2title: Configuring EAS Submit with eas.json 3sidebar_title: Configuration with eas.json 4--- 5 6import EasJsonPropertiesTable from '~/components/plugins/EasJsonPropertiesTable'; 7 8import submitAndroidSchema from '~/scripts/schemas/unversioned/eas-json-submit-android-schema.js'; 9import submitIosSchema from '~/scripts/schemas/unversioned/eas-json-submit-ios-schema.js'; 10 11**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. 12 13**eas.json** looks something like this: 14 15```json 16{ 17 "cli": { 18 "version": ">= 0.34.0" 19 }, 20 "submit": { 21 "production": { 22 "android": { 23 "serviceAccountKeyPath": "../path/to/api-xxx-yyy-zzz.json", 24 "track": "internal" 25 }, 26 "ios": { 27 "appleId": "[email protected]", 28 "ascAppId": "1234567890", 29 "appleTeamId": "AB12XYZ34S" 30 } 31 } 32 } 33} 34``` 35 36The 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`. 37 38The schema of this file looks like this: 39 40{/* prettier-ignore */} 41```json 42{ 43 "cli": { 44 "version": /* @info Required EAS CLI version range. */"SEMVER_RANGE"/* @end */, 45 "requireCommit": /* @info If true, ensures that all changes are committed before a build. Defults to false. */boolean/* @end */ 46 }, 47 "build": { 48 // EAS Build configuration 49 ... 50 } 51 "submit": { 52 /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_1"/* @end */: { 53 "android": { 54 /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */ 55 }, 56 "ios": { 57 /* @info iOS-specific configuration */...IOS_OPTIONS/* @end */ 58 } 59 }, 60 /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_2"/* @end */: { 61 "extends": "SUBMIT_PROFILE_NAME_1", 62 "android": { 63 /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */ 64 } 65 }, 66 ... 67 } 68} 69``` 70 71If you're also using EAS Build, [see how to use **eas.json** to configure your builds](/build/eas-json.mdx). 72 73### Sharing configuration between profiles 74 75Submit 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. 76 77## Android-specific options 78 79<EasJsonPropertiesTable schema={submitAndroidSchema} /> 80 81## iOS-specific options 82 83<EasJsonPropertiesTable schema={submitIosSchema} /> 84