WhoBuilt

How to Gradually Migrate From React Native Community CLI to Expo

Aug 6, 2025· 1 h 20 min· 938 views·Watch on YouTube

Speakers

Keith, who works in developer success at Expo, explains how to migrate a React Native Community CLI app gradually in a Callstack webinar hosted by Mike.

Adopt Expo one step at a time

Keith frames Expo as a set of tools and services that teams can adopt on their own timetable. Installing the Expo package is the prerequisite; teams can choose among SDK packages, development builds, EAS services, Continuous Native Generation, and Expo Router based on their needs.

Add Expo modules and development builds

Keith recommends starting with `npx install-expo-modules`, which automates the native project changes for many default apps. Expo CLI commands can replace equivalent React Native CLI commands, and Expo modules add lifecycle hooks for native packages. Expo Dev Client lets a team share a debug build so developers can run JavaScript changes from a local server without installing Xcode or Android Studio on every machine.

Adopt EAS services independently

Keith walks through EAS Build, EAS Update, and EAS Workflows, noting that teams can use EAS Update without building through EAS Build. EAS Update uses the open Expo Updates protocol, while channels, branches, and rollout tools are part of the EAS service. Workflows can check native fingerprints and reuse compatible builds to run JavaScript updates and tests without rebuilding each time.

Move to CNG and Expo Router when ready

Continuous Native Generation treats iOS and Android folders as generated output, with app configuration and config plugins describing native customizations. Keith says teams should inventory existing changes and move custom code into plugins; this can be harder when native modifications are undocumented. Expo Router can provide deep links and a path to web, but migrating a production app may require changes across many screens.

Takeaways

  • Install Expo modules first, then prioritize migration steps by the problem your team needs to solve.
  • Use `npx install-expo-modules` to automate setup, and check custom native files if the script cannot handle them.
  • EAS Update does not require EAS Build; existing build infrastructure can remain in place.
  • Inventory native customizations before adopting CNG, and encode them in app configuration or config plugins.
  • Treat Expo Router as a separate migration decision, especially when an app has many existing screens.

Mentioned in this talk

Search inside this talk

What was claimed 11

  • feature
    Expo: An Expo app is a React Native app with the Expo package installed; teams can adopt additional Expo tools on their own timetable.
    “it's a React Native app that has the Expo package installed”
    YouTube
    Unverified1 source· Talk
  • feature
    CNG: Generates native projects from a base template, app configuration, and installed native packages.
    “It takes a base template, applies your configuration, and automatically adds any other native packages”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Updates: Publishes JavaScript updates over the air without requiring a new store binary for each update.
    “you can update your JavaScript over the air in just a few minutes”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Dev Client: Creates development builds that can connect to different development servers or published updates.
    “it can take this QR code—or this URL—as input and run from any dev server”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Web Browser: Replaced React Native InAppBrowser Reborn in the host's project and reduced the URL-opening configuration from seven properties to three.
    “now we just need three”
    YouTube
    Unverified1 source· Talk
  • feature
    EAS Workflows: Combines build and update jobs with other jobs into custom workflows.
    “lets you stitch together EAS Build jobs, EAS Update jobs, and other companion jobs”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Application Services Build: Builds apps in the cloud and can be paired with submission to app stores.
    “That command queues a build job on the EAS cloud, then queues a submit job”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Updates: Can be implemented on custom servers, allowing apps to request updates from a configured URL.
    “You can implement it on your own servers”
    YouTube
    Unverified1 source· Talk
Show all 11 facts

Related talks