Staged rollouts that pause themselves

Start small, widen on a schedule you set, and stop the moment failures rise, with one command back.

From the team behind Capawesome, trusted by 1,000+ teams

  • Bitpanda
  • BTC-ECHO
  • Clovis
  • DHBW
  • E.ON
  • EGYM
  • Eyloo
  • FARO
  • King Arthur Baking
  • Leexi
  • LLMBase
  • Logistiko
  • mobile function
  • Planfred
  • SINC
  • snapAddy
  • Tapni
  • Vattenfall
  • Vitruve
  • AppScreens
  • OpenForge
  • Summon Worlds
  • SpeedPay
  • Rechnerhaus
  • World Aquaculture Society
  • Helmholtz

How it works

Small first, wider on its own

Set the steps once. The release widens while the devices stay healthy and holds the moment they do not.

A staged rollout in HotCodePush sends an over-the-air (OTA) update to a share of devices first, then widens on its own. Without one, an update reaches every device at once, and the first sign of trouble is the support inbox. A device is placed once and never flips. The release widens on your schedule once each step has had enough time and enough devices. The same watcher pauses it the moment failures rise and tells you; one command rolls back.

How rollouts work

A console card titled Rollout: a step chart rising in three plateaus from a small share of devices to a wide one, a dashed marker where a pause holds the line, and a log beneath reading widened, widened, paused as failures rose.

The proof

Pauses itself, then tells you

The watcher that widens a release also stops it. The moment failures rise, the rollout holds and your team hears why.

  • Holds the moment failures rise

  • Counters and top reasons in the notice

  • Email, webhook event and audit log

A notification card for a paused release with its applied and failed counts and the top failure reasons, noting the webhook event and the audit log entry.

The proof

One command back, before anyone notices

A rollback is a new release of an earlier bundle, so it rolls out like any other and the log keeps every step.

  • One command, or one click on the release page

  • Devices return to the earlier release at their next start

  • An update that fails to start rolls back itself

A release list card with the current release marked rolled back and the earlier release live again, and beneath it the one command line that did it.

The proof

Every device placed once

A device keeps its place in a rollout, so it never flips between releases. Widening adds devices and never removes one.

  • A stable place per device and release

  • The same answer on every check

  • Widening never removes a device

A strip of rollout buckets from 0 to 99 with one device pinned to its bucket and the reached range widening from 10 to 50 percent around it.

From the terminal

A staged release in three commands

Create at ten percent, watch it widen on its own, and roll back with one command when you have to.

zsh — my-app

$ npx hotcodepush release create --path dist --rollout-percentage 10 --progression
✓ reach — 10% of 1,204 active devices on production, about 120
✓ created release #43 on production — widens to 50% and 100% on its own
$ npx hotcodepush release get --release 43
Status active
Rollout 50%
Progression step 2 of 3, ready at 2026-10-21T14:00:00.000Z
Failure action pause (default)
Devices 1204
Applied 980
Confirmed 953
$ npx hotcodepush release rollback --channel production
✓ created release #44 on production — back to #42, mandatory for every device

Guarantees

What holds during every rollout

The rules a release follows from the first device to the last.

for every change to apply
~1 min
once a device has it
Kept
to roll back on device
Seconds
includes auto-pause
Every plan

Figures as of November 1, 2026.

The field

How the field does it

How the field widens a release, what stops a bad one and how it goes back, from the vendors' own pages.

Feature HotCodePush Capgo
Staged rollouts A share of devices that widens on a schedule you set A percentage raised by hand, step by step
A failing release On for every channel from creation; the release pauses itself A failure threshold per release; auto-pause off by default
Which devices are in Placed once, for good; narrowing takes back only the last devices added Sticky while the cache lasts; narrowing returns a random subset

Last verified 2026-10-26.

More features

Three more things every release gets

Each feature has its own page: the mechanism, the specifics, the field compared and the questions teams ask.

  • Adoption per release, every failed and skipped update with its reason, and monthly active devices that match the invoice, read in the console, the CLI or the API.

    See the feature
  • Labels your app sets choose which devices a release reaches, every condition is checked on the device, and the audience preview counts the reach before you publish.

    See the feature
  • Code signing with a key only you hold, verification on the device before anything is applied, and delivery with no server of ours on the path.

    See the feature

FAQ

Rollout questions

It stays small. The rollout pauses itself the moment failures rise, the console and a mail tell you, and one command rolls back. A device that fails to start the update rolls back on its own, before anyone reads the alert. Rollback on the device
Yes, both ways, at any time. Set the share higher or lower and the schedule picks up from there. A device keeps its place, so widening only adds devices and narrowing takes back only the last ones added. Staged rollouts
With one command, or from the release page. A rollback is a new release of the earlier bundle, so it shows in the log like any other, and devices return to it at their next start. Roll back a release
Yes. The pause names the failures behind it in the console and the mail, and every failed update carries a reason that reads as a sentence, the same one in the app, the console and the CLI. Failure reasons in the analytics
They keep it. A pause stops new devices from getting the release and changes nothing on the devices that have it. Resume when you know more, or roll back to move everyone to the release before. How rollouts work
Yes. Each channel carries the rule its releases start with: what happens on failures and how many updates count before it fires. A single release can override it, and hand the rule back to the channel later. Set up a staged rollout

Your next bad update reaches a few devices, not all of them.

Free for 1,000 MAU. No credit card.