Expo

Documentation

Common questions

In addition to the questions below, see the forums for more common questions and answers. Some of this information is repeated from earlier sections of the introduction but we include it here for comprehensiveness.

Is Expo similar to React for web development?

Expo and React Native are similar to React. You'll have to learn a new set of components (View instead of div, for example) and writing mobile apps is very different from websites; you think more in terms of screens and different navigators instead of separate web pages, but much more your knowledge carries over than if you were writing a traditional Android or iOS app.

What is the difference between Expo and React Native?

Learn more about this on the Already used React Native? page.

How much does Expo cost?

Expo tools are free to use and open source. You can view the source for the Expo SDK and client at https://github.com/expo/expo

How do you make money if Expo is free?

Just because you can run everything that Expo provides on your own hardware doesn't mean setting up and managing all of the services you need is the right fit for your team.
If that sounds like you, you can see what we offer at https://expo.io/developer-services

How do I add custom native code to my Expo project?

Managed Expo projects don't support custom native code, including third-party libraries which require custom native components. In a managed project, you only write JavaScript.
In our SDK, we give you a large set of commonly desired, high-quality native modules. We recommend doing as much in JavaScript as possible, since it can immediately deploy to all your users and work across both platforms, and will always continue to benefit from Expo SDK updates.
However, if you need something custom that isn't possible with the native modules provided in the SDK, like on-the-fly video processing or low-level control over the Bluetooth radio to do a firmware update and other features requested here, you can run expo eject and have full control over the underlying native projects.

How do I share my Expo project? Can I submit it to the app stores?

The fastest way to share your managed Expo project is to publish it. You can do this by clicking 'Publish' in Expo Dev Tools or running expo publish in your project. This gives your app a URL; you can share this URL with anybody who has the Expo client for Android and they can open your app immediately. Read more about publishing on Expo. To share with iOS users, you can use Apple TestFlight or sign up for the Priority Plan in order to share your app with teammates through the Expo client.
When you're ready, you can create a standalone app (.ipa and .apk) for submission to Apple and Google's app stores. Expo will build the binary for you when you run one command; see Building Standalone Apps. Apple charges $99/year to publish your app in the App Store and Google charges a $25 one-time fee for the Play Store.

How do I get my existing React Native project running with Expo?

Right now, the easiest way to do this is to use expo init (with Expo CLI) to make a new project, and then copy over all your JavaScript source code from your existing project, and then yarn adding the library dependencies you have.
If you have similar native module dependencies to what is exposed through the Expo SDK, this process shouldn't take more than a few minutes (not including npm install time). Please feel free to ask us questions if you run into any issues.
If you are using native libraries that aren't supported by Expo, you will either have to rewrite some parts of your application to use similar APIs that are part of Expo, or you just might not be able to get all parts of your app to work. Many things do though!

What version of Android and iOS are supported by Expo apps?

Expo supports Android 5+ and iOS 10+.