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

Expo

The open-source framework React Native recommends: a native module SDK, a CLI, prebuild, Expo Router, and the EAS cloud services.

Definition

Expo is an open-source framework for building React Native apps on Android, iOS, and the web. It consists of the expo package and its SDK (a set of native modules tested together and versioned by SDK number), Expo CLI (which manages dependencies, compiles the native apps, and runs the dev server), Expo Router for navigation, and prebuild, which generates the native projects from configuration. Alongside it, Expo Application Services (EAS) groups the hosted cloud services for building, submitting, and updating apps. Since 2024, the React Native documentation recommends starting every new project with a framework, and Expo is the one it names. It installs into nearly any existing React Native project, and every piece is optional. As of October 2026 the current SDK is 58, based on React Native 0.88. You meet Expo as soon as you create an app, read app.json, or pick a native module.

In a real app

The most common confusion, still today, is believing Expo restricts access to native code. That was true in the days of the “managed workflow” and Expo Go; the managed/bare distinction no longer exists. A modern Expo project is a React Native project whose android and ios folders are generated by npx expo prebuild, and into which you add any native library or your own Swift/Kotlin module. Projects with committed native folders are still fine; you only lose automatic regeneration.

What matters in an audit: the SDK version (the expo field in package.json, then npx expo-doctor), the gap between installed versions and expected ones (npx expo install --check), and whether the native folders are generated or hand-maintained. An SDK three versions behind costs far more to catch up than upgrading on each release, because every SDK also brings its React Native version and architecture changes. The SDK 58 changelog mentions, for instance, the new Expo Go limited to SDK 58, precompiled expo-modules-core binaries on Android, and the split of Expo’s iOS sources into Swift Package Manager targets.

EAS is separate: a hosted service with its own pricing, usable without the expo package. A project can use Expo without EAS (local builds or a home-grown CI) or EAS without Expo.

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.