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
| Capability | Pulsar | Stallion |
|---|---|---|
| Update protocol | CodePush — open, multiple implementations | Proprietary Stallion SDK |
| Exit path if the vendor goes away | Point the client at any CodePush server | Replace the SDK and ship a new binary |
| Self-hosting | Yes, on the Pro plan | Managed cloud |
| Pricing model | Per MAU: free to 1K, $11.99/mo for 100K | Per MAU: free to 10K, $64/mo for 100K |
| Staged rollouts | Yes, by deterministic % | Yes |
| Instant rollback | Yes, one command | Yes, automatic and manual |
| Differential updates | Yes, on Startup and above | Yes |
| Target specific devices | Yes — pin a release to explicit device ids | Rollout percentage |
| Compliance certifications | Self-host inside your own compliance boundary | SOC 2 |
| Open-source client + CLI | Yes (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 install2. 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 25Frequently 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
- Pulsar vs Microsoft CodePush — the protocol both of them speak.
- Pulsar vs Expo EAS Update
- Pulsar vs Microsoft App Center
- Pulsar vs RevoPush
- Pulsar vs hot-updater
Ship the fix without the queue.
Point your React Native app at Pulsar and release in seconds.
Get started →