Comparisons

React Native OTA Update Tools Compared (2026)

A current comparison of hosted CodePush replacements, Expo-centered, managed, and self-hosted React Native OTA options in 2026.

14 min read

Written by Founder and maintainer of Bundle Drop

Microsoft retired the hosted App Center CodePush service on March 31, 2025, as described in its App Center retirement notice. Teams comparing CodePush alternatives for React Native in 2026 can choose Expo EAS Update, CodePush-compatible managed services, other managed OTA platforms, or self-hosted infrastructure.

This comparison is intended to help a team create a shortlist. It is not a ranking, and it does not assume that every product uses the same definition for a rollout, rollback, patch, active user, or successful install. Those details matter more than whether a feature appears in a pricing table.

The options below are representative rather than exhaustive. The comparison includes products with a documented React Native production path and enough public information to verify their integration and release-control model. Product behavior and plans were checked against first-party documentation on October 14, 2026. Verify current limits, platform support, and contract terms with each provider before making a production decision.

Disclosure: I am the founder of Bundle Drop, one of the products discussed below. Links point to first-party documentation so the comparison can be checked independently.

The short version

  • If EAS already owns the release workflow, start with Expo EAS Update.
  • If minimizing a CodePush migration matters most, compare Bitrise CodePush, DeployPulse, Codemagic CodePush, AppsOnAir CodePush, and Revopush.
  • If the team wants another managed SDK and promotion workflow, compare React Native Stallion and Bundle Drop against the exact controls it needs.
  • If infrastructure ownership or customization is a requirement, evaluate Codemagic Patch, Hot Updater, or the standalone CodePush server.

The strongest fit depends on the workflow you already have and the responsibilities you want to own. If the first decision is managed versus self-hosted rather than a named product, start with Managed vs Self-Hosted OTA.

CodePush alternatives and React Native OTA tools compared

OptionOperating modelIntegration and migration shapeDocumented release controlsPricing or ownership shape
Expo EAS UpdateManaged service around the open-source Expo Updates client and protocolAdopt expo-updates, EAS CLI, runtime versions, channels, and branchesPer-update or branch rollouts; rollback to a previous or embedded updateHosted usage includes MAU and edge-bandwidth meters
Bitrise CodePushManaged CodePush service in Bitrise Release ManagementBitrise CodePush SDK and CLI for React Native or Expo, with iOS and Android deploymentsPercentage rollout, promotion, rollback, delta delivery, and optional code signingPublic tiers measure MAU, data transfer, and storage
DeployPulseManaged CodePush-compatible serviceCodePush-shaped SDK, deployment keys, CLI, and Expo configurationTarget binary versions, percentage rollout, signing, and plan-dependent automatic rollbackCheck current hosted plan limits and terms with DeployPulse
Codemagic CodePushManaged CodePush service within CodemagicCodePush SDK, deployment keys, familiar Staging and Production deploymentsTarget binary versions, percentage rollout, promotion, and rollbackChoice of successful-install or fixed-MAU pricing
AppsOnAir CodePushManaged CodePush-style serviceCodePush-shaped CLI and release workflowTarget binary version, percentage rollout, rollback, and code signingCheck the current commercial plan with AppsOnAir
React Native StallionManaged OTA cloud, with self-hosting offered on a separate On-Premise planAdopt the Stallion SDK, CLI, dashboard, and promotion workflowPercentage rollout, pause, rollback, adoption reporting, and plan-dependent patch deliveryPublic plans combine MAU and bandwidth allowances
RevopushManaged CodePush-compatible serviceExisting CodePush-style deployments and SDK compatibility, with Revopush toolingPercentage rollout, server and client rollback, signing, and release analyticsPublic plans combine MAU and egress allowances
Hot UpdaterOpen-source, self-hosted, plugin-based stackAdopt the Hot Updater client and configure database, storage, and related pluginsStable percentage or custom cohorts, channels, rollback, bundle diffing, and archive fallbackSoftware plus the infrastructure and operational work the team owns
Codemagic PatchOpen-source, self-host-first OTA service, with managed deployment offered commerciallyAdopt the Patch client, CLI, dashboard, fingerprinting, and a new native integrationStaging and Production deployments, rollout, signing, binary patches, and full-bundle fallbackOperate its server, database, storage, and CDN or arrange managed hosting
Standalone CodePush serverArchived, self-hosted CodePush serverPreserve the CodePush protocol and operate the server, storage, and delivery pathClassic deployments, target binary ranges, rollout, promotion, and rollbackUnsupported software plus infrastructure, maintenance, security, and on-call ownership
Bundle DropManaged OTA service for supported Expo and bare React Native workflowsAdopt the Bundle Drop SDK and CLI with explicit per-platform runtime versions and channelsStable percentage cohorts, property targeting, newest-first fallthrough, dashboard rollback, and local crash protectionCapacity-oriented plans without an MAU meter

