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.
Publishing your Project
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.
On iOS, you'll need to use Apple TestFlight to share your app with others.
Updating your App
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.
Deploying to the Apple App Store and Google Play
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.
Changing Native Code
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.