Expo Go is intended to be a sandbox environment, and we recommend using development builds for any real, non-trivial app. The "Set up your environment" guide will help you get set up with a development build.
- First-time Expo developers: you are just getting started with Expo and React Native and you want to learn about it without installing any native tooling like Xcode or Android Studio, then Expo Go is a great way to get started in a matter of minutes.
- Experienced developers that want to quickly try out ideas: Expo Go is a great way to try out features of the Expo SDK without having to add the package and re-compile/build your native app. In a matter of seconds you can have a sandbox for the latest Expo SDK and React Native version, and you can play with the features and see how they work on your device.
- Use development builds instead of Expo Go when building an app for production: Development builds are a fully featured native development environment, the "Go" app is a limited sandbox environment. They are extremely easy to get started with (try it out with expo.new). The tradeoff made with the Expo Go app is that, in order for it to be extremely fast to get started with, it is also very limited in what you can do. It does not allow you to customize any native code or configuration. It will be updated on app stores as new SDK versions are released, and only supports a single SDK version at a time - so if you depend on it, then you will have to follow the SDK release cycle immediately in some cases (you can still install Expo Go for any SDK version on Android emulators, Android devices, iOS simulators, and we explain how to do that here: https://expo.dev/go). We recommend using development builds for any real app, and we explicitly do not support use cases where developers use Expo Go as their development environment for production applications. Learn more about Expo Go vs Development builds.
- Do not distribute your app to end-users through Expo Go: Expo Go is not intended to be used for distribution. We do not support this use case and relying on it as the distribution mechanism for your app will not be a reliable experience for your users. Distribute your apps through app stores or other typical native app distribution channels.
It can be stressful to move away from a tool that you're comfortable using. If you start with Expo Go, then switching to development builds could feel like you need to learn something entirely new. While there are certainly some new concepts to learn, you'll quickly find that it's actually very similar and much less difficult than you built it up to be! We encourage you lean on the documentation (such as the EAS Tutorial and Add custom native code guide) and take this step towards unlocking the potential for what you can build. You can think of it like taking the training wheels off of a bike, or finishing the tutorial level in a video game: when you move on from Expo Go to a development build, that's where the real fun begins.
We had to make the decision to support a single SDK version in Expo Go due to the reasons outlined in our SDK 50 blog post back in January, 2023. We understand that to some folks this may have been a disruptive change, and we are sorry for any inconvenience this has caused. We are confident that moving over to development builds for any non-trivial apps will be a better experience for everyone. We will continue to support Expo Go with a single SDK version, since this is the best way to quickly experience Expo and React Native for the first time and to experiment with different features in an isolated sandbox.
The cohort most impacted by the single-SDK-version in Expo Go change is developers who have depended on using a physical iOS device with the app store version of Expo Go to develop and run their iOS app, such as for a small personal or internal project. Now that Expo Go only supports the latest SDK version, you will need to update your app whenever a new SDK version is released. This is typically relatively straightforward in the context of apps that only run in Expo Go. But all of the other advice from above in this document still applies, and if stability is important for your app we recommend using development builds and preview builds / app store builds. This provides resiliency to SDK version changes (you can upgrade whenever you like or whenever the OS/store requires you to) when using development / preview builds. If you do not have an Apple Developer account already, then you will need to purchase one in order to be able to distribute to your physical iOS devices, or compile the app from a macOS device and sign with a development certificate (and builds will expire after 7 days when signed in this way).