Go to content

React Native OTA Updates with Codemagic: From Days to Hours

Techpoint.
7 Sep 2026
main image

1. Introduction

In today's React Native development landscape, users expect quick delivery of bug fixes and new features. A typo, a broken UI, or, even worse, a crash are just some of the issues that users can notice quickly. Their patience is limited and their expectations are high, which makes waiting days for a fix no longer acceptable. Given the traditional app store release process, which consists of manual builds and long review times, increasing the speed of the deployment cycle has become a must-have rather than a nice-to-have.

At Codepoint, we rely on two tools to close that gap: Codemagic's Continuous Integration and Continuous Delivery (CI/CD) pipeline, and Over-the-Air (OTA) updates through RevoPush. This case study explores how we use them in our React Native projects, and why.

2.

The Problem with Traditional React Native Releases

 

Before bringing Codemagic into our workflow, we handled releases by hand: triggering builds, signing the app, and uploading the resulting binary to App Store Connect or Google Play Console ourselves. This approach carried real potential for human error, a missing environment variable, a wrong signing certificate, a wrong version number, and so on. It also introduced inconsistency and "it works on my machine" failures.

On top of that, every release, even a tiny fix, still had to go through the full app store submission and review cycle with Apple and Google, which could take anywhere from a few hours to several days to reach approval. This applied even to small fixes or changes that didn't touch native code at all, like a UI tweak.

3.

The Solution: Codemagic and OTA Updates for React Native

The problem we were solving showed up on two fronts: releases depended on manual steps prone to human error, and even the smallest fix had to go through the same queue as a major release. To fix this, we brought in two different kinds of tools, one that automates the release process itself, and one that gives non-native fixes a way around the review process: CI/CD and OTA updates.

 

 

3.1 Building React Native Apps with Codemagic

 

Continuous Integration and Continuous Delivery (CI/CD) is the practice of building and testing an app in a consistent, repeatable way, then preparing it for release, rather than doing all of that by hand. Codemagic is one of the CI/CD platforms available, built with mobile development in mind, which is important because React Native has its own headaches, like signing certificates, provisioning profiles, and platform-specific steps.

Codemagic can start builds automatically or manually with a click of a button, and it also supports automated tests to catch bugs early, before a build is sent to App Store Connect or Google Play Console. At Codepoint, we push to a branch and start the builds ourselves from the Codemagic dashboard rather than triggering them automatically. Even without the automatic side, the difference is still significant. What used to be a sequence of fallible steps now happens in one consistent environment, replacing a long manual process with a click.

This solves half the problem. It doesn't touch on the other issue: the review queue itself, which can take a disproportionate amount of time relative to the size of the change.

 

 

3.2 Delivering React Native Updates Over-the-Air

 

Over-the-Air (OTA) is a wireless delivery method that lets a React Native app already installed on a user's device fetch and apply updates to its JavaScript bundle and assets straight from a server, without going through Apple or Google's review process. A traditional store update replaces the entire binary, but OTA doesn't touch that side of things at all, it's limited to the parts of the app that live outside the native layer.

The experience is almost invisible on the user's side. The app checks for a newer bundle and applies it, and depending on how the update is configured, this can happen quietly in the background or prompt the user to restart if the update is marked as mandatory.

Several platforms handle this for React Native. For teams working with Expo, EAS Update is a common choice, but at Codepoint we use RevoPush instead, because it offers a cost-effective alternative to other OTA solutions.

Together, these two pieces fix the problem described earlier. Codemagic takes the manual work and human error out of how a release gets built and shipped. RevoPush gives our non-native fixes a way to reach users without going through the review queue from Apple or Google, turning what used to take days into hours.

4.

System Architecture

 

 

4.1 Two Separate Flows

 

We use two separate flows depending on whether a change touches native code:

The OTA flow applies to non-native code changes. We publish directly through RevoPush, with mandatory/optional configuration, and the update reaches users' devices directly.

The Codemagic flow applies to changes that do touch native code. We start a build manually from the Codemagic dashboard, and once it's done, it's submitted to the App Store or Google Play, where it waits for review before becoming available to users.

The flow used depends mainly on whether the change touches native code, a native change always has to go through the store. Bundle size matters too, OTA updates work best for small and incremental changes.

 

 

4.2 Tools and Services

 

Our setup includes a Git host like GitHub or GitLab for source control, Codemagic for builds, and RevoPush for the OTA flow.

 

 

4.3 Environment Structure

 

This structure isn't unique to Codemagic or OTA, but it's still worth outlining here since it's where both flows ultimately operate:

Development: our own developer build of the app for testing changes before they move further down the pipeline.

Staging: where our testers get access, this is where we send OTA updates for testing before anything reaches real users.

Production: what real users interact with, where the release goes out through the OTA flow or the Codemagic flow.

5.

Results and Challenges

 

 

5.1 Results

 

Ever since adopting this setup, we've noticed faster deployments, with release cycles lasting hours instead of days for non-native changes. Developer productivity has increased, since less time goes into release logistics and more into actual coding. We've also seen a better user experience, since fewer users are stuck running buggy versions of the app. And we've been able to deploy more frequently, since the cost and risk of releasing a small change has dropped significantly.

 

 

5.2 Challenges

 

The approach isn't free of limitations. OTA can only be used for non-native changes, so SDK upgrades, new native packages, and so on, still require a store release. We're also dependent on Codemagic's availability and on keeping our pipeline configuration correct, and we've had to be deliberate about how we manage the two flows together, to avoid shipping broken code.

6.

Why This Matters for React Native Teams

Combining Codemagic and Over-the-Air updates addressed the two biggest issues in our traditional React Native release cycle: the manual, error-prone build-and-submit process, and the unpredictable app store review queue. Together, they've removed the hassle of manually building and deploying new versions and cut the time it takes for users to see a UI fix from days to hours. The result is a fast-feedback development cycle with our users having a better experience.

If your team is weighing up CI/CD and OTA options for a React Native app, or dealing with slow release cycles on your current setup, we're happy to talk through what would fit your project.

author image
Ana CarvalhoMobile Engineer
Share
More interesting articles
related post image
Techpoint.
Clearing the Browser's Cache: How and Why?
related post image
Techpoint.
The World at Your Fingertips: The Impact of Mobile Applications in the Business Landscape
related post image
Techpoint.
Mobile Apps: the difference between hybrid and native development
Share
We use our own cookies to offer you a better experience. To find out what cookies we use and how to disable them, read the cookie policy. By ignoring or closing this message, and unless you have disabled cookies, you are agreeing to their use on this device.
Accept
Know more