Guides
Plan-enterprise-icon
Expo Application Services
API Reference

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.
Triangle-down-icon
What is Expo used for?
Expo is an open-source framework for apps that run natively on Android, iOS, and the web. Expo brings together the best of mobile and the web and enables many important features for building and scaling an app like live updates, instantly sharing your app, and web support. The expo npm package brings these features to any React Native project. Learn more about what Expo offers.
Triangle-down-icon
Do companies use Expo?
Yes, Expo is used by top companies worldwide, serving hundreds of millions of end users. See our showcase to learn more.
Triangle-down-icon
Is Expo Go open source?
Yes, the source for Expo Go can be found in the expo/expo GitHub repository in the home, ios, and android directories. The Expo Go app is also built with Expo and React Native!
Triangle-down-icon
Who created Expo?
Expo and Expo Application Services (EAS) are developed by 650 Industries. 650 Industries is a California-based company that was founded by Charlie Cheever and James Ide.
Triangle-down-icon
Why does Expo have its own SDK?
When Expo was first created, React Native had yet to be publicly released. This means there were no third-party packages. To make the developer experience of React Native reasonable, we created several libraries to achieve common functionalities. Many of these libraries have since been forked and modified to meet various needs. We welcome users to mix and match whichever custom native code they need to make their app great.
The Expo SDK is well tested, written in TypeScript, documented, and built for Android, iOS, and the web. Every module in the Expo SDK works together to ensure versioning always matches. This creates a nice upgrading experience.
The Expo SDK is also written with the Expo native API to make contributing, maintaining, and understanding easier.
Triangle-down-icon
Can I use Expo with this web library?
Many popular web packages such as three.js or Firebase work with Expo and React Native. Check out the Expo examples to learn more.
Triangle-down-icon
Can I use Expo with my native library?
You can use native iOS and Android libraries with Expo by creating a custom native module with Swift and Kotlin. Many popular libraries already have custom native modules. Check out our React Native directory to learn more.
Triangle-down-icon
Is Expo similar to React for web development?
Expo is a framework for React Native, which is a library for building iOS and Android apps. React Native is similar to react-dom for web development, enabling you to run React on a particular platform, but it has a few key differences:
  • React Native does not support HTML or CSS.
  • Instead of using the DOM, React Native uses native components. For example, <View /> instead of <div />. Native components are more performant than the DOM and provide a much nicer user experience.
  • Unlike React.js which has access to browser APIs, React Native uses custom native APIs. For example, instead of navigator.geolocation, you use expo-location to access the user's location. Custom native APIs are similar to browser APIs except you have full control over them. This means you can access new features before they are available in the browser.
In the same way React.js frameworks help users create larger websites with ease, Expo helps users create larger apps with ease. Expo provides a suite of well-tested React Native modules that run on Android, iOS, and the web. Expo also provides a suite of tools for building, deploying, and updating your app.
Triangle-down-icon
What is the difference between Expo and React Native?
The expo package provides a suite of features that make it easier to develop, and scale complex React Native applications. You can install expo in nearly any React Native app. The expo package is not required to use Expo Application Services or React Native, but it is highly recommended. Learn more about what Expo offers.
Triangle-down-icon
Do I need to switch from React Native to use Expo?
No, the expo npm package and CLI work with any React Native app. Expo Application Services also works with all React Native apps with first-class support for builds, updates, app store submissions, and more.
Triangle-down-icon
How much does Expo cost?
The Expo platform is free and open source. This includes the libraries that make up the Expo SDK and the Expo CLI used for development. The Expo Go app, the easiest way to get started, is also free from the app stores.
Expo Application Services (EAS) is an optional suite of cloud services for React Native apps, from the Expo team. EAS makes it easier to build your app, submit it to the stores, keep it updated, send push notifications, and more. You can use EAS for free if the Free tier quotas are sufficient for your app. More information is available on the pricing page.
Triangle-down-icon
How do I add custom native code to my Expo project?
To use any custom native code, you can create a development build. We do recommend using the modules in the Expo SDK when possible for easier upgrades and improved developer experience.
Triangle-down-icon
Can I use Expo in my app that I created with React Native CLI?
Yes! All Expo tools and services work great in any React Native app. For example, you can use any part of the Expo SDK, expo-dev-client and EAS Build, Submit, and Update — they work great! Learn more about installing expo in your project, adopting prebuild, and setting up EAS Build.
Triangle-down-icon
How do I share my Expo project? Can I submit it to the app stores?
The fastest way to share your project is to publish with EAS Update and launch in a development build. This gives your app a URL; you can share this URL with anybody who has the Expo Go app for Android or the development build for iOS or Android.
When ready, you can create a production build (.ipa and .aab) to submit to the app stores. You can build your app in a single command with EAS Build and submit it to the stores with EAS Submit.
You can also use internal distribution to share your app with ad-hoc or enterprise provisioning on iOS and an APK on Android.
Triangle-down-icon
Can I develop iOS apps on a Windows computer?
Traditionally you needed a Mac to develop iOS apps, but you can use EAS Build to build your app in the cloud. You can also use EAS Submit to submit your app to the stores. Testing can be done on a physical iOS device using Expo Go or a development build.
Triangle-down-icon
What version of Android and iOS are supported by the Expo SDK?
Expo SDK supports Android 5+ and iOS 13+.
Triangle-down-icon
What are the disadvantages of Expo?
Expo adds features and functionality to React Native projects, with very minimal overhead. You can use any custom native code with Expo by creating a development build. We offer a local and cloud solution for creating development builds.
Previously Expo had large native binary sizes and didn't support custom native code without "ejecting". These issues went away in December 2020 when we released EAS Build which supports any React Native app. The concept of "ejecting" was replaced by the popular Expo Prebuild feature which has been around since SDK 41 (April 2021). The expo eject command was fully deprecated in Expo SDK 46 (August 2022).
Triangle-down-icon
What happens when you eject Expo?
Expo eject was replaced by the popular npx expo prebuild command which continuously generates native projects for you based on the libraries in your project and the Expo config (app.json). Learn more in the Expo Prebuild documentation.
Unlike the expo eject library, authors can configure their libraries to work with Expo Prebuild by creating a config plugin. This means you can use any library with Expo Prebuild. You can also use any custom native code with Expo Prebuild by creating a development build.
Triangle-down-icon
Should I use Expo CLI or React Native CLI?
Expo CLI can be used simultaneously with React Native CLI. Expo CLI provides the same core functionality as React Native CLI, and additional functionality like automatic TypeScript setup, web support, auto installing compatible libraries, improved native build commands, tunneling, prebuild, and more.
Regardless of which CLI you use, you can use any part of the Expo SDK and Expo Application Services with your project.

Up next

The time has come to write some code. First, we need to install a couple of tools. Continue to Installation to get started.
  • Message-iconAsk a question on the forums
  • Edit-iconEdit this page

Was this doc helpful?