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