xref: /expo/docs/pages/submit/eas-json.mdx (revision f7a14300)
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 { BoxLink } from '~/ui/components/BoxLink';
8import { EasSubmitIcon } from '@expo/styleguide-icons';
9
10**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 need to switch between different configurations.
11
12## Production profile
13
14Running `eas submit` without specifying a profile name will use the `production` profile if it is already defined in **eas.json** to configure the submission.
15
16An example **eas.json** with `production` is shown below:
17
18```json eas.json
19{
20  "cli": {
21    "version": ">= 0.34.0"
22  },
23  "submit": {
24    "production": {
25      "android": {
26        "serviceAccountKeyPath": "../path/to/api-xxx-yyy-zzz.json",
27        "track": "internal"
28      },
29      "ios": {
30        "appleId": "[email protected]",
31        "ascAppId": "1234567890",
32        "appleTeamId": "AB12XYZ34S"
33      }
34    }
35  }
36}
37```
38
39## Multiple profiles
40
41The JSON object under `submit` can contain multiple submit profiles. Each profile under `submit` can have an arbitrary name as shown in the example below:
42
43{/* prettier-ignore */}
44```json eas.json
45{
46  "cli": {
47    "version": /* @info Required EAS CLI version range. */"SEMVER_RANGE"/* @end */,
48    "requireCommit": /* @info If true, ensures that all changes are committed before a build. Defults to false. */boolean/* @end */
49  },
50  "build": {
51    // EAS Build configuration
52    /* @hide ... */ /* @end */
53  }
54  "submit": {
55    /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_1"/* @end */: {
56      "android": {
57        /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */
58      },
59      "ios": {
60        /* @info iOS-specific configuration */...IOS_OPTIONS/* @end */
61      }
62    },
63    /* @info any arbitrary name - used as an identifier */"SUBMIT_PROFILE_NAME_2"/* @end */: {
64      "extends": "SUBMIT_PROFILE_NAME_1",
65      "android": {
66        /* @info Android-specific configuration */...ANDROID_OPTIONS/* @end */
67      }
68    },
69    /* @hide ... */ /* @end */
70  }
71}
72```
73
74You can use EAS CLI to pick up another `submit` profile by specifying it with a parameter. For example, `eas submit --platform iOS --profile submit-profile-name`.
75
76## Share configuration between `submit` profiles
77
78A `submit` profile can extend another profile using the `extends` key. For example, in the `preview` profile you may have `"extends": "production"`. This makes the `preview` profile inherit the configuration of the `production` profile.
79
80## Next step
81
82<BoxLink
83  title="EAS Submit schema reference"
84  description="Learn about available properties  for EAS Submit to configure and override their default behavior from within your project."
85  href="/eas/json/#eas-submit"
86  Icon={EasSubmitIcon}
87/>
88