Skip to content
CodeOnAir
← All posts

CodePush alternatives in 2026: EAS Update, self-hosting and hosted services

With App Center gone, React Native teams have three routes for over-the-air updates. A fair comparison of Expo EAS Update, self-hosted servers and hosted CodePush-style services.

CodeOnAir team25 October 20268 min read

Microsoft retired App Center, and its hosted CodePush service, on 31 March 2025. In May 2025 it archived both the react-native-code-push SDK and the standalone CodePush server on GitHub. Teams that still ship over-the-air updates for React Native now have three broad routes: Expo's EAS Update, running a server themselves, or a hosted CodePush-style service.

This post compares them fairly. Facts about other products come from their own pages and docs, checked on 25 October 2026, with links so you can check them again. Prices and limits change, so treat the numbers as a starting point.

What a CodePush replacement needs to do

Before comparing products, agree on the list. For most React Native teams it looks like this:

  • JavaScript and asset updates for Android and iOS, targeted at the native build they're compatible with.
  • Optional and mandatory updates, with control over when they install: on next start, on resume, or right away.
  • Staged rollouts: send a release to 10% or 20% of devices before everyone.
  • Rollback: automatic when an update crashes on start, and a manual "go back" when a release is bad.
  • A CLI that runs in CI, so releases come from your pipeline.
  • New Architecture and Hermes support, because the archived Microsoft SDK has neither on recent React Native versions.
  • A pricing unit you can predict: monthly active users, downloads or bandwidth.

Whatever you choose can only change JavaScript and assets. Native code, new native modules and permissions still go through the stores.

Option 1: Expo EAS Update

EAS Update is Expo's hosted update service. It delivers updates to apps that include the expo-updates library. According to Expo's docs, that includes Expo projects and "existing React Native projects" with expo-updates installed, so it isn't limited to managed Expo apps.

How it works, from Expo's documentation:

  • Updates only go to builds with a compatible runtime version, which changes when native code changes.
  • You publish to a channel and branch, for example eas update --channel production.
  • Rollouts: eas update --rollout-percentage=10 sends an update to a share of users, and eas update:edit changes the percentage (rollouts docs).
  • Going back: you can republish an earlier update, revert a rollout with eas update:revert-update-rollout, or send users back to the bundle embedded in their build with eas update:roll-back-to-embedded.

Pricing (expo.dev/pricing) is by monthly active users of updates: the Free plan includes 1,000 MAUs with no overage, Starter is $19 a month plus usage with 3,000 MAUs included, and Production is $199 a month plus usage with 50,000 MAUs included. Usage above that is billed per MAU on a sliding scale.

Good fit if: you're on Expo already, or happy to adopt expo-updates and the Expo tooling. It's a different SDK and workflow from CodePush, so plan for a migration rather than a key swap.

Option 2: Self-host a CodePush server

Microsoft's code-push-server

Before retiring App Center, Microsoft published a standalone CodePush server. Its README says it is "fully compatible with CodePush React Native Client SDK". The repository was archived on 20 May 2025, and Microsoft says the code is provided "as is" with no support. You can run it or fork it, but you take on its maintenance, and the client SDK it pairs with is archived too.

Hot Updater

Hot Updater describes itself as "a self-hostable OTA update solution for React Native (Alternative to CodePush)". It runs on your own infrastructure through pluggable adapters: its README lists storage on AWS S3, Supabase Storage, Cloudflare R2, Vercel Blob and Azure Blob Storage, and databases including Supabase, PostgreSQL and Cloudflare D1. It's MIT-licensed, with one added condition: if you offer its server or Console as a hosted service for other people's apps, you must show a "Powered by hot-updater" notice. Running it for your own apps needs no notice.

What self-hosting costs you

Self-hosting is free in licence fees, not in time. You own:

  • Storage and a CDN for bundle downloads, sized for release-day spikes.
  • Uptime for the update-check endpoint your apps call on every launch.
  • Security updates for the server, its dependencies and its access keys.
  • The release dashboard, metrics and rollback tooling your team will want on a bad day.

Good fit if: you have platform engineers, strict data-residency rules, or very high volume where infrastructure cost dominates.

Option 3: Hosted CodePush-style services

Several companies now run CodePush-style services. Here are three we could check, plus ours.

Revopush. Revopush describes itself as instant OTA updates for React Native with "seamless integration with the existing CodePush open-source SDK", and its blog announces a Revopush SDK for React Native 0.76 and later, including the New Architecture. Its pricing page lists a free Starter tier up to 1,000 MAU and paid tiers from $25 a month (Startup, up to 50,000 MAU).

