How do you update Cordova, its platforms and plugins?

The commands that work on Cordova CLI 13, cordova-android 15 and cordova-ios 8, and the ones that no longer do.

Last updated

TL;DR

Update the Cordova CLI with npm install -g cordova@latest. Update a platform by removing and re-adding it with an explicit version, such as cordova platform add [email protected], because cordova platform update is rejected by current cordova-android and cordova-ios. Update a plugin by removing it and adding it back at the new version.

Updating Cordova means three separate upgrades: the global CLI, each native platform package (cordova-android, cordova-ios), and every plugin in the project. They version independently, and each has its own Node.js, Xcode or Android SDK floor. Upgrade the CLI first, then platforms, then plugins, and rebuild after each step so you know which one broke the build.

Current Apache Cordova releases on npm, checked 2026-10-09
PackageLatestReleasedMain requirements
cordova (CLI)13.0.02025-11-25Node.js 20.17.0+ or 22.9.0+
cordova-android15.1.02026-07-22JDK 17, Build Tools 36, API 24 to 36, Gradle 8.14.2
cordova-ios8.1.12026-07-07Xcode 15+, deploys to iOS 13+

How do you update the Cordova CLI with npm?

The Cordova CLI is an npm package, so you update it with npm: run npm install -g cordova@latest, or npm update -g cordova, then confirm with cordova -v. Cordova CLI 13.0.0 requires Node.js 20.17.0 or newer, so upgrade Node.js first if node -v prints an older version.

node -v                          # must be 20.17.0+ (or 22.9.0+) for CLI 13
npm uninstall -g cordova         # optional clean slate, as the 13.0.0 release notes suggest
npm install -g cordova@latest
cordova -v                       # prints 13.0.0

On macOS and Linux a global install may fail with a permissions error. The Cordova installation guide allows sudo but recommends against it, and points to a Node version manager such as nvm instead, which installs global packages into your home directory. To pin the CLI per project, install it as a dev dependency with npm install --save-dev cordova and run it through npx cordova, so every developer and CI job builds with the same version.

How do you check which Cordova versions you have?

Run cordova -v for the CLI version and npm info cordova version for the newest published CLI. Inside a project, cordova platform ls lists installed platforms with versions, cordova plugin ls lists plugins with versions, and cordova info prints the whole environment in one block for bug reports.

cordova -v                  # installed CLI
npm info cordova version    # latest CLI on npm
cordova platform ls         # e.g. android 14.0.1, ios 7.1.1
cordova plugin ls           # every plugin id with its version
cordova info                # CLI, platforms, plugins, Node, toolchain
cordova requirements        # checks JDK, SDK, Gradle, Xcode for each platform
npm outdated                # compares package.json ranges with npm

Cordova saves platforms and plugins in package.json, and the platform and plugin versioning reference says package.json wins when it disagrees with config.xml. That makes npm outdated a quick audit: it lists every cordova-* package whose installed version trails the latest release. cordova requirements exits non-zero when a toolchain piece is missing, so it works as a CI gate.

How do you update a Cordova platform like Android or iOS?

Remove the platform and add it back at the version you want: cordova platform rm android, then cordova platform add [email protected]. The same pattern works for iOS with [email protected]. The platforms/ folder is a build artifact, so the CLI deletes and regenerates it, and any hand edits inside it are lost.

# Android
cordova platform rm android
cordova platform add [email protected]

# iOS (macOS only)
cordova platform rm ios
cordova platform add [email protected]

cordova prepare
cordova build

Why does cordova platform update fail?

The CLI still accepts cordova platform update (alias up), and the CLI reference still documents it. The platforms refuse it. We read the source of cordova-android 15.1.0 and cordova-ios 8.1.1: both reject the call with an error that begins "An in-place platform update is not supported" on Android and "The update platform command is not supported" on iOS, and both tell you to remove and re-add. Older blog posts that show cordova platform update android date from cordova-android 5 and earlier.

Two details from the same source code save time. Both error messages tell you to run cordova plugin save first, but cordova-lib 13 no longer has that subcommand; plugins are already recorded in package.json, and cordova platform add reinstalls every plugin in plugins/ into the new platform on its own. And if you run cordova platform add android with no version, the CLI takes the version from package.json, then from a <engine> tag in config.xml, and only then the latest release on npm. Pass the version explicitly so you get the one you meant.

How do you update Cordova plugins to the latest version?

Cordova has no cordova plugin update command. To update a plugin, remove it with cordova plugin rm <id> and add it back with an explicit version, such as cordova plugin add cordova-plugin-camera@latest. Removing a plugin also deletes its entry from package.json and config.xml unless you pass --nosave.

cordova plugin ls
npm outdated                                  # which cordova-plugin-* packages are behind
cordova plugin rm cordova-plugin-camera
cordova plugin add cordova-plugin-camera@latest
cordova prepare

