ArchiveExpo SnackDiscord and ForumsNewsletter

Integrating Expo tools into existing native apps

An overview of how you can integrate Expo tools into existing native apps ("brownfield" apps).

An existing native app that was built using another technology, whose main entry point is not a React Native view, is commonly referred to as a "brownfield" app. For example, if your app was built using UIKit and Swift, and you want to use React Native for a single screen then that is considered an "existing native app" and "brownfield".

In contrast, "greenfield" apps are created using Expo or React Native from the start or where React Native is the entry point and where all other UI branches off from.

By these definitions, if you have an "existing native app" for Android or iOS and you want to learn how to use Expo and React Native in your project (perhaps on a single screen or even a single feature), then this guide is for you.

Compatibility with existing native apps

Support for integrating Expo modules into existing native projects is still experimental. If you encounter issues, create an issue on GitHub. Not all features of the tools and services below will be available when used in the context of an existing native app.

Expo is primarily built with greenfield apps in mind. Not all Expo tools and services are compatible with existing native projects.

Tool/ServiceSupports brownfield?
Expo SDK - an extended standard library for React NativeYes
Expo Modules API - build native extensions using an idiomatic Swift/Kotlin APIYes
Expo Router - file-based routing and navigationNo
Expo CLI - tools to run and develop your app from your terminalNo
Expo Dev Client - adds in-app developer tooling to Debug buildsNo
EAS Build - a CI/CD service built specifically for Expo/React NativeYes
EAS Submit - a hosted service that uploads your app to storesYes
EAS Update - instant updates of your app JavaScript and assetsNo

Next steps

Integrating your first React Native view

Learn how to add a React Native root view to your existing native app in the React Native docs.

Install Expo modules

Install the Expo Modules API and use it to add existing Expo modules or write your own native extensions.