Guides
Plan-enterprise-icon
Expo Application Services
API Reference

Expo Go

Learn about Expo Go, the free, open-source client for developing and testing React Native apps on Android and iOS.


Expo Go is a free, open-source client for testing React Native apps on Android and iOS without needing to build anything locally. It is available on the App Store and Google Play.

With Expo Go, you can test your projects on your device faster than ever, and share those projects with your whole team without the need for additional code signing.

How it works

Expo Go is a native app that is installed on your device. When you run npx expo start in your project, Expo CLI starts a development server and generates a QR code. You can then open the Expo Go app on your device and scan the QR code to connect to the dev server.

Terminal
npx expo start
Expo Go connecting to Expo CLI

The dev server returns a JSON manifest file that describes the project. Expo Go uses this manifest to download the JavaScript bundle and any assets required to run the project. Then, the JavaScript engine executes this JavaScript bundle to render the React Native app.

You can open and share projects with the members of your organization by publishing with EAS Update. Updates are bundled for production environments using the npx expo export command.

Terminal
eas update

Production

Expo Go is not intended for public distribution. It is a development client that is not optimized for performance. We offer a suite of tools for building and submitting your apps directly to the app stores. For more information, see Distribution.

Manifest

The manifest is similar to an index.html on the web. It is served from the root URL / and allows downloading the project script code from bundleUrl. The manifest can be customized using the Expo config (app.json, app.config.js). Additional fields like icon and splash can be used to customize how Expo Go or expo-dev-client presents the app.

{
  "name": "My New Project",
  "entryPoint": "index.js",
  "bundleUrl": "http://localhost:19000/index.bundle?platform=ios"
}

The manifest is also used when publishing your app with EAS Update.

SDK Versions

Expo Go uses SDK versions that map to a major release of the expo and the Expo Go app. You can see the supported SDK versions in the Expo Go app by navigating to the settings page.

We release a new SDK version approximately every quarter. Find out which versions of React Native map to which versions of the Expo SDK.

Custom native code

Each version of the Expo Go app supports three to four versions of React Native and the Expo SDK. This enables you to get up and running fast without performing a native build. However, if you need to use custom native code, you will need to use a custom client. For more information, see development builds.

Projects with custom native code can still partially use Expo Go.

Implementation

Expo Go is a React Native app that uses Expo SDK, CLI, EAS Build, and EAS Update. It is built with the same tools you use to create your apps.

You can view the source code for the Android, iOS, and JavaScript on GitHub.

You can create your own Expo Go-type app by using the expo-dev-client package. This package allows you to create a native client with any custom native code or configuration.

  • Message-iconAsk a question on the forums
  • Edit-iconEdit this page

Was this doc helpful?