The table summarizes documented concepts, not semantic equivalence. For example, two products may both offer percentage rollout while using different identity, fallthrough, or recovery rules. Run a release through a test binary before treating any two controls as interchangeable.

Expo EAS Update

EAS Update is the hosted path around Expo's update client and protocol. It works with Expo projects and can be integrated into React Native Community CLI projects after Expo modules and the required Metro configuration are added. Expo's getting-started documentation covers both project shapes.

Compatibility is expressed through runtimeVersion. Hosted workflows add channels and branches, with per-update and branch rollouts for gradual exposure. Expo also documents rollback to a previous update or the embedded update. Its bundle diffing requires SDK 55 or later, is enabled by default from SDK 56, and keeps embedded-bundle baseline diffing experimental and opt-in at the time of this review.

This option fits especially well when a team already uses EAS Build and wants builds, credentials, and updates inside the same product family. Teams should still model how channels map to branches, how runtime versions are derived, and how MAU and bandwidth usage behave at their scale.

CodePush-compatible managed services

CodePush-compatible services reduce migration distance for applications already using deployment keys, target binary versions, and the CodePush client workflow. Compatibility is valuable, but it should be validated against the exact React Native versions, New Architecture configuration, signing requirements, and CI commands used by the application.

Bitrise CodePush

Bitrise offers a hosted CodePush product inside Release Management, with its own maintained SDK and CLI for React Native and Expo. Its CodePush overview documents the hosted operating model, New Architecture and Expo support, and tiers measured by MAU, data transfer, and storage.

The Bitrise CodePush CLI supports push, promotion, rollback, and release metadata changes. Current documentation also covers delta delivery and code signing; signed delta updates are reconstructed and verified as the complete package before installation.

This option is a natural candidate for teams already using Bitrise release workflows or teams that want a managed CodePush-shaped path. Confirm how its SDK migration, Expo configuration, signing keys, and current MAU, data-transfer, and storage limits fit the existing application before choosing it only from the headline tier.

DeployPulse

DeployPulse describes itself as a managed hosted replacement built around the CodePush protocol. Its React Native SDK guide covers bare React Native and Expo setup with a CodePush-shaped API, while its quickstart keeps separate Staging and Production deployments and supports promotion-oriented release workflows.

The service documents optional public-key code signing and a paid automatic rollback feature based on success and failure reports from the client. That makes it relevant when preserving familiar CodePush client behavior is more important than adopting a new runtime or channel model. Test the exact SDK fork, server URL migration, signing behavior, and low-traffic rollback thresholds in the production application.

Codemagic CodePush

Codemagic documents the familiar split between iOS and Android applications, Staging and Production deployments, deployment keys, and the CodePush SDK. Its production controls include release promotion, target app versions, percentage rollout, and rollback.

It remains a practical candidate for teams already using that hosted service or teams that want a small conceptual change from App Center CodePush. Its public pricing documentation offers both successful-install and fixed-MAU approaches, so the appropriate comparison depends on release frequency and fleet activity.

Codemagic now also publishes Codemagic Patch, a separate open-source rebuild with a new client, CLI, protocol, and self-host-first operating model. Do not treat migrating to Patch as a server-URL change for the hosted CodePush SDK.

AppsOnAir CodePush

AppsOnAir exposes a CodePush-style release CLI with target binary versions, percentage rollout, mandatory-release behavior, and rollback. Its CodePush FAQ also documents deployment metrics and code signing.

This path is worth evaluating when preserving the existing CodePush mental model is a priority. Confirm the current SDK compatibility matrix, support arrangement, hosting terms, and plan limits directly during evaluation.

Revopush

Revopush documents CodePush SDK compatibility, hosted deployments, New Architecture and Expo integration, rollout, rollback, signing, and CI/CD integrations. Its newer delivery model can build a diff against the bundle embedded in an IPA, APK, or AAB rather than requiring a previous OTA release as the only patch baseline; the Revopush 2.0 documentation explains that model.

