After Appflow: the honest fork

Appflow sales ended 2025-02-11; service ends 2027-12-31. Capawesome Cloud replaces the all-in-one shape; HotCodePush, the over-the-air (OTA) update service for React Native, Expo, Capacitor and Cordova, the update path.

Compared

Where HotCodePush and Ionic Appflow differ

Verified on 2026-10-21; Appflow figures from Ionic's announcement of 2025-02-11 and the Appflow Live Updates docs.

Feature HotCodePush Ionic Appflow
Status Sold and supported No new customers since 2025-02-11; existing customers served until 2027-12-31
A bad update on a device Rolled back on the device when the first render misses a 10-second gate The SDK offers sync, reload and config; a rollback is done from the console
Rollouts A percentage per release, with auto-pause A build goes live on its whole channel at once
Compatibility The fingerprint, read from your lockfile on every release A minimum, a maximum and one skipped native version, set per build
Delivery analytics Adoption per release, typed skip and failure reasons, the audience preview MAU and downloads
Frameworks React Native, Expo, Capacitor, Cordova Capacitor and Cordova

Last verified 2026-10-21.

Based on Ionic's public announcement and documentation pages; names are trademarks of their owners.

Architecture

A readiness gate, not a console button

Appflow documents no readiness check and no percentage rollouts. HotCodePush confirms a release on the device and halts a failing rollout.

An Appflow device applies a snapshot without checking that it ran, a deploy goes live on its whole channel at once, and a rollback is a console action each device picks up on its next check. A HotCodePush device confirms a release only when the app's first render lands in time; a miss reverts it to the last good bundle and reports why. A release carries a percentage, and auto-pause halts it when the failure rate crosses the bound.

Roll back a release

Diagram: an Appflow snapshot applied without a readiness check beside the HotCodePush readiness gate that confirms a release or reverts it.

Switch in four steps

  • 1 · Install the SDK

    Add the HotCodePush SDK for your framework, React Native, Expo, Capacitor or Cordova, and remove the previous update client. The SDK is MIT-licensed and replaces the update layer alone; your native code, your plugins and your store listing stay as they are.

  • 2 · Create your channels

    Create one channel per audience you ship to today, production first, then staging or beta. A preview channel lets you test the new path on your own devices before anyone else; whoever holds its link follows it, and nobody else reaches it.

  • 3 · Ship one store release

    Ship one store release with the new SDK inside. The binaries before it keep taking their old updates until their users move, so nothing breaks in the field, and devices on the new binary use HotCodePush from their first start.

  • 4 · Run the release step

    In your pipeline, replace the old release command with hotcodepush release create. It packages the bundle, signs it, works out what changed and releases to the channel you name, so every merge to main reaches devices without a store review.

Full migration guide

Switching from Ionic Appflow

It depends on what you used. Capawesome Cloud is the all-in-one replacement with live updates, native builds and app store publishing, and Capawesome says Ionic recommends it as the migration partner. HotCodePush does OTA updates alone, for teams that build natively themselves. Both come from the same team. Which of the two is for you
Until 2027-12-31, when Appflow stops serving existing customers. The switch ships inside a store release, and old binaries keep taking Appflow updates until their users move, so the earlier the release, the longer the overlap. Migrate from Ionic Appflow
Yes. An Appflow channel is a HotCodePush channel, a web build deployed to it is a release, and runtime channel switching maps call for call. The minimum, maximum and skipped native versions you set per build are replaced by the fingerprint. What maps to what
Yes. The switch ships inside a store release; binaries before it keep taking their old updates until their users move. A preview channel lets you test the new path on your own devices first. Preview channels
Nothing native. HotCodePush updates the JavaScript, markup, styles and assets your app already ships; the native layer, the plugins and the store listing stay as they are, and the fingerprint keeps an update off a binary it was not built for. Compatibility
Yes. Every framework gets deltas, built by our delta service when you release, so a device downloads only the files it lacks. React Native and Expo also get a small patch of the main JavaScript bundle inside the pack. How an update reaches a device
Your data is yours. The API lists everything, so a full export is a script, and the usage and audit log pages download CSV. The SDKs are MIT-licensed and the update format stays backward compatible, so an app on an old SDK keeps updating. API reference

A package swap, not a rewrite.

Swap the package in your next store release.