Skip to content
useffect.sh
Book 30 min with a senior
Tooling

Expo Go

Expo’s sandbox app, with a fixed set of native modules: for learning and prototyping, not for shipping.

Definition

Expo Go is Expo’s Android and iOS app, a sandbox for discovering React Native. It bundles a fixed set of native modules (those of the Expo SDK) and loads your project’s JavaScript from the Metro dev server, so you can test an app on your phone without Xcode or Android Studio. The trade-off is that it cannot include any native code that is not already inside: no third-party native library, no custom module, no change to Info.plist or the manifest. Expo describes it as a playground app, limited and not suited to production projects; the next step is a development build, which is your own app with expo-dev-client. Each Expo Go release supports a single SDK, and on iPhone the App Store stops at SDK 54: for recent SDKs, Expo goes through sign.expo.dev or TestFlight. You meet Expo Go at the very start of a project, and then when leaving it.

In a real app

The sign that a project stayed on Expo Go too long is a dependency list chosen to “work in Expo Go” rather than on merit: a pure-JavaScript storage library where MMKV is the obvious choice, a web map in a WebView, an analytics SDK wired through its REST API. Moving to a development build takes two commands (npx expo install expo-dev-client then npx expo run:ios) and opens the whole native ecosystem; there is no reason to delay it past the first week.

The other pitfall is version drift. Each Expo Go build matches a given SDK version; a project one version behind no longer opens in it, and on the App Store Expo Go stops at SDK 54. A “project is incompatible with this version of Expo Go” message means the project needs upgrading, or that it is time for a development build.

In an audit, a project with no expo-dev-client, no native folders, and no EAS build profile has never been compiled on its own. That has to be dealt with before any store conversation, because the first compile always surfaces something: bundle identifier, icons, permissions, signing.

Sources

All 35 glossary terms

One of these is blocking your app?

30 minutes with a senior to look at the problem in your code. Free.