---
title: Cordova Hot Code Push Alternative for OTA Updates
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.
date:
  created: 2026-06-10
  updated: 2026-07-17
authors:
  - robingenz
categories:
  - Cordova
  - Guides
  - SDKs
links:
  - Live Update: sdks/cordova/live-update.md
faq: true
---

# Cordova Hot Code Push Alternative for OTA Updates

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.

<!-- more -->

<div class="capawesome-z29o10a">
  <a href="https://capawesome.io/" target="_blank">
    <img alt="Build and deploy your Capacitor app with Capawesome Cloud" src="https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1" />
  </a>
</div>

## Key Takeaways

- **`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?

No. The [`cordova-hot-code-push`](https://github.com/nordnet/cordova-hot-code-push){:target="_blank"} 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?

[`cordova-plugin-code-push`](https://github.com/microsoft/cordova-plugin-code-push){:target="_blank"} 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](./migrating-from-app-center-to-capawesome-cloud.md). 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

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 built-in bundle it shipped with 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

[Capawesome Cloud](https://capawesome.io){:target="_blank"} provides a maintained Cordova OTA update solution built around the [Cordova Live Update plugin](../../sdks/cordova/live-update.md) 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.

Here's a quick overview of Cordova support in Capawesome Cloud, including the OTA live updates that replace your deprecated plugin.

<div style="margin-top: 1rem; margin-bottom: 1rem;">
  <iframe
    width="100%"
    height="450px"
    src="https://www.youtube-nocookie.com/embed/xmgyVkaqx48?si=2i1MPYs3IVqpENcz"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen
  ></iframe>
</div>

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](./cordova-live-updates-guide.md). For the setup steps, the [Live Updates setup guide](../../cloud/live-updates/setup.md) walks through it.

## Migrating from Hot Code Push or CodePush

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:

```bash
cordova plugin remove cordova-hot-code-push-plugin
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:

```bash
npm run build
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](./cordova-live-updates-guide.md) covers the configuration choices worth making before you ship to production.

## FAQ

### Will `cordova-hot-code-push` or `cordova-plugin-code-push` suddenly stop working?

Not suddenly — both still install and run today. The risk is what happens the next time a Cordova, Android, or iOS release changes something the plugin depends on (like how the WebView serves local content). Since neither plugin is maintained, there's no one to ship a fix, and you'd be the one patching a deprecated plugin in production under time pressure.

### Do I need the Ionic WebView plugin (`cordova-plugin-ionic-webview`) to use Capawesome Cloud Live Updates?

No. The Cordova Live Update plugin works with the stock Cordova WebView, hooking into the official scheme handlers on `cordova-android` 10+ and `cordova-ios` 6+. If you're migrating from an Appflow or Ionic-based setup that required the Ionic WebView plugin, that dependency isn't needed here.

### Does migrating mean rewriting my app's update logic?

No — it's a plugin swap, not a rewrite. Your web build, `www/` output, and release cadence stay exactly the same; only the plugin and where updates are delivered from change. The concepts map fairly directly: deployment keys become an `APP_ID`, staging deployments become channels, and manual signature handling becomes the CLI's built-in RSA signing.

### What happens to updates already in flight for users on the old plugin?

Since the old plugin's update server is gone (in CodePush's case, [along with App Center](https://capawesome.io/alternatives/appcenter/){:target="_blank"}) or unmaintained (Hot Code Push), there's no live migration path for in-flight updates — you remove the old plugin, add the new one pointed at Capawesome Cloud, and ship a fresh native release so users pick up the new update mechanism going forward.

### Is there a real device I can test this on before touching my own app?

Yes. The [Cordova Live Update Demo app](https://github.com/capawesome-team/cordova-live-update-demo){:target="_blank"} lets you clone a working example and watch an over-the-air update land on a real device, which is a lower-risk way to see the mechanics before wiring it into your production codebase.

## Related Posts

- [Announcing Cordova Support in Capawesome Cloud](./announcing-cordova-support-in-capawesome-cloud.md)
- [How to Build a Cordova iOS App Without a Mac](./build-cordova-ios-app-without-a-mac.md)
- [The Modern CI/CD Solution for Cordova Apps in 2026](./ci-cd-for-cordova-apps.md)
- [The Best CI/CD Platforms for Cordova Apps in 2026](./comparing-ci-cd-platforms-for-cordova-apps.md)

## Get Started

Point your Cordova app at a maintained OTA service today. Follow the [Live Updates setup guide](../../cloud/live-updates/setup.md) 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){:target="_blank"} 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){ .md-button .md-button--primary }

## Conclusion

`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](./cordova-live-updates-guide.md). If your updates ran through App Center, [Migrating from App Center to Capawesome Cloud](./migrating-from-app-center-to-capawesome-cloud.md) 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){:target="_blank"} 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/){:target="_blank"}.
