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.
How to Gradually Migrate From React Native Community CLI to Expo
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.
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.
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.
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
- featureExpo: 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
- featureCNG: 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
- featureExpo 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
- featureExpo 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
- featureExpo 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
- featureEAS 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
- featureExpo 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
- featureExpo 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






