xref: /expo/docs/pages/submit/eas-json.mdx (revision dfd15ebd)
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