1---
2title: Use a development build
3description: Learn how to use development builds for a project.
4sidebar_title: Use a build
5---
6
7import { Terminal } from '~/ui/components/Snippet';
8import ImageSpotlight from '~/components/plugins/ImageSpotlight';
9import { Tab, Tabs } from '~/ui/components/Tabs';
10import { BoxLink } from '~/ui/components/BoxLink';
11import { Collapsible } from '~/ui/components/Collapsible';
12
13Usually, creating a new native build from scratch takes long enough that you'll be tempted to switch tasks and lose your focus. However, with the development build installed on your device or an emulator/simulator, you won't have to wait for the native build process until you [change the underlying native code](#rebuild-a-development-build) that powers your app.
14
15## Add error handling
16
17Certain types of errors can provide more helpful error messages than the ones that ship by default with React Native. To turn this feature on, you need to import `expo-dev-client` at the top of the **App.{js|tsx}** file.
18
19```js App.js
20import 'expo-dev-client';
21```
22
23> This will only affect the application in which you make this change. If you want to load multiple projects from a single development app, you'll need to add this import statement to each project.
24
25## Start the development server
26
27To start developing, run the following command to start the development server:
28
29<Terminal cmd={['$ npx expo start --dev-client']} />
30
31To open the project inside your development client:
32
33- Press <kbd>a</kbd> or <kbd>i</kbd> keys to open your project on an Android Emulator or an iOS Simulator.
34- On a physical device, scan the QR code from your system's camera or a QR code reader to open the project on your device.
35
36## The launcher screen
37
38If you launch the development build from your device's Home screen, you will see your launcher screen, which looks similar to the following:
39
40<ImageSpotlight
41  alt="The launcher screen of a development build"
42  src="/static/images/dev-client/launcher-screen.png"
43  style={{ maxWidth: 600 }}
44/>
45
46If a bundler is detected on your local network, or if you've signed in to an Expo account in both Expo CLI and your development build, you can connect to it directly from this screen. Otherwise, you can connect by scanning the QR code displayed by the Expo CLI.
47
48## Rebuild a development build
49
50If you add a library to your project that contains native code APIs, for example, [`expo-secure-store`](/versions/latest/sdk/securestore/), you will have to rebuild the development client. This is because the native code of the library is not included in the development client automatically when installing the library as a dependency on your project.
51
52## Debug a development build
53
54When you need to, you can access the menu by pressing <kbd>Cmd ⌘</kbd> + <kbd>d</kbd> or <kbd>Ctrl</kbd> + <kbd>d</kbd> in Expo CLI or by shaking your phone or tablet. Here you'll be able to access all of the functions of your development build, any debugging functionality you need, or switch to a different version of your app.
55
56See [Debugging](/debugging/runtime-issue/) guide for more information.
57
58<Collapsible summary="Build locally with Android Studio and Xcode">
59
60> **warning** We do not recommend this method or modifying these **android** and **ios** directories directly, especially when creating a development build with EAS Build. For more information, see [Prebuild](/workflow/prebuild/).
61
62If you need to debug native code or you prefer to manage your native projects and run the locally before creating a development build, you can use `npx expo run` commands. You'll need to set up or have access to Android Studio, Xcode, and related dependencies on your local computer.
63
64The [`npx expo run` commands](/workflow/expo-cli/#compiling) will create a new build, install it on your emulator/simulator or device, and start running it.
65
66<Tabs tabs={["For Android", "For iOS (macOS Only)"]}>
67
68<Tab>
69
70To build and run on an emulator:
71
72<Terminal cmd={['$ npx expo run:android']} />
73
74To build and run on a connected device:
75
76<Terminal cmd={['$ npx expo run:android -d']} />
77
78</Tab>
79<Tab>
80
81To build and run on a simulator:
82
83<Terminal cmd={['$ npx expo run:ios']} />
84
85To build and run on a connected device:
86
87<Terminal cmd={['$ npx expo run:ios -d']} />
88
89</Tab>
90
91</Tabs>
92
93Running the above commands generates native source code in their corresponding **android** and **ios** directories.
94
95</Collapsible>
96
97## Next step
98
99<BoxLink
100  title="Share a development build with your team"
101  description="Learn how to install and share the development with your team or run it on multiple devices."
102  href="/develop/development-builds/share-with-your-team"
103/>
104