EAS Update and HotCodePush, side by side

Both ship JavaScript and assets to React Native apps. HotCodePush, the over-the-air (OTA) update service for React Native, Expo, Capacitor and Cordova, fingerprints by default and signs on every plan.

Compared

Where HotCodePush and EAS Update differ

Verified on 2026-10-21; EAS Update figures from expo.dev/pricing and docs.expo.dev/eas-update.

Feature HotCodePush EAS Update
Compatibility The fingerprint, read from your lockfile, by default A runtime version per build: bumped with the app version, or by the fingerprint policy
Code signing Free on every plan Production and Enterprise plans
A bad update on a device Rolled back when the first render misses a 10-second gate, on by default Error recovery within 10 seconds of first render, documented as not to be relied upon
Frameworks React Native, Expo, Capacitor, Cordova React Native and Expo

Last verified 2026-10-21.

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

Architecture

Native compatibility by fingerprint, by default

Both can fingerprint the native layer. Expo defaults to the app version and calls its fingerprint policy experimental; HotCodePush fingerprints by default.

EAS Update serves an update to a build when their runtime versions match. Expo's recommended default ties that version to the app version, so a native change without a version bump can match a build it no longer fits; Expo's fingerprint policy closes that gap, and Expo calls it experimental. HotCodePush reads the fingerprint from your committed lockfile by default, on every build and release. Code signing is available on every plan, free, and a failing rollout pauses itself.

How the fingerprint works

Diagram: a runtime version set by Expo's app-version policy beside the fingerprint HotCodePush reads from the lockfile.

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 EAS Update

Yes, in a development build. The Expo SDK installs the React Native package and wires it through a config plugin for SDK 55 to 58. Expo Go cannot load native modules, so it runs neither HotCodePush nor a production expo-updates setup. Install the Expo SDK
No. HotCodePush computes the fingerprint from the committed lockfile at build and release time, by default, and a release only reaches the binaries it was built for. Expo offers a fingerprint policy too; its default is the app version. A semver range widens or narrows the match when you want. Compatibility
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.