Pulsar pushes a new bundle to every device the instant you release it, with no app-store review and no waiting for users to update. Stage it, target the exact devices and users, roll it out, roll it back.
Drop it into whatever ships your app.
- name: Ship OTA update
env:
PULSAR_API_URL: https://api.usepulsar.dev
PULSAR_TOKEN: ${{ secrets.PULSAR_TOKEN }}
run: npx @novacraft-engineering/pulsar-cli release MyApp Production --platform ios --target 1.3.6One command in your app repo builds the JavaScript bundle, hashes it exactly the way the client will, and packages it for release.
The bundle is broadcast to the edge and cached in every region. Choose the reach: a percentage, specific device models, individual users, or everyone at once.
Apps pull the update in the background and swap it in on next launch. If something looks wrong, roll back in a single click.
The update check and every download are served from the region nearest each device, on the same network your users already resolve to.
Pulsar runs the edge, storage, and delivery end-to-end. No servers, queues, or buckets for you to provision, scale, or keep alive. You just push releases.
Each bundle is content-hashed and cached permanently. Once a region has it, repeat downloads never leave that region.
Decide exactly who gets a release: by percentage, by hardware, by native version, or down to a single user.
Release to a share of devices, watch, then widen. The assignment is deterministic, so a device never flip-flops.
Ship to specific hardware (iPhone 15 Pro, Galaxy S24), picked from models that have checked in, or typed in ahead of a rollout.
Scope a release to specific user IDs. Dogfood with your team, or push a fix to just the accounts that hit the bug.
Scope each release to the native versions it fits, so old builds never receive an incompatible bundle.
A one-line copy fix shouldn’t re-download five megabytes. Pulsar sends a compact patch against the bundle each device already has, often 10–40× smaller.
The full JS bundle shipped inside the native binary: your baseline snapshot.
→Pulsar diffs the new bundle against what the device already runs.
→Only the changed files travel, cached at the edge, content-hashed and immutable.
→The client reconstructs the new bundle from its base plus the patch, then verifies the hash.
For side projects and trying Pulsar out.
or $9.99/mo billed yearly. Save $23.98.
For apps finding their users.
or $41.66/mo billed yearly. Save $99.98.
For teams shipping every week.
or $104.16/mo billed yearly. Save $249.98.
For apps the business runs on.
or $208.33/mo billed yearly. Save $499.98.
For scale, with the option to run it yourself.
Over your plan: $0.50 per extra 1,000 monthly active devices and $0.015 per extra GB delivered.