CodePush alternatives in 2026#
Microsoft retired App Center, and CodePush with it, on 31 March 2025. If your React Native app still ships updates through CodePush, or you are choosing an over-the-air (OTA) update service for the first time, this page lists the options that exist today, grouped by the situation each one fits best.
Rollbird publishes this page and is one of the options. It is listed last, and the sections below say where another service is the better or cheaper choice. Every competitor price links to the vendor's public pricing page and was checked in October 2026. Prices in this category change often, so confirm them before you commit.
What happened to CodePush#
Facts checked in October 2026:
- App Center retired on 31 March 2025. After that date you can no longer sign in or make API calls, and CodePush was retired with the rest of App Center (Microsoft: App Center retirement).
- Only Analytics and Diagnostics continue, and Microsoft extended them to the end of March 2027 in an update dated 15 April 2026. CodePush is not part of that extension (same page).
- Microsoft's standalone CodePush server is archived. Microsoft pointed CodePush users to a self-hostable code-push-server repository. It is now read-only; its archive notice was committed on 20 May 2025.
- The
react-native-code-pushclient SDK is archived too. The repository was archived the same day, and its README states that it won't support the New Architecture, which React Native enables by default from 0.76.
So "CodePush" today means one of three things: a hosted service that keeps the CodePush client API, a CodePush server you run yourself, or a different OTA system with its own SDK.
Which alternative fits#
| Your situation | Look at first |
|---|---|
| The app is built with Expo and you use EAS Build | EAS Update |
| You want to keep the CodePush client API and stay free under 100,000 monthly active users | Bitrise CodePush |
| Bundles and update traffic must stay on your own infrastructure | Hot Updater, Codemagic Patch, or a self-hosted CodePush server |
| You want a hosted CodePush-compatible service with plans by MAU | Revopush, AppZung, Codemagic CodePush |
| You want a hosted service with its own SDK and a free tier to 10,000 MAU | Stallion |
| You want a flat monthly price that doesn't grow with users, for bare React Native or Expo | Rollbird |
What each costs at 10K, 100K and 1M users#
Monthly list price at three sizes of app, in the currency each vendor publishes, checked October 2026. MAU means monthly active users as each vendor defines it. Each figure is the cheapest combination of a published plan and its published per-user overage; bandwidth and storage overage are excluded. The last column says whether an app moving off CodePush has to adopt a different client SDK.
| Service | 10K MAU | 100K MAU | 1M MAU | SDK change from CodePush? |
|---|---|---|---|---|
| EAS Update | $54 | $449 | $3,774 | Yes: expo-updates (and Expo modules in a bare app) |
| Bitrise CodePush | $0 | $0 | $1,111 (Bitrise's comparison) | No: the CodePush client API |
| Revopush | $25 | $75 | $500 | Small: Revopush's CodePush-compatible SDK |
| AppZung | €20 | €110 | €900 | Small: CodePush-compatible, per AppZung |
| Stallion | $0 | $64 | Custom | Yes: Stallion's own SDK |
| Codemagic CodePush | $1 per 2,500 installs | $1 per 2,500 installs | $990 | Small: the @code-push-next CodePush fork |
| Self-hosted (Hot Updater, Codemagic Patch, CodePush server) | Your infrastructure | Your infrastructure | Your infrastructure | Depends on the project |
| Rollbird | $0 or $7 | $0 or $7 | $0 or $7 | Yes: @rollbird/react-native |
How the figures are worked out:
- EAS Update: Starter $19 plus 7,000 MAU over its 3,000 at $0.005 is $54. Production $199 plus 50,000 MAU over its 50,000 at $0.005 is $449. At 1M, Production adds graduated tiers ($0.005, then $0.00375, then $0.0034 per MAU) for $3,774. The EAS Update pricing guide shows each step.
- Bitrise CodePush: the Basic plan is free up to 100,000 MAU and doesn't need a paid Bitrise CI plan. Pro starts at $294 a month; the 1M figure is from Bitrise's own comparison page.
- Revopush: Startup is $25 for 50,000 MAU. At 100K, Startup plus 50,000 extra users at $1 per 1,000 ($75) is cheaper than Growing ($100). At 1M, Professional is $500.
- AppZung: Development is €20 for 10,000 MAU plus €1 per 1,000 after that, so €110 at 100K. At 1M, Production is €400 for 500,000 MAU plus €1.5 per 1,500 MAU, so €900.
- Stallion: Free covers 10,000 MAU and allows no overage. Pro is $64 a month ($51 a month billed yearly) for 100,000 MAU. Above that it is a custom Enterprise plan.
- Codemagic CodePush: pay-as-you-go bills successful installs, not MAU, so the cost depends on how often you ship. The fixed plan starts at $990 a month for 1M MAU.
- Rollbird: price doesn't depend on users. Free costs $0 for one app and three production releases a month; Indie costs $7 a month for three apps and unlimited production releases. Team ($15) and Studio ($29) add apps, storage and seats, not users.
Where Rollbird is not the cheapest: under 100,000 MAU Bitrise CodePush costs $0, and under 10,000 MAU Stallion's free plan costs $0 too. If you ship more than three production updates a month, Rollbird costs $7 there. Rollbird's price advantage starts around 100,000 MAU and grows from there.
EAS Update: for Expo-first teams#
EAS Update is Expo's hosted OTA service and the default choice for an app already on Expo and EAS Build. It uses the expo-updates library, publishes to branches that channels point at, and supports percentage rollouts and rollback to a previous or embedded update. Its pricing is base fee plus update MAU plus bandwidth, which is cheap for small apps (free to 1,000 MAU) and grows with your audience.
A bare React Native app can use it, but has to install Expo modules first (Expo docs). The Rollbird vs EAS Update page compares the setup step by step.
Bitrise CodePush: keep the CodePush API, free to 100K MAU#
Bitrise CodePush is a hosted CodePush server inside Bitrise Release Management. Your app keeps the react-native-code-push client API, which is the smallest code change for an existing CodePush app. Bitrise says it works with bare React Native and Expo, including the New Architecture, and that staged rollout and rollback are on every plan, including the free one. If your app has fewer than 100,000 monthly active users, it is hard to beat on price.
Self-hosted: Hot Updater, Codemagic Patch, CodePush servers#
Choose this path when bundles and update traffic have to stay inside your infrastructure, or your team already runs the CDN, secrets and on-call rotation an update service needs. The hosted vs self-hosted guide lists what that pipeline involves.
- Hot Updater is an open-source, self-hosted OTA system with plugins for AWS S3, Supabase, Cloudflare R2 and D1, and PostgreSQL, and build plugins for Metro, Re.Pack and Expo. Rollbird's own React Native SDK wraps Hot Updater's client, so if you'd rather run the backend yourself, this is the closest match.
- Codemagic Patch is an open-source rebuild of CodePush. Self-hosting is free up to 1,000,000 MAU; above that Codemagic sells a licence per million users per year.
- Self-hosted CodePush servers keep the CodePush protocol. lisong/code-push-server is a widely used community server (MIT licence, about 1,900 GitHub stars, last commit February 2026). Microsoft's own standalone server is archived and gets no updates. Pair a server with a maintained client fork, because Microsoft's client doesn't support the New Architecture.
Hosted CodePush-compatible services: Revopush, AppZung, Codemagic CodePush#
These keep the CodePush client model, so migration is mostly a new server URL and keys, plus the vendor's SDK package.
- Revopush offers plans from free (1,000 MAU) to $500 a month (1M MAU), with $1 per 1,000 extra users. It supports Expo through a config plugin.
- AppZung is a hosted CodePush platform priced in euros, from €20 a month for 10,000 MAU. It says it supports the New Architecture.
- Codemagic CodePush is Codemagic's hosted CodePush server. Its setup docs use the
@code-push-next/react-native-code-pushclient fork.
Stallion: its own SDK, free to 10K MAU#
Stallion is a hosted OTA service with its own SDK rather than the CodePush API. Its free plan covers 10,000 MAU with no overage allowed, and Pro covers 100,000 MAU for $64 a month. An On-Premise plan exists for teams that need to self-host.
Rollbird: flat price, bare React Native and Expo#
Rollbird is a hosted OTA update service for bare React Native and Expo apps, with staged releases, free rollback, and no per-user pricing. Plans are priced on apps, storage and seats, so the bill doesn't change when your audience grows.
rollbird initwrites the channel, public signing key and native fingerprint into a bare app's iOS and Android projects, or registers a config plugin in an Expo app.rollbird release --rollout 10publishes a signed bundle to a percentage of devices; the dashboard raises the percentage later.rollbird rollbackreverts a channel instantly. Rollback is free, never uses release quota, and works even when a plan limit blocks new releases.- If a new bundle crashes before it reports ready, the device falls back to the previous bundle and the release page counts the failure.
It is not a CodePush drop-in: you replace the CodePush SDK with @rollbird/react-native and rebuild the native app once. The migration guide maps every CodePush command and API call to its Rollbird equivalent.
Before you switch#
- Rebuild once, whatever you choose. Every option here needs a new store binary that contains the new client and its configuration. Updates published before that binary reaches users won't arrive.
- Run one update controller. Remove the CodePush SDK and its native configuration when you add another client. Rollbird refuses to set up an app that still has
expo-updatesinstalled. - Plan the cut-over. Old binaries keep asking the old server until users update from the store, so keep it serving, or accept that those users stay on their current bundle.
- Check store rules. OTA updates are allowed for interpreted code within limits; the store policies guide summarises what Apple and Google permit.