React Native
//
North American Retailer

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
React Native
Android
iOS
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.

//
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.

//
Numbers

Key highlights

6x
faster builds after replacing Jenkins with EAS
1.5x
more reliable builds with EAS
//
Hire us

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

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.