The hot-updater alternative with a service behind it
hot-updater is the strongest open-source OTA project in React Native right now, and if you want to assemble the infrastructure yourself it is an excellent choice. Pulsar is for teams who want the same self-hosting option without assembling it.
What hot-updater is, and where it fits
hot-updater is a self-hosted OTA platform with roughly 1.7k GitHub stars, a web console, a CLI, bundle diffing and a plugin system that lets you back it with S3, Cloudflare R2 and D1, Supabase, Firebase or plain PostgreSQL. It supports bare React Native and Expo, and works with Metro and Re.Pack.
The plugin system is its real strength and its real cost. You choose the storage backend, the database, the deploy target and the bundler plugin, then you own that stack: the migrations, the credentials, the console deployment, the upgrade path. For a team that wants exactly that control, nothing else comes close.
Pulsar is self-hostable too, but it is one service rather than a construction kit — and there is a hosted instance if you would rather not run anything at all. It also speaks the CodePush protocol, so apps already on a CodePush client migrate by changing configuration instead of swapping SDKs.
When hot-updater is the better choice: Pick hot-updater if you want a fully open-source stack you control end to end, you already run S3 or Supabase, and wiring the pieces together is time you are happy to spend. It is genuinely good software.
Pulsar vs hot-updater
| Capability | Pulsar | hot-updater |
|---|---|---|
| Update protocol | CodePush — existing clients migrate by config | Its own SDK |
| Self-hosting | Yes, on the Pro plan: one service | Yes, you assemble the backends |
| Hosted option | Yes | No — self-host only |
| Infrastructure you operate | One service, or none if hosted | Storage + database + console of your choosing |
| Backends | Bundled | S3, Cloudflare R2/D1, Supabase, Firebase, PostgreSQL |
| Staged rollouts | Yes, by deterministic % | Not a documented first-class feature |
| Target specific devices | Yes — pin a release to explicit device ids | Not documented |
| Differential updates | Yes | Yes — bundle diffing |
| Per-release adoption metrics | Yes | Console shows deployed bundles |
| Expo support | Bare workflow / prebuild | Bare and Expo via plugins |
Migrating from hot-updater
hot-updater uses its own SDK, so this is a client swap that reaches devices with your next store release.
1. Swap the client
Remove the hot-updater runtime and add the CodePush-lineage Pulsar client.
yarn remove @hot-updater/react-native
yarn add @novacraft-engineering/pulsar-code-push
cd ios && pod install2. Wrap your root component
Standard CodePush wiring — check on launch, install on next restart.
import codePush from '@novacraft-engineering/pulsar-code-push';
export default codePush({
deploymentKey: '<pulsar-deployment-key>',
serverUrl: 'https://api.usepulsar.dev',
checkFrequency: codePush.CheckFrequency.ON_APP_START,
})(App);3. Replace the release command
One CLI, the same verbs across every platform and deployment.
npm i -g @novacraft-engineering/pulsar-cli
pulsar release MyApp Production --platform android --target 1.4.0 --rollout 25Frequently asked questions
Is Pulsar open source like hot-updater?
The React Native client and the CLI are MIT-licensed and public. The server is not currently open source, which is a real difference — if a fully open stack is the requirement, hot-updater is the better answer and we would rather say so than talk you out of it.
What do I actually save by not using hot-updater?
Setup and operations. hot-updater asks you to choose and run a storage backend, a database and the console. Pulsar is one service to self-host, or a hosted instance to point at.
Does hot-updater support staged rollouts?
Percentage rollouts are not a documented first-class feature of hot-updater the way they are in the CodePush protocol. If you need to serve a release to 10% of devices and widen from there, check the current docs before committing.
Can I self-host Pulsar on my own VPS?
Yes, on the Pro plan. With its license key, one docker compose up runs Pulsar on any server or VPS with Docker, and the hosted instance runs on exactly the same code.
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 Stallion
Ship the fix without the queue.
Point your React Native app at Pulsar and release in seconds.
Get started →