Stallion. Stallion uses its own SDK, react-native-stallion, rather than the CodePush client, and publishes a CodePush migration guide. Its pricing page lists a free plan up to 10,000 MAU, a Pro plan up to 100,000 MAU, and enterprise and on-premise options.

Bitrise. Bitrise wrote in October 2026 about rebuilding CodePush as a hosted service, with a CLI, code signing and install metrics. The post doesn't list prices.

CodeOnAir CodePush. That's us, so weigh this accordingly. CodeOnAir CodePush has its own SDK, @codeonair/code-push-react-native, with the same API names as the original (sync, InstallMode, SyncStatus, the codePush(App) wrapper), so most JavaScript doesn't change. What it does:

  • Works with the Old and New Architecture (including bridgeless) and Hermes, on React Native 0.70 and later.
  • Four install modes, including ON_NEXT_SUSPEND to install while the app is in the background, and an option to bring the user back to the same screen after the restart.
  • Staged rollouts (-r 20), mandatory releases, automatic rollback when an update crashes before the app confirms it started, and rollback / patch commands.
  • A CLI that bundles, compiles Hermes bytecode and uploads; it runs in CI with an access key. The CLI is in beta.
  • Pricing by update downloads, not MAU: 5,000 a month on Free, 25,000 on Starter, 500,000 on Growth and 2,000,000 on Scale (pricing). The same workspace also covers deep links and push notifications.

It also has limits you should know about. There's one deployment per platform per app, not separate Staging and Production deployments; you'd use a second app for staging builds. Sign-ups are by invitation while we're onboarding teams. And we don't offer self-hosting.

Side by side

EAS Update Self-hosted (code-push-server, Hot Updater) Hosted CodePush-style (Revopush, Stallion, CodeOnAir…)
Client SDK expo-updates CodePush client (archived) or the project's own Varies: CodePush-compatible or the vendor's own
Who runs the servers Expo You The vendor
Staged rollouts Yes Depends on the server Varies: check each service
Pricing unit MAU Your infrastructure MAU, downloads or bandwidth
Migration effort from CodePush Higher: new SDK and workflow Low for code-push-server, more for others Low to medium
Best for Expo teams Teams with platform engineers Teams that want CodePush's model without running it

How to choose

Ask these in order:

  1. Are you on Expo, or willing to adopt expo-updates? If yes, EAS Update is the natural default, and it's well documented.
  2. Do you have people to run infrastructure, and a reason to? Data residency or very high volume can justify self-hosting. "It's free" usually doesn't, once you count on-call time.
  3. Otherwise, compare hosted services on your real numbers. Estimate monthly active users and releases per month, then price each option in its own unit. A service that charges per download costs more if you release daily; one that charges per MAU costs more if you have many users and release rarely.
  4. Test the bad day, not the happy path. Release an update that crashes on start to a test build. Check that it rolls back by itself, that the dashboard shows it, and that you can stop the release from the CLI.
  5. Check New Architecture support on your exact React Native version before you commit.

If you're moving from App Center specifically, our step-by-step migration guide shows the SDK swap, native changes and CLI commands. For background on the shutdown, see App Center is retired: what now.

FAQ

Is there an official replacement for App Center CodePush?

No. Microsoft published a standalone CodePush server and then archived it, with no support. Every option today is either Expo's EAS Update, a third-party hosted service, or something you run yourself.

Can I keep using react-native-code-push?

It still installs from npm, but the repository is archived and its README says it won't support the New Architecture. You'd need a compatible server and, sooner or later, your own fork of the SDK.

Does EAS Update work without Expo?

It needs the expo-updates library. Expo's docs say it works with existing React Native projects that install it, but you adopt part of the Expo toolchain.

Are over-the-air updates allowed by Apple and Google?

Both allow interpreted code such as JavaScript to be updated, as long as the update doesn't change the app's primary purpose. Native changes still need a store release.

Which is cheapest?

It depends on your user count and how often you release, because the pricing units differ. Work it out with your own numbers on each pricing page.

Try CodeOnAir CodePush

If a hosted service with the original CodePush API sounds right, read the CodePush overview and the quick start. Sign-ups are currently by invitation: request access.


Competitor details checked on 25 October 2026 against each product's own website, docs and GitHub pages linked above.

Your first AppLink in five minutes.

Create an app, pick a subdomain, and share a link that opens your app. Try Growth free for 30 days — no card needed.