It fits teams that want a CodePush-shaped migration and managed service while placing substantial weight on differential delivery and release analytics. Current public plans use MAU and egress allowances, which should be modeled using real bundle sizes and expected adoption.

React Native Stallion

Stallion uses its own SDK, CLI, dashboard, and release-promotion workflow. Its documentation covers percentage-based phased rollout, pause and rollback, release-adoption reporting, signing, and patch generation.

That makes it a candidate for teams that are comfortable changing the client integration in exchange for a managed workflow with built-in testing and promotion concepts. Its public pricing combines MAU and bandwidth allowances across hosted plans, with a separate On-Premise option. Stallion's current patch setup guide lists SDK 2.4 or later and a Pro or Enterprise plan as requirements.

Do not assume that a phased rollout behaves identically across providers. Stallion documents how it evaluates the latest and previous eligible release and how its user identifier affects cohort membership. Compare those rules with the release history your team expects to keep active.

Codemagic Patch, Hot Updater, and self-hosted CodePush

Codemagic Patch is a self-hosted OTA stack with a React Native client and Expo plugin, CLI, dashboard, server, release worker, database, and object-storage path. Its delivery model uses pre-generated manifests, supports patch or full-bundle references, and verifies signed release state when a public key is configured. Codemagic's launch article also says a managed deployment can be arranged for teams that do not want to operate it themselves.

Patch is distinct from Codemagic's hosted CodePush product. It fits teams that want a current open-source stack and accept a new client integration, or teams that want Codemagic to operate that newer stack under a commercial arrangement.

Hot Updater is a plugin-based open-source system. Teams choose and configure providers for the control plane and artifacts, integrate the client, and operate the resulting stack. Its current rollout documentation covers stable percentage and custom cohorts. During bundle diffing, the client verifies base, patch, and final-output hashes and can fall back to the complete archive; optional RSA-SHA256 signing authenticates delivered artifacts.

Microsoft created the standalone CodePush server to preserve the established model after App Center's retirement, then archived the repository in May 2025. It is read-only, provided as-is, and has no Microsoft support. Its familiar protocol may still matter to a large installed base, but the team owns the server, data stores, artifact delivery, security maintenance, monitoring, backups, and compatibility with mobile clients that cannot be upgraded on demand.

Self-hosting is a sound choice when infrastructure control, data location, or customization is a requirement and the platform team is prepared to own the complete release path. It is not automatically the lower-cost path once maintenance and incident response are included.

Bundle Drop

Bundle Drop uses explicit, per-platform runtime versions to separate native compatibility lanes. Managed publishing makes release eligibility a server decision. Within a matching project, channel, platform, and runtime lane, published releases are considered newest-first; a device excluded by property rules or its stable rollout bucket can fall through to an older eligible release.

Property targeting accepts typed values supplied by the application, such as a beta flag, subscription tier, or country. These values narrow delivery eligibility; they are not an authorization boundary. The exact OR matching behavior, stable install buckets, and fallthrough sequence are documented in How staged rollouts, targeting, and rollback fit together.

Delivery may use an optimized patch or a verified full bundle without changing which release is eligible. Dashboard rollback changes future selection, while native crash protection can return a device to a previously working bundle when a newly activated update repeatedly fails to become healthy. The integration guides cover installation, managed publishing, and rollback.

Bundle Drop is a reasonable shortlist candidate when a team wants these selection semantics, maintains Expo or bare React Native applications, or wants to avoid pricing tied directly to audience size. It is not the natural answer for a team committed to the Expo Updates protocol, for an organization that must self-host the service, or for an application that needs to retain its existing CodePush client without a native integration change.

How to choose without overfitting to a feature matrix

Start with the constraints that would make an option unsuitable:

  1. Client and runtime compatibility. Confirm the exact React Native or Expo versions, JavaScript engine, old or New Architecture setup, and native entrypoints used by the production application.
  2. Migration distance. Decide whether preserving CodePush concepts is important or whether adopting a new client, protocol, and runtime model is acceptable.
  3. Release selection. Test channels, runtime matching, staged cohorts, targeting, promotion, pause, and the fallback behavior when a device does not qualify for the newest release.
  4. Recovery. Separate server rollback from on-device protection after a bad bundle has already been activated. Test both with a deliberately failing release.
  5. Artifact delivery and trust. Measure the full first update as well as later patches. Verify signing authority, integrity, interrupted downloads, missing baselines, and full-bundle fallback. React Native OTA Security separates publisher authentication, artifact verification, compatibility, and health.
  6. Observability. Confirm that downloads, installs, active bundle identity, failures, and rollback outcomes can be tied to one release.
  7. Cost and ownership. Model MAU, successful installs, bandwidth, retained artifacts, seats, support, and self-hosted operating work using the application's actual release pattern.

