React Native CodePush: Fast OTA Updates

React Native CodePush: Fast OTA Updates Imagine: you find a critical bug in production — discount calculation rounds incorrectly. The fix is ready, but to reach users, it must pass App Store review, taking 24 hours to a week. Every hour of downtime costs money and nerves. CodePush solves this: th

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
React Native CodePush: Fast OTA Updates
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

React Native CodePush: Fast OTA Updates

Imagine: you find a critical bug in production — discount calculation rounds incorrectly. The fix is ready, but to reach users, it must pass App Store review, taking 24 hours to a week. Every hour of downtime costs money and nerves. CodePush solves this: the JavaScript bundle and resources update directly, bypassing stores. We integrate CodePush into React Native apps, ensuring correct configuration, safe rollout, and rollback in case of errors.

How CodePush Bypasses Store Review

A React Native app consists of a native host (Objective-C/Swift / Java/Kotlin) and a JS bundle. CodePush replaces the JS bundle and resources (images/, fonts/) without changing native code. Apple and Google allow such updates — provided the update does not fundamentally change app behavior (e.g., adding native permissions or altering distribution model). Our experience shows that proper CodePush setup saves teams weeks on fix delivery.

Why Choose CodePush Over Regular Updates

Compare: a standard App Store update takes 1–3 days, while CodePush delivers a patch in minutes — a 100x difference. Additionally, CodePush lets you test updates on a small user group before full rollout, reducing regression risk.

Criteria App Store / Google Play CodePush
Delivery time 1–3 days 2–5 minutes
Review required Yes No (for JS)
Rollback Only new release Automatic on crash
Audience control 100% at once Gradual (10% → 50% → 100%)

How We Set Up CodePush: A Real Case

Installation and integration for a typical project:

npm install react-native-code-push npx pod-install # iOS 

In AppDelegate.mm (iOS):

#import <CodePush/CodePush.h> - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; #else return [CodePush bundleURL]; #endif } 

In the main component:

import CodePush from 'react-native-code-push'; const App = () => { // ... component }; const codePushOptions = { checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME, installMode: CodePush.InstallMode.ON_NEXT_RESUME, mandatoryInstallMode: CodePush.InstallMode.IMMEDIATE, }; export default CodePush(codePushOptions)(App); 

InstallMode.ON_NEXT_RESUME applies the update on next resume, not interrupting the user. IMMEDIATE is only for critical mandatory updates.

Deployment via Fastlane

lane :codepush_staging do sh("appcenter codepush release-react \ -a MyOrg/MyApp-iOS \ -d Staging \ --description '#{ENV["CHANGELOG"]}' \ --target-binary-version '~1.2'") sh("appcenter codepush release-react \ -a MyOrg/MyApp-Android \ -d Staging \ --description '#{ENV["CHANGELOG"]}' \ --target-binary-version '~1.2'") end 

--target-binary-version '~1.2' is a semver expression. Only users with native version 1.2.x receive the update. If a new JS bundle uses a native module from 1.3, it cannot be pushed to 1.2.

Rollout Strategy: How to Avoid Problems

Never push CodePush to 100% audience immediately. AppCenter supports --rollout:

appcenter codepush release-react \ -a MyOrg/MyApp-iOS \ -d Production \ --rollout 10 

10% of users get the update. After 30 minutes, check Firebase Crashlytics — if crash rate hasn't increased, expand via AppCenter UI to 50% → 100%.

What's Included: Deliverables

CodePush setup includes:

What we do Result
Architecture analysis and dev environment prep Compatibility report, implementation plan
SDK integration and AppCenter configuration Working build with CodePush in Staging
Automation via Fastlane and CI Release scripts, pipeline in GitLab CI / GitHub Actions
Monitoring and alert setup AppCenter dashboard, Crashlytics integration
Documentation and team training Update release guide, rollout checklist

Work Stages

  1. Analysis (2–4 hours): audit current architecture, check CodePush compatibility, determine target binary versions.
  2. Design (2–4 hours): choose update check frequency, plan rollout and fallback.
  3. Integration (4–8 hours): SDK installation, AppCenter configuration, code changes for CodePush support.
  4. Automation (4–8 hours): Fastlane scripts, CI pipeline.
  5. Testing (2–4 hours): rollout on Staging, crash monitoring, rollback testing.
  6. Launch (1–2 hours): rollout to Production with gradual expansion.

Limitations and What Doesn't Work

CodePush cannot update:

  • Native code (Swift/ObjC/Kotlin/Java)
  • Native dependencies (adding a new pod or aar)
  • AndroidManifest.xml and Info.plist
  • Splash screen and app icon

If a PR touches native code, a standard store release is required. CodePush from Microsoft AppCenter is deprecated in favor of EAS Update (Expo). For non-Expo projects, we consider migrating to a custom code-push-server to maintain independence from AppCenter.

Monitoring Updates

AppCenter Deployments shows statistics: how many devices received the update, how many rolled back. Automatic rollback triggers on crash immediately after update — CodePush returns the previous bundle.

According to AppCenter documentation, CodePush uses progressive rollout to minimize risks.

Additional: What CodePush Actually Is CodePush is a cloud service that lets developers deploy mobile app updates directly to users' devices. It works with React Native and Cordova, replacing only web resources (JS, HTML, CSS, images).

Experience and Guarantees

We have 6 years of experience in React Native development. We've implemented CodePush for dozens of projects: fintech, marketplaces, social networks. We guarantee stable updates, fast rollback, and complete documentation. Contact us for a free consultation — we'll assess your project and suggest the optimal CodePush strategy. Order a turnkey setup and forget about long review waits.