---
description: Both cordova-hot-code-push and CodePush are deprecated. Here's a maintained Cordova OTA update alternative with code signing, channels, and automatic rollbacks.
title: Cordova Hot Code Push Alternative for OTA Updates - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/cordova-hot-code-push-alternative.png
---

[ Skip to content](#cordova-hot-code-push-alternative-for-ota-updates) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  SDKs ](/docs/sdks/)
* [  Formbricks ](/docs/sdks/capacitor/formbricks/)
* [  Geocoder ](/docs/sdks/capacitor/geocoder/)
* [  Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [  Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [  Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [  Share Target ](/docs/sdks/capacitor/share-target/)
* [  Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [  SQLite ](/docs/sdks/capacitor/sqlite/)
* [  Superwall ](/docs/sdks/capacitor/superwall/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  Wifi ](/docs/sdks/capacitor/wifi/)
* [  Zip ](/docs/sdks/capacitor/zip/)
* [  Cordova ](/docs/sdks/cordova/)
* [  Cloud ](/docs/cloud/)
* [  Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [  Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [  FAQ ](/docs/cloud/live-updates/faq/)
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Set Up Environments ](/docs/cloud/native-builds/environments/)
* [  Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [  Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [  Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [  Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [  Use pnpm or Yarn ](/docs/cloud/native-builds/package-managers/)
* [  Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [  Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [  Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [  Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [  Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [  Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  FAQ ](/docs/cloud/native-builds/faq/)
* [  App Store Publishing ](/docs/cloud/app-store-publishing/)
* [  Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [  Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [  Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [  FAQ ](/docs/cloud/app-store-publishing/faq/)
* [  Automations ](/docs/cloud/automations/)
* [  Reference ](/docs/cloud/automations/reference/)
* [  Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [  FAQ ](/docs/cloud/automations/faq/)
* [  Assist ](/docs/cloud/assist/)
* [  CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Integrations ](/docs/cloud/integrations/)
* Account
* [  Organization ](/docs/cloud/organizations/)
* [  Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [  Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [  Billing ](/docs/cloud/organizations/billing/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  AI ](/docs/ai/)
* [  Insiders ](/docs/insiders/)
* [  Billing & Plans ](/docs/insiders/billing-and-plans/)
* [  FAQ ](/docs/insiders/faq/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/support/)
* [  Contributing ](/docs/contributing/)
* Contributing code
* [  Code of Conduct ](/docs/contributing/code-of-conduct/)
* [  Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [  Blog ](/blog/)
* Categories

* Related links

# Cordova Hot Code Push Alternative for OTA Updates[¶](#cordova-hot-code-push-alternative-for-ota-updates "Permanent link")

If your Cordova app still ships over-the-air updates through `cordova-hot-code-push` or `cordova-plugin-code-push`, you're building on top of two dead plugins. The nordnet Hot Code Push plugin has been deprecated for years, and Microsoft's CodePush plugin retired alongside App Center on March 31, 2025\. Both still install, both still run, and neither is getting a fix the next time a Cordova or OS update breaks them.

This post is about what to do next. We'll look at exactly what stopped being maintained, what a Cordova OTA update solution needs to have in 2026, and how to move to a maintained replacement without rewriting your app.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://capawesome.io/) 

## Key Takeaways[¶](#key-takeaways "Permanent link")

* **`cordova-hot-code-push`** (nordnet) is deprecated and no longer maintained.
* **`cordova-plugin-code-push`** (Microsoft) retired together with App Center on **March 31, 2025**. The managed CodePush service it depended on is gone.
* An unmaintained OTA plugin is a standing risk: when a new Cordova, Android, or iOS release breaks it, no patch is coming.
* **Capawesome Cloud Live Updates** is a maintained Cordova OTA update alternative, with code signing, channels, automatic rollbacks, and committed Cordova support through 2030 and beyond.
* You can migrate by swapping the plugin and pointing it at Capawesome Cloud. Your web build and release flow stay the same.

## Is cordova-hot-code-push still maintained?[¶](#is-cordova-hot-code-push-still-maintained "Permanent link")

No. The [cordova-hot-code-push](https://github.com/nordnet/cordova-hot-code-push) plugin from nordnet is marked deprecated in its own repository and hasn't seen active development in years. Its local-dev companion plugin is deprecated too.

The plugin did one useful thing: it watched a remote config file, downloaded changed web assets into the app, and reloaded the WebView from the new copy. That model worked, but it was always self-hosted. You ran the update server, you handled the signing, and you owned every edge case around partial downloads, rollbacks, and version mismatches.

That's the real problem with staying on it. OTA delivery sits directly in your app's trust boundary, since whatever bundle the plugin loads runs as your app. An unmaintained plugin in that position is a liability. The first time a new `cordova-android` major version changes how the WebView serves local content, or Apple tightens a `WKWebView` behavior, there is no maintainer to ship a fix. You'd be patching a deprecated plugin yourself, in production, under time pressure.

## What happened to CodePush for Cordova?[¶](#what-happened-to-codepush-for-cordova "Permanent link")

[cordova-plugin-code-push](https://github.com/microsoft/cordova-plugin-code-push) depended on Microsoft's CodePush service, which was part of App Center. **App Center retired on March 31, 2025**, and the build, test, distribute, and CodePush pipelines went with it. The Cordova plugin is a client for a backend that no longer exists.

If you came to Cordova OTA updates through App Center, the migration story is its own topic, and we've covered it end to end in [Migrating from App Center to Capawesome Cloud](/blog/migrating-from-app-center-to-capawesome-cloud/). The short version is the same as for Hot Code Push: the plugin is a dead end, and you need a maintained service behind your updates.

## What to look for in a Cordova Hot Code Push alternative[¶](#what-to-look-for-in-a-cordova-hot-code-push-alternative "Permanent link")

Before picking a replacement, it helps to know what separates a production-ready OTA setup from a plugin that merely downloads files. Five things matter:

* **Active maintenance.** The plugin and the service behind it need to track new Cordova, Android, and iOS releases. This is the whole reason you're migrating.
* **Code signing.** Every bundle should be verified against a key you control before it's applied, so a compromised network or server can't push code into your app.
* **Automatic rollback.** If a bad bundle fails to start, the app should heal itself by reverting to the last working version instead of bricking on launch.
* **Channels and version targeting.** You need to send a bundle to the right audience and, critically, keep a web bundle from landing on a native binary it isn't compatible with.
* **Cordova as a first-class target.** A platform that treats Cordova as a legacy afterthought is a slow version of the same problem you have now.

Hot Code Push and CodePush met some of these once. Neither meets the first one anymore, and that's the one that breaks everything else over time.

## The modern alternative: Capawesome Cloud Live Updates[¶](#the-modern-alternative-capawesome-cloud-live-updates "Permanent link")

[Capawesome Cloud](https://capawesome.io) provides a maintained Cordova OTA update solution built around the [Cordova Live Update plugin](/docs/sdks/cordova/live-update/) and a managed delivery service. It covers the full checklist above: bundles are downloaded and applied through Cordova's official scheme handlers, verified with an RSA signature you control, and rolled back automatically when a new bundle fails to start. Capawesome has committed to supporting Cordova through 2030 and beyond on every plan tier.

A detail that matters if you're coming from Appflow or an Ionic setup: the plugin works with the **stock Cordova WebView**. It hooks into the official handlers on `cordova-android` 10+ and `cordova-ios` 6+, so there's no `cordova-plugin-ionic-webview` requirement and nothing extra to wire up on the native side.

We won't repeat the full mechanics here. If you want the complete picture of how an update moves through the app, the three configuration decisions, and code signing, read [Cordova Live Updates: A Complete Guide to OTA Updates](/blog/cordova-live-updates-guide/). For the setup steps, the [Live Updates setup guide](/docs/cloud/live-updates/setup/) walks through it.

## Migrating from Hot Code Push or CodePush[¶](#migrating-from-hot-code-push-or-codepush "Permanent link")

The migration is a plugin swap, not a rewrite. Your web build, your `www/` output, and your release cadence stay exactly as they are. What changes is the plugin and where updates come from.

Remove the deprecated plugin first, then add the Cordova Live Update plugin with your Capawesome Cloud app ID:

`[](#%5F%5Fcodelineno-0-1)cordova plugin remove cordova-hot-code-push-plugin
[](#%5F%5Fcodelineno-0-2)cordova plugin add @capawesome/cordova-live-update --variable APP_ID=00000000-0000-0000-0000-000000000000
`

The concepts you already know map cleanly onto the new setup. Here's how the old pieces translate:

| Hot Code Push / CodePush         | Capawesome Cloud Live Updates                         |
| -------------------------------- | ----------------------------------------------------- |
| Self-hosted update server        | Managed delivery service (or self-host if you prefer) |
| chcp.json / deployment keys      | APP\_ID plus channel configuration in config.xml      |
| Deployment / staging deployments | Channels (production, beta, per-version channels)     |
| Manual signature handling        | Built-in RSA code signing via the CLI                 |
| Roll-your-own rollback logic     | Automatic rollback via READY\_TIMEOUT                 |

Once the plugin is installed and configured, shipping an update is a build and an upload:

`[](#%5F%5Fcodelineno-1-1)npm run build
[](#%5F%5Fcodelineno-1-2)npx @capawesome/cli apps:liveupdates:upload --channel production
`

Devices on that channel pick up the bundle on their next launch. From there, the [complete guide](/blog/cordova-live-updates-guide/) covers the configuration choices worth making before you ship to production.

## Get Started[¶](#get-started "Permanent link")

Point your Cordova app at a maintained OTA service today. Follow the [Live Updates setup guide](/docs/cloud/live-updates/setup/) to install the plugin and publish your first bundle, or clone the [Cordova Live Update Demo app](https://github.com/capawesome-team/cordova-live-update-demo) to watch an over-the-air update land on a real device before you touch your own codebase.

[Try Capawesome Cloud Free](https://capawesome.io)

## Conclusion[¶](#conclusion "Permanent link")

`cordova-hot-code-push` and `cordova-plugin-code-push` both did their job in their day, but neither is maintained, and OTA delivery is the wrong place to run unmaintained code. Moving to Capawesome Cloud Live Updates keeps the part you like about hot code push, instant web updates without an app store round trip, and adds the code signing, automatic rollbacks, and version targeting that a deprecated plugin can no longer give you.

For the deep dive on configuring it well, see [Cordova Live Updates: A Complete Guide to OTA Updates](/blog/cordova-live-updates-guide/). If your updates ran through App Center, [Migrating from App Center to Capawesome Cloud](/blog/migrating-from-app-center-to-capawesome-cloud/) picks up where this post leaves off.

Questions about moving off a deprecated OTA plugin? Drop into the [Capawesome Discord server](https://discord.gg/VCXxSVjefW) and we're happy to help. And to get the next Cordova deep-dive in your inbox, subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter/).

June 9, 2026 

 Back to top 