xref: /expo/docs/pages/build/setup.mdx (revision 4aaacb05)
1---
2title: Create your first build
3description: Learn how to create a build for your app with EAS Build.
4---
5
6import { Collapsible } from '~/ui/components/Collapsible';
7import { Terminal } from '~/ui/components/Snippet';
8import { Step } from '~/ui/components/Step';
9import { Tabs, Tab } from '~/ui/components/Tabs';
10
11EAS Build allows you to build a ready-to-submit binary of your app for the Google Play Store or Apple App Store. In this guide, let's learn how to do that.
12
13Alternatively, if you prefer to install the app directly to your Android device/emulator or install it in the iOS Simulator, we will point you toward resources that explain how to do that.
14
15For a small app, builds for Android and iOS platforms trigger within a few minutes. If you encounter any issues along the way, you can reach out on the [Expo forums](https://forums.expo.dev/) or [Discord](https://chat.expo.dev/).
16
17## Prerequisites
18
19EAS Build is a new and rapidly evolving service. Before you set out to create a build for your project we recommend consulting the [limitations](/build-reference/limitations) page and the other prerequisites below.
20
21<Collapsible summary="A React Native Android and/or iOS project that you want to build">
22
23Don't have a project yet? No problem. It's quick and easy to create a "Hello world" app that you can use with this guide.
24
25- Install Expo CLI by running the command:
26
27<Terminal cmd={['$ npm install -g expo-cli']} />
28
29- Run the following command to create a new project:
30
31<Terminal cmd={['$ npx create-expo-app my-app']} />
32
33EAS Build also works well with projects created by `npx create-react-native-app`, `npx react-native`, `ignite-cli`, and other project bootstrapping tools.
34
35</Collapsible>
36
37<Collapsible summary="An Expo user account">
38
39EAS Build is available to anyone with an Expo account, regardless of whether you pay for EAS or use our free tier. You can sign up at [https://expo.dev/signup](https://expo.dev/signup).
40
41Paid subscribers get quality improvements such as additional build concurrencies, priority access to minimize the time your builds spend queueing, and increased limits on build timeouts. Learn more about different plans and benefits at [EAS pricing](https://expo.dev/pricing).
42
43</Collapsible>
44
45<Step label="1">
46## Install the latest EAS CLI
47
48EAS CLI is the command-line app that you will use to interact with EAS services from your terminal. To install it, run the command:
49
50<Terminal cmd={['$ npm install -g eas-cli']} />
51
52You can also use the above command to check if a new version of EAS CLI is available. We encourage you to always stay up to date with the latest version.
53
54> We recommend using `npm` instead of `yarn` for global package installations. You may alternatively use `npx eas-cli@latest`, just remember to use that instead of `eas` whenever it's called for in the documentation.
55
56</Step>
57
58<Step label="2">
59## Log in to your Expo account
60
61If you are already signed in to an Expo account using Expo CLI, you can skip the steps described in this section. If you are not, run the following command to log in:
62
63<Terminal cmd={['$ eas login']} />
64
65You can check whether you are logged in by running `eas whoami`.
66
67</Step>
68
69<Step label="3">
70## Configure the project
71
72To configure an iOS or an Android project for EAS Build, run the following command:
73
74<Terminal cmd={['$ eas build:configure']} />
75
76If you'd like to learn more about what happens behind the scenes, you can read the [build configuration process reference](/build-reference/build-configuration).
77
78Additional configuration may be required for some scenarios:
79
80- Are you migrating an Expo managed app from `"expo build"`? [Learn about the differences](/build-reference/migrating).
81- Does your app code depend on environment variables? [Add them to your build configuration](/build-reference/variables).
82- Is your project inside of a monorepo? [Follow these instructions](/build-reference/build-with-monorepos).
83- Do you use private npm packages? [Add your npm token](/build-reference/private-npm-packages).
84- Does your app depend on specific versions of tools like Node, Yarn, npm, CocoaPods, or Xcode? [Specify these versions in your build configuration](/build/eas-json).
85
86</Step>
87
88<Step label="4">
89## Run a build
90
91### Build for Android Emulator/device or iOS Simulator
92
93The easiest way to try out EAS Build is to create a build that you can run on your Android device/emulator or iOS Simulator. It's quicker than uploading it to a store, and you don't need store developer membership accounts. If you'd like to try this, read about [creating an installable APK for Android](/build-reference/apk) and [creating a simulator build for iOS](/build-reference/simulators).
94
95### Build for app stores
96
97Before the build process can start for app stores, you will need to have a store developer account and generate or provide app signing credentials.
98
99Whether you have experience with generating app signing credentials or not, EAS CLI does the heavy lifting. You can opt-in for EAS CLI to handle the app signing credentials process. Check out the steps for [Android app signing credentials](#android-app-signing-credentials) or [iOS app signing credentials](#ios-app-signing-credentials) process below for more information.
100
101<Collapsible summary="Google Play Developer membership is required to distribute to the Google Play Store.">
102
103You can build and sign your app using EAS Build, but you can't upload it to the Google Play Store unless you have a membership, a one-time $25 USD fee.
104
105</Collapsible>
106
107<Collapsible summary="Apple Developer Program membership is required to build for the Apple App Store.">
108
109If you are going to use EAS Build to create release builds for the Apple App Store, you need access to an account with a $99 USD [Apple Developer Program](https://developer.apple.com/programs) membership.
110
111</Collapsible>
112
113After you have confirmed that you have a Google Play Store or Apple App Store account and decided whether or not EAS CLI should handle app signing credentials, you can proceed with the following set of commands to build for the platform's store:
114
115<Tabs tabs={['Android', 'iOS']}>
116  <Tab>
117    <Terminal cmd={['$ eas build --platform android']} />
118  </Tab>
119  <Tab>
120    <Terminal cmd={['$ eas build --platform ios']} />
121  </Tab>
122</Tabs>
123
124> You can attach a message to the build by passing `--message` to the build command, for example, `eas build --platform ios --message "Some message"`. The message will appear on the website. It comes in handy when you want to leave a note with the purpose of the build for your team.
125
126Alternatively, you can use `--platform all` option to build for Android and iOS at the same time:
127
128<Terminal cmd={['$ eas build --platform all']} />
129
130> If you have released your app to stores previously and have existing [app signing credentials](/distribution/app-signing) that you want to use, [follow these instructions to configure them](/app-signing/existing-credentials).
131
132#### Android app signing credentials
133
134- If you have not yet generated a keystore for your app, you can let EAS CLI take care of that for you by selecting `Generate new keystore`, and then you are done. The keystore is stored securely on EAS servers.
135- If you have previously built your app with `expo build:android`, you can use the same credentials here.
136- If you want to manually generate your keystore, please see the [manual Android credentials guide](/app-signing/local-credentials#android-credentials) for more information.
137
138#### iOS app signing credentials
139
140- If you have not generated a provisioning profile and/or distribution certificate yet, you can let EAS CLI take care of that for you by signing into your Apple Developer Program account and following the prompts.
141- If you have already built your app with `expo build:ios`, you can use the same credentials here.
142- If you want to rather manually generate your credentials, refer to the [manual iOS credentials guide](/app-signing/local-credentials#ios-credentials) for more information.
143
144</Step>
145
146<Step label="5">
147## Wait for the build to complete
148
149By default, the `eas build` command will wait for your build to complete, but you can interrupt it if you prefer not to wait. Monitor the progress and read the logs by following the link to the build details page that EAS CLI prompts once the build process gets started. You can also find this page by visiting [your build dashboard](https://expo.dev/builds) or running the following command:
150
151<Terminal cmd={['$ eas build:list']} />
152
153If you are a member of an organization and your build is on its behalf, you will find the build details on [the build dashboard for that account](https://expo.dev/accounts/[account]/builds).
154
155> **Did your build fail?** Double check that you followed any applicable instructions in the [configuration step](#3-configure-the-project) and refer to the [troubleshooting guide](/build-reference/troubleshooting) if needed.
156
157</Step>
158
159<Step label="6">
160## Deploy the build
161
162If you have made it to this step, congratulations! Depending on which path you chose, you now either have a build that is ready to upload to an app store, or you have a build that you can install directly on an Android device/iOS Simulator.
163
164### Distribute your app to an app store
165
166You will only be able to submit to an app store if you built specifically for that purpose. If you created a build for a store, [learn how to submit your app to app stores with EAS Submit](/submit/introduction).
167
168### Install and run the app
169
170You will only be able to install the app directly to your Android device/iOS Simulator if you explicitly built it for that purpose. If you built for app store distribution, you will need to upload to an app store and then install it from there (for example, from Apple's TestFlight app).
171
172To learn how to install the app directly to your Android device/iOS Simulator, navigate to your build details page from [your build dashboard](https://expo.dev/accounts/[account]/builds) and click the "Install" button.
173
174</Step>
175
176## Next steps
177
178We walked you through the steps for creating your first build with EAS Build without going into too much depth on any particular part of the process.
179
180When you are ready to learn more, we recommend proceeding through the **Start Building** section of this documentation to learn about topics such as:
181
182- [Configuration with eas.json](/build/eas-json)
183- [Internal distribution](/build/internal-distribution)
184- [Updates](/build/updates)
185- [Automating submissions](/build/automate-submissions)
186- [Triggering builds from CI](/build/building-on-ci)
187
188You may also want to dig through the reference section to learn more about the topics that interest you most, such as:
189
190- [Build webhooks](/eas/webhooks)
191- [Build server infrastructure](/build-reference/infrastructure)
192- How the [Android](/build-reference/android-builds) and [iOS](/build-reference/ios-builds) build processes work
193