The Stallion alternative that keeps the CodePush protocol

Stallion is a polished managed OTA platform built around its own SDK. Pulsar makes the opposite bet: use the CodePush protocol the ecosystem already standardised on, and let you run the server yourself.

What Stallion is, and where it fits

Stallion ships React Native updates through react-native-stallion, a proprietary SDK, with a hosted console, CLI, differential updates, gradual rollouts, automatic and manual rollback, SHA-256 signing and SOC 2 compliance. It is free to 10,000 monthly active users, with paid plans from $64/mo for 100,000.

The proprietary SDK is the trade-off to weigh. It lets Stallion move faster than a protocol designed in 2016, but it also means your update path depends on one vendor’s client: if the service or the company goes away, the SDK in your binary goes with it — which is precisely the position App Center CodePush users found themselves in on 31 March 2025.

Pulsar uses the CodePush protocol instead, which has an open-source client, an open-source standalone server from Microsoft, and multiple independent implementations. If Pulsar disappeared tomorrow, your app could point at any other CodePush-compatible server with a configuration change.

When Stallion is the better choice: Stallion is a good fit if you want a managed product with SOC 2 in hand, are comfortable on a vendor SDK, and 10,000 free MAU covers you. Its dashboard and rollout tooling are genuinely well built.

Pulsar vs Stallion

CapabilityPulsarStallion
Update protocolCodePush — open, multiple implementationsProprietary Stallion SDK
Exit path if the vendor goes awayPoint the client at any CodePush serverReplace the SDK and ship a new binary
Self-hostingYes, on the Pro planManaged cloud
Pricing modelPer MAU: free to 1K, $11.99/mo for 100KPer MAU: free to 10K, $64/mo for 100K
Staged rolloutsYes, by deterministic %Yes
Instant rollbackYes, one commandYes, automatic and manual
Differential updatesYes, on Startup and aboveYes
Target specific devicesYes — pin a release to explicit device idsRollout percentage
Compliance certificationsSelf-host inside your own compliance boundarySOC 2
Open-source client + CLIYes (MIT)No

Migrating from Stallion

Stallion and Pulsar use different clients, so this migration replaces an SDK. It reaches devices with your next store release.

1. Remove the Stallion SDK, add the Pulsar client

Both are native modules, so both are autolinked — this is a dependency swap plus a pod install.

yarn remove react-native-stallion
yarn add @novacraft-engineering/pulsar-code-push
cd ios && pod install

2. Wrap your root component

Pulsar uses the standard CodePush higher-order component, so the wiring is the familiar one.

import codePush from '@novacraft-engineering/pulsar-code-push';

export default codePush({
  deploymentKey: '<pulsar-deployment-key>',
  serverUrl: 'https://api.usepulsar.dev',
  installMode: codePush.InstallMode.ON_NEXT_RESTART,
})(App);

3. Release from CI

Two environment variables and one command.

npm i -g @novacraft-engineering/pulsar-cli
pulsar release MyApp Production --platform ios --target 1.4.0 --rollout 25

Frequently asked questions

Why does the protocol matter if both services work?

Because it decides what happens on your worst day. A proprietary SDK ties your ability to hotfix production to one company staying in business. CodePush has an open client, an open standalone server and several compatible services, so repointing is a config change rather than a migration.

Is Pulsar SOC 2 certified?

No. If a certification is a hard requirement, either use a certified vendor or self-host Pulsar inside a boundary you have already certified — which is the route most regulated teams take.

Can I run both during the transition?

Yes. The update client is compiled into the binary, so an older build keeps talking to Stallion while new builds talk to Pulsar. There is no cutover moment.

Does Pulsar do differential updates too?

Yes, on the Startup plan and above. Devices download only the files that changed between their current bundle and the new release.

Compared with the others

Ship the fix without the queue.

Point your React Native app at Pulsar and release in seconds.

Get started →