Migrating a legacy React Native app to Expo
We helped a client migrate a legacy React Native app to Expo, replacing slow Jenkins builds with fast, reliable EAS builds and simplifying their release process.


Outdated build setup and growing maintenance burden
The client wanted to speed up mobile app releases. A major bottleneck was their aging Jenkins CI setup running on a Mac Mini in the office. iOS builds often queued for over an hour, and any issues with the machine required someone physically present to reboot it, delaying the whole team.
Their app, built in React Native over six years ago, had accumulated legacy native code and outdated third-party modules. This technical debt made upgrades and releases increasingly difficult. The client decided it was time for a significant cleanup.
Migrating to Expo and enabling EAS builds across teams
We worked closely with client engineers to understand their existing Jenkins-based process, CI constraints, and native module setup. After a short technical discovery, we identified Expo SDK and EAS as the most practical solution to simplify builds, improve reliability, and move away from self-hosted infrastructure. Given the number of existing custom native modules, we proceeded without CNG.
Migration and cleanup
- Migrated from React Native CLI to Expo with minimal disruption to native code
- Used
expo-doctor
to audit and replace outdated packages with Expo-compatible alternatives - Replaced legacy modules like
react-native-inappbrowser-reborn
with Expo equivalents - Unified platform dependencies and cleaned up legacy scripts
EAS integration
- Enabled Android and iOS builds using EAS, reducing build time from ~60 minutes to ~10 per platform
- Simplified the development environment and replaced fragile scripts with Expo's tooling

Migration Strategy
A common misconception when migrating to Expo is that you need to go all-or-nothing on Expo tools and ecosystem. In reality, you can migrate step-by-step, e.g. first adding Expo Modules with their core infrastructure, then moving to Expo CLI (bare workflow), and then moving to full CNG (Continuous Native Generation) with custom config plugins if you use custom native code. To learn more, watch our webinar.
Modern build system and improved DX
The migration gave all teams access to EAS builds with minimal changes to the native codebase. Developers can now trigger builds reliably using eas build
, without relying on the complex Jenkins setup.
Based on 2 week data collection period after migration, this change increased build reliability from 63% to 97%, saving developers precious time on debugging flaky builds and running jobs more than once.
Switching to Expo Modules also improved long-term maintainability and allowed the client to deprecate several custom implementations, addressing the need for easier React Native upgrades.
Key highlights
Need React or React Native
expertise you can count on?
We’ve spent years building full-stack, cross-platform apps and solving tough technical challenges. How can we help you?

How we’ve solved similar challenges
See more examples of how we solve architecture, performance, and scale challenges with tailored React and React Native solutions.