When you add a plugin from npm without a version, cordova-lib reads the plugin's engines.cordovaDependencies field and picks the newest release that declares support for your installed platform versions. That is a sensible default after a platform upgrade. Plugins that declare variables at install time, such as API keys, need the same --variable NAME=value flags again when you re-add them, so copy them from package.json before removing.

Update platforms before plugins. Apache published a separate guide for plugin authors moving to cordova-ios 8, so a plugin that has not shipped a release since late 2025 may fail to compile against it. Check the plugin's changelog before you upgrade the platform.

What usually breaks after a Cordova update?

Most failed Cordova upgrades come from the toolchain, not your code: a Node.js version below 20.17 for CLI 13, missing Android SDK Platform 36 or Build Tools 36 for cordova-android 15, an Xcode older than 15 for cordova-ios 8, or a plugin that has not shipped a release for the new platform version.

When an upgrade goes wrong, roll back the same way you upgraded: cordova platform rm ios then cordova platform add [email protected] (or whatever cordova platform ls printed before), and commit package.json with the pinned version so the rest of the team gets it.

How do hot updates differ from Cordova app store updates?

A store update ships a new native binary through App Store Connect or Google Play Console and reaches users only after review and after they install it. A hot update, also called an over-the-air or live update, changes only the HTML, CSS and JavaScript the Cordova WebView loads, and reaches users on their next launch without review.

App store updateHot update
What can changeEverything: native code, plugins, platform version, permissions, iconsWeb layer only: JavaScript, HTML, CSS, config files
Needed forNew cordova-android or cordova-ios version, new or updated pluginsBug fixes, copy changes, UI tweaks, feature flags
ReviewApple reviews 50% of submissions in under 24 hours and 90% in under 48 hoursNone; you publish when ready
Reaches usersWhen each user installs the new versionOn the next app launch
RollbackSubmit another buildRevert the bundle on the server

Everything in the sections above, a new CLI, platform or plugin, changes the native binary, so it always needs a store release. Hot updates cover the web code that sits on top. Both stores allow that split within limits. Google Play's Device and Network Abuse policy exempts "JavaScript in a webview or browser" from its ban on self-updating apps, and Apple's App Review Guidelines forbid downloaded code that "introduces or changes features or functionality", so keep hot updates to fixes and changes consistent with what was reviewed.

People searching for how to make a Cordova app refresh usually mean one of two things. Reloading the WebView in place is one line of JavaScript, window.location.reload(), and it reloads the code already on the device. Getting new code onto the device without a store release is what Cordova Hot Update does: you install the plugin with cordova plugin add cordova-hot-update, upload a JavaScript fix in the dashboard, and the plugin fetches it on every launch. The getting started guide covers setup, and the plugin requires Cordova 9 or newer.

Ship the fix while the store build is in review. Cordova Hot Update pushes JavaScript, HTML and CSS changes to installed Android and iOS apps on their next launch. Plans start at $9 a month with a 7-day free trial. See pricing.

Key takeaways

Frequently asked questions

Is cordova platform update deprecated?

The Cordova CLI still parses cordova platform update, but current platforms refuse it. cordova-android 15 and cordova-ios 8 both return an error saying in-place updates are not supported and telling you to remove and re-add the platform. Use cordova platform rm followed by cordova platform add with an explicit version number.

Do I need to re-add plugins after updating a platform?

No. When you run cordova platform add, cordova-lib installs every plugin already in the project's plugins/ folder into the new platform. You only re-add a plugin when you want a newer version of it. Check cordova plugin ls after the platform add to confirm each plugin and its version came across.

Which Node.js version does Cordova 13 need?

Cordova CLI 13.0.0 declares Node.js 20.17.0 or newer, or 22.9.0 or newer, in its npm engines field. cordova-android 15 and cordova-ios 8 carry the same floor. Cordova CLI 12 accepted Node.js 16.13.0, so teams upgrading from CLI 12 on an older Node release must upgrade Node.js first.

Can I update a Cordova app without the App Store?

You can update the web layer without a store release. A hot update plugin such as cordova-hot-update downloads new JavaScript, HTML or CSS and applies it on the next launch. Native changes, including a new Cordova platform version, a new plugin or new permissions, still require a build submitted to Apple and Google.

How do I go back to an older Cordova platform version?

Remove the platform and add the older version explicitly, for example cordova platform rm android then cordova platform add [email protected]. Cordova writes the version to package.json, so commit that file. Every teammate and CI job that runs cordova prepare then restores the same pinned platform version.

About the author

Giacomo Balli builds and maintains the cordova-hot-update plugin and the Cordova Hot Update service.

Disclosure

Cordova Hot Update is our product. The Cordova commands, versions and requirements on this page come from the Apache Cordova documentation, release announcements and the published npm packages, checked on 2026-10-09.