FAQ
Short answers about HotCodePush, from supported frameworks and store rules to privacy, pricing and migration, each pointing to the page that owns the details.
Short answers, one verdict each, with a link to the page that owns the detail.
Getting started
Which frameworks does HotCodePush support?
React Native, Expo, Capacitor and Cordova, each through its own SDK. Supported versions has the versions and the platform floors.
Does HotCodePush support Flutter?
No. The four SDKs are for React Native, Expo, Capacitor and Cordova. Flutter and native-only apps have none. The SDKs hub lists the four.
Do I need a native release to start?
Yes, once: the SDK and your app's ids ship inside a store build, and from then on JavaScript and assets travel as over-the-air (OTA) updates. A native change still needs a store release, and the fingerprint keeps an update away from a build it was not made for.
Does the React Native SDK support the New Architecture?
Yes, the SDK is New Architecture only, which is why it supports React Native 0.82 and newer. The React Native SDK states it.
Does HotCodePush work with Expo Go?
No. Expo Go ships a fixed set of native modules, so you need a development build or a release build. The Expo SDK covers the install.
Can I use OTA updates in Expo without EAS?
Yes. The Expo SDK replaces expo-updates and runs in a build of your own, a development build or a release build, EAS or not. Installation adds the config plugin and removes expo-updates, since the prebuild refuses the pair.
Updates and delivery
What can I update over the air?
JavaScript, markup, styles and assets, without a store review. Native code, plugins and configuration ride the next store release. Compatibility explains how a release never reaches a binary it would break.
How fast do users get an update?
About a minute from publish, taken on the device's next check. The apply strategy decides when it applies, the next start by default. How an update reaches a device is the whole path.
What happens if an update breaks the app?
The device rolls back to the last bundle that worked on its own. By default a release pauses itself when its failures cross the threshold on Rollouts and auto-pause, and Roll back a release covers everything else.
Can I test an update before everyone gets it?
Yes: a preview channel gives each pull request its own expiring channel, and a staged rollout releases to a share of devices first.
Can I make an update mandatory?
Yes, a release marked mandatory applies as soon as it is downloaded. Choose an apply strategy says when to use it.
Can I target an update at some users or tenants?
Yes: your app sets attributes such as userId, tenant or plan, and a release's conditions pick the devices that match. Target devices with attributes covers conditions, and Set up environments and tenants covers one channel per tenant.
Are updates smaller than the full bundle?
Yes, a device downloads a delta with the changed files. On React Native and Expo the main JavaScript bundle travels as a byte-level patch. Bundles and releases describes the packs.
Can I keep downloads off mobile data?
Yes, an SDK option restricts automatic downloads to Wi-Fi. It is on each SDK's configuration page, such as the Capacitor configuration.
What happens to updates when HotCodePush is down?
Nothing on the device: a check reads a small published file and needs no server to decide. Installed apps keep running and keep updating while HotCodePush is down. How an update reaches a device has the guarantee.
Stores and compliance
Is this allowed by Apple and Google?
Yes, both stores permit OTA JavaScript and asset updates in clauses written for that purpose. Store policies quotes Apple's and Google's texts verbatim.
Does every update need App Review?
No clause in either policy requires a per-update review. What needs review is a change that leaves your reviewed purpose or turns on functionality review never saw. The myths on Store policies take the common claims one by one.
Do I have to update my App Store screenshots after an OTA update?
Only if the release changes the app enough that the live screenshots misrepresent it. Bug fixes, copy and styling never raise the question. The App Store screenshot question has the mechanics.
Do I need an App Tracking Transparency prompt?
No, the SDK reads no advertising identifier and nothing it sends is used for tracking. The device id and attributes gives the reasoning.
What do I put in Apple's privacy label and Google's data safety form?
The Apple App Privacy answers and the Google Play Data safety answers are ready to paste. The one row that depends on your own attributes is marked.
Privacy and security
What data does the SDK send?
An anonymous per-install id, the versions the install runs, the attributes your app sets and the outcome of each update, and nothing else. What the SDK sends is the field list.
Where is my data stored?
In the EU, as Where the data is stored details.
Can I self-host HotCodePush?
No. HotCodePush runs as a hosted service only. The SDKs and the CLI are MIT-licensed and run in your app and your pipeline. Everything a device reports is stored in the EU, as Where the data is stored details.
Can anyone download my bundles?
Anyone holding your app id and a channel id, both of which ship inside your binary, can fetch that channel's index and bundles. What the public index says lists what is readable, and Sign your bundles makes sure a device applies only what you signed.
How do I delete a user's data?
Delete the device from the console, with hotcodepush device delete or through the API. Erasure requests says what the deletion removes.
Pricing and billing
What does HotCodePush cost?
Free up to the Free plan's monthly active devices, then a price per MAU up to a spending cap you set. Billing and MAU lists the plans with their prices, and the calculator on the pricing page turns a MAU number into a price.
What is a monthly active device?
One device that checked for an update of one of your apps at least once in a UTC calendar month. It is counted per app, debug builds included. Monthly active devices has the edges.
Can my bill surprise me?
No, you are never charged past the spending cap. Devices beyond it keep running their current update until the month turns or you raise the cap. The spending cap has the rules.
Is the free plan a trial?
No, it has no time limit, needs no credit card and keeps every safety feature: code signing, auto-pause and staged rollouts. Its one ceiling is the MAU figure Billing and MAU shows.
Can I get a refund?
Yes for a first charge within 14 days, and once for a charge caused by a cap you raised yourself. Anything else is decided by a person. Refunds says how to ask, and the money goes back to your payment method.
Migration and leaving
How does HotCodePush compare with other services?
One page per service on the website: Alternatives compares HotCodePush with CodePush, EAS Update, Capgo, Ionic Appflow and others on what differs.
Can I migrate from CodePush?
Yes, by swapping the CodePush client for the React Native SDK at your app's next native release. You keep delta updates. Migrate from CodePush is the guide.
Can I migrate from Ionic Appflow?
Yes, Migrate from Ionic Appflow covers Appflow's Live Updates, and for native builds and store publishing beside HotCodePush there is Capawesome Cloud.
Am I locked in?
No: the SDKs and the CLI are MIT-licensed, and the wire format only ever adds fields. Every listing in the API and the CSV downloads on the audit log and usage pages are your export.
Last updated on
Results and reasons
Every status a HotCodePush sync returns, from up_to_date to skipped and failed, and every reason code with its meaning and what to do about it.
Support
Where to ask a HotCodePush question, Discord or email, what to check before you write and what to include in a request so the first reply can answer it.