Project Lifecycle

Expo makes it easy to get started writing apps, but Expo can also take your project all the way to production. Here's an overview of the tools and services you might use along the way.
This guide is meant to give a high-level explanation of what Expo offers. For the curious, the technical implementation of these topics is covered in way more detail here.

You can create a new Expo project with only our desktop tool and a text editor. See Up and Running for a fast guide to creating a project, running it on a device, and making changes.
Expo apps are React Native apps. The fastest way to get started is using the Up and Running guide, but you can also convert an existing React Native app or use a project that was generated by create-react-native-app.

When you work on an Expo project, we serve an instance of your project from your local computer. If you close the project or turn off your computer, your development project stops being served.
During this time, you test your project using a pre-built iOS/Android app called Expo client. It asks your computer for a local copy of your project (via localhost, LAN, or a tunnel), downloads it, and runs it. You can take advantage of various development tools such as debugging, streaming device logs, inspecting elements, hot module reloading, and more.

If you click the Publish button in Expo Dev Tools, we upload a minified copy of your app to our CDN, and give you a shareable url of the form expo.io/@your-username/your-app-slug.
You can share this link immediately with anybody who has the Expo client app for Android. Read more about Publishing here.
On iOS, you'll need to use Apple TestFlight to share your app with others.

You can continue making changes locally without disrupting your users. Any time you Publish changes to your app, your new version becomes available immediately to anybody with the link.
We frequently release updates to the Expo SDK. Each update includes instructions for how to upgrade your project. If you decide to update to a newer version of our SDK, copies of the older version will continue to work fine. Users will download the newest copy that their client supports.

When you're ready to list your app officially on the Apple App Store and Google Play Store, Expo can generate deployment-ready .ipa and .apk archives which are ready to submit to Apple and Google. We generate them on our servers, so you still don't need any Apple or Google software. See the documentation about Distributing Apps.

You can take your app all the way to the App Store and Play Store while writing only JS. However, if you run into special advanced needs which aren't covered by Expo, we provide the ability to eject to ExpoKit, which is a native Xcode and Android Studio representation of your Expo project.
Note: If you choose to eject to ExpoKit, some Expo services are no longer available. For example, we can't generate standalone builds for you any more. You'll need to manage the native builds yourself.