For the end-to-end mechanics behind these questions, see React Native OTA Updates: How Production Delivery Works. It provides a provider-neutral test model for compatibility, delivery, activation, observation, and recovery.

A practical evaluation sequence

Choose two or three candidates, then use the same small test application and acceptance criteria for each:

  1. Integrate the production client into iOS and Android release builds.
  2. Publish a harmless JavaScript and asset change to an internal track.
  3. Confirm exact native compatibility, artifact identity, and source-map handling.
  4. Expand a partial rollout and verify that the same installations remain in the cohort.
  5. Exclude a device from the newest release and observe the documented fallback behavior.
  6. Interrupt a download, corrupt a test artifact if the setup permits it, and confirm the current bundle remains active.
  7. Activate a deliberately failing update, exercise local recovery, then perform a server-side rollback.
  8. Estimate a year of service or infrastructure cost using realistic release sizes, frequency, and audience growth.

The result should be a written operating decision, not only a vendor score. Record which system owns compatibility, which team owns incidents, what evidence allows a rollout to advance, and how a bad release is removed from both future selection and already-affected devices.

Common questions

What replaced Microsoft App Center CodePush?

There is no single Microsoft-hosted replacement. Current CodePush alternatives include hosted CodePush-compatible services, Expo EAS Update, managed platforms with their own clients, and self-hosted systems. The appropriate path depends on migration distance, release controls, and infrastructure ownership.

Does EAS Update work with bare React Native or React Native CLI?

Yes. Expo documents EAS Update integration for React Native Community CLI projects after Expo modules, Expo CLI and Metro configuration, and the required native entrypoint changes are added. It is not limited to applications created with Expo tooling.

Is there an open-source or self-hosted CodePush alternative?

Yes. Hot Updater is a current plugin-based self-hosted option. Expo's update client can also target a custom server implementing its protocol. Microsoft's standalone CodePush server remains available as archived, unsupported source for teams prepared to maintain it.

Which OTA tools support React Native's New Architecture and Hermes?

Several providers document support, but this should not be reduced to one universal checkmark. Validate the exact React Native or Expo version, Hermes build inputs, Bridgeless configuration, native entrypoints, and release build used by the application. Support boundaries change as React Native evolves.

Can a React Native OTA update change native code?

No. An OTA release can replace compatible JavaScript and assets that the installed binary already knows how to run. Native modules, permissions, entitlements, JavaScript-engine changes, and generated native configuration require a new binary.

How do React Native OTA services charge?

Current models include MAU, successful installs, bandwidth or egress, retained storage, plan capacity, enterprise contracts, and the infrastructure cost of self-hosting. Model the application's real update size, frequency, fleet activity, and retention rather than comparing only the entry price.

Where can a team subscribe to a hosted CodePush replacement?

Bitrise CodePush, DeployPulse, Codemagic CodePush, AppsOnAir CodePush, and Revopush document hosted CodePush-shaped services. They differ in SDK fork, Expo and New Architecture support, signing, rollback, pricing units, and support terms, so validate the production binary rather than choosing only from protocol compatibility.

What are the main alternatives to DeployPulse?

For a similar hosted CodePush-shaped path, compare Bitrise CodePush, Codemagic CodePush, AppsOnAir CodePush, and Revopush. Expo EAS Update and managed platforms such as Stallion or Bundle Drop require a different client and release model. Codemagic Patch, Hot Updater, and standalone servers move infrastructure ownership toward the application team.

Which React Native OTA services support Expo and bare apps?

EAS Update can be integrated into Expo and React Native Community CLI projects through Expo modules. Bitrise, DeployPulse, Revopush, Stallion, Codemagic Patch, Hot Updater, and Bundle Drop each document Expo and bare React Native paths, but their config plugins, native entrypoints, protocols, and runtime models are not interchangeable.

About the author

Founder and maintainer of Bundle Drop

George builds Bundle Drop and writes about the compatibility, delivery, rollout, and recovery boundaries behind React Native OTA updates.

GitHub profile

Interested in safer OTA deployments?

Read the implementation guides or connect a React Native project when you are ready to test the release workflow.