The CodePush alternative for React Native

Microsoft retired App Center CodePush in 2025. Pulsar is a self-hostable, CodePush-compatible service for shipping over-the-air JavaScript updates to your live React Native apps — keep the client you already trust, point it at Pulsar, and ship in seconds.

What happened to Microsoft CodePush?

CodePush was the over-the-air update service inside Microsoft Visual Studio App Center. When Microsoft retired App Center in 2025, the hosted CodePush backend went with it. The good news: the on-device client is a mature, open-source protocol, so you don’t need a new SDK — you need a new server to point it at. That’s exactly what Pulsar is.

Pulsar vs Microsoft CodePush vs RevoPush

CapabilityPulsarMicrosoft CodePushRevoPush
PricingFree to 1K MAU, $11.99/mo for 100KRetiredFree to 1K MAU, $25/mo for 50K
HostingManaged, or self-hosted on ProMicrosoft cloudManaged cloud
CodePush protocolYes — same clientOriginalYes
Staged rolloutsYes, by %YesYes
Instant rollbackYesYesYes
Differential updatesYes, on Startup and aboveYesYes
Per-release adoption metricsYesLimitedLimited
Open-source client + CLIYes (MIT)YesClient only

Migrate in three steps

Because Pulsar speaks the CodePush protocol, migration is a configuration change, not a rewrite.

1. Create your app and copy the keys

Sign up, create an app, and grab the deployment keys for each environment (Staging, Production).

2. Point the same client at Pulsar

Keep your existing CodePush client — just change the deployment key and server URL:

// Before — App Center CodePush
export default codePush({
  deploymentKey: '<app-center-key>',
})(App);

// After — Pulsar (same client, new server + key)
export default codePush({
  deploymentKey: '<pulsar-deployment-key>',
  serverUrl: 'https://api.usepulsar.dev',
})(App);

3. Publish with the CLI

Bundle and ship your first over-the-air release from anywhere Node runs:

npm i -g @novacraft-engineering/pulsar-cli
pulsar login https://api.usepulsar.dev
pulsar release MyApp Production --platform ios --target 1.4.0

The client checks in on launch, downloads the new bundle in the background, and swaps it in on the next restart — the same flow your team already knows from CodePush.

Why teams switch to Pulsar

  • Self-hostable — on the Pro plan, so your bundles and telemetry stay inside your own infrastructure.
  • Staged rollouts — serve a new release to a deterministic percentage of devices, then widen.
  • Instant rollback — a bad release is one command away from being pulled.
  • Differential updates — devices download only what changed, not the whole bundle.
  • Real adoption metrics — see which devices actually run each release, not just what was served.

Frequently asked questions

Is Pulsar a drop-in CodePush replacement?

Close to it. Pulsar speaks the CodePush protocol, so you keep the same native client (the RevoPush/CodePush lineage). Migrating is mostly a deployment-key and server-URL change, not an SDK rewrite.

What happened to Microsoft CodePush?

CodePush shipped as part of Microsoft Visual Studio App Center, which Microsoft retired in 2025. The open-source client lives on, but the hosted service is gone — so teams need a new backend for their over-the-air updates.

Do I have to change my app’s native code?

No beyond swapping the deployment key and server URL. Autolinking registers the module on iOS and Android, New Architecture included.

Can I self-host Pulsar?

Yes, on the Pro plan, which includes self-hosting. Pulsar then runs on your own infrastructure with a license key, so your update bundles and device telemetry stay under your control. Prefer not to run anything? Use the hosted service.

Compared with the others

Your next release doesn’t need the app store.

Move off CodePush in an afternoon.

Get started →