React Native

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.

6x
faster builds after replacing Jenkins with EAS
A major North American retailer with thousands of locations serves both individual customers and commercial businesses. Its success depends on fast product discovery, reliable inventory visibility, and a seamless omni-channel experience at scale.
Industry
Retail
Date
2024
Size
Enterprise
//
Challenge

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.

//
Numbers

Key highlights

6x
faster builds after replacing Jenkins with EAS
1.5x
more reliable builds with EAS
//
Our Work

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
Expo SDK equivalent is better maintained and has nice API to work with

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.

//
Results

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.

//
testimonial

Outdated build setup and growing maintenance burden

 at 
//
services

Expertise we brought to this project

That’s how we made this project successful. Learn more about each service and how it can support your team.

Migration to React Native

Plan and execute a migration from native or hybrid stacks to React Native with minimal disruption and clear technical direction.

Code Sharing

Implement effective code-sharing strategies across all platforms to accelerate shipping and reduce code duplication.

React Native Development

Hire expert React Native engineers to build, scale, or improve your app, from day one to production.

//
our work

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.