Aller au contenu principal

Alternative au Hot Code Push de Cordova en 2026

cordova-hot-code-push et CodePush pour Cordova sont morts. Voici une alternative maintenue pour le hot code push sur Cordova, avec configuration, étapes de migration et rollback.

Illustration du logo Cordova pour un guide sur les alternatives au hot code push de Cordova

Si vous cherchez une alternative au hot code push de Cordova, c'est probablement parce que cordova-hot-code-push-plugin et le CodePush de Microsoft pour Cordova ont tous deux cessé de fonctionner ou d'être maintenus. Une option maintenue aujourd'hui est @capgo/cordova-updater, un plugin Cordova qui apporte les live updates Capgo aux applications Cordova Android 13+ et Cordova iOS 7+, avec des canaux, le rollback et des bundles chiffrés, sans vous forcer à migrer d'abord vers Capacitor.

L'état des live updates Cordova en 2026

cordova-hot-code-push est archivé

Le nordnet/cordova-hot-code-push le dépôt est archivé sur GitHub. Le dernier changement code date de septembre 2018 et la dernière release npm de cordova-hot-code-push-plugin est la 1.5.3. Elle a été conçue pour les plateformes Cordova et le chargement de la WebView à partir de fichiers de l'époque. Cordova Android moderne sert l'application depuis https://localhost via un gestionnaire de chemin, et Cordova iOS utilise WKWebView avec un app:// schéma. Un plugin qui suppose que le file:// chargement ne correspond pas à ce modèle, et personne ne le met à jour.

Les installations existantes peuvent encore sembler fonctionner si vous ne mettez jamais à jour les plateformes Cordova. C'est là le piège : vous ne pouvez pas passer à une version actuelle de Cordova Android ou Xcode sans risquer de casser le mécanisme de mise à jour.

CodePush pour Cordova n'existe plus

Microsoft a archivé cordova-plugin-code-push, a mis fin au support de Cordova dans App Center en 2022, et a retiré le service principal d’App Center — build, distribution et CodePush — le 31 mars 2025. Le plugin communiquait avec le service CodePush d’App Center, il n’y a donc plus de backend pour distribuer les mises à jour. Si vous hébergez vous-même le serveur CodePush, vous dépendez toujours d’un plugin client archivé.

Ionic Appflow

cordova-plugin-ionic connectait les applications Cordova aux live updates d’Ionic Appflow. Ionic a annoncé l’arrêt progressif d’Appflow, les équipes qui l’utilisent cherchent donc aussi une alternative. Nous détaillons cette migration dans le guide des alternatives à Appflow.

Ce qu'une alternative doit offrir

Avant de choisir un outil, vérifiez qu’il respecte ces critères :

Exigence Pourquoi c'est important
Works with current Cordova Android and iOS Les exigences des stores imposent des mises à jour de plateforme : Xcode 26 pour les uploads sur l’App Store depuis avril 2026, et une augmentation annuelle de la cible Android API sur Google Play
Aucune dépendance à cordova-plugin-ionic-webview Ce plugin est obsolète et entre en conflit avec les gestionnaires de schéma modernes
Rollback automatique Un mauvais bundle ne doit pas brouiller l’app
Canaux Tester auprès d'utilisateurs internes avant tout le monde
Bundles signés ou chiffrés Empêche toute altération de code transmis via le réseau
Ciblage par version Ne jamais envoyer de JavaScript nécessitant un shell natif plus récent
Compatible CI CLI Les releases doivent être une seule commande dans votre pipeline
Maintenu Check recent releases, not just stars

Capgo pour Cordova

@capgo/cordova-updater utilise le même API JavaScript que @capgo/capacitor-updater et le même backend cloud Capgo. Les bundles, canaux, statistiques et signature fonctionnent de la même manière pour les clients Cordova, Capacitor et Electron.

Prérequis

  • Cordova CLI 12+
  • Cordova Android 13+ (défaut https://localhost/ scheme)
  • Cordova iOS 7+ (défaut app://localhost/ scheme)
  • cordova-plugin-ionic-webview supprimé

Vérifiez vos plateformes :

cordova platform ls

Mettez à jour si nécessaire :

cordova platform rm android && cordova platform add android@latest
cordova platform rm ios && cordova platform add ios@latest

Installer

Créez l'app dans Capgo (dashboard ou CLI), puis ajoutez le plugin avec votre ID d'app :

bunx @capgo/cli@latest login
bunx @capgo/cli@latest app add com.example.app --name "My Cordova App"

cordova plugin add @capgo/cordova-updater --variable APP_ID=com.example.app
cordova prepare android ios

Vous pouvez définir d'autres options lors de l'installation. Ce sont des variables de plugin, lancez donc cordova prepare après les avoir modifiées :

cordova plugin add @capgo/cordova-updater \
  --variable APP_ID=com.example.app \
  --variable DEFAULT_CHANNEL=production \
  --variable AUTO_UPDATE=atBackground \
  --variable APP_READY_TIMEOUT=10000

AUTO_UPDATE par défaut sur atBackground, qui télécharge les mises à jour en arrière-plan et les applique la prochaine fois que l'app passe en arrière-plan. D'autres modes incluent atInstall, onLaunch et off pour un contrôle totalement manuel.

Indiquez au plugin que l'app a démarré correctement

C'est la ligne que vous ne pouvez pas ignorer. Appelez notifyAppReady() à chaque lancement après deviceready. Si un nouveau bundle ne l’appelle pas dans les APP_READY_TIMEOUT millisecondes, le plugin le marque comme échoué et effectue un rollback vers le dernier bundle fonctionnel.

document.addEventListener('deviceready', async () => {
  const { Updater } = cordova.plugins;
  await Updater.notifyAppReady();
}, false);

Appelez-l’après que votre application a réellement rendu son contenu, et non tout en haut de votre script, afin de détecter un bundle qui plante au démarrage.

Flux de mise à jour manuel

Si vous définissez AUTO_UPDATE=off, vous contrôlez quand vérifier, télécharger et appliquer :

document.addEventListener('deviceready', async () => {
  const { Updater } = cordova.plugins;
  await Updater.notifyAppReady();

  const latest = await Updater.getLatest();
  if (latest.url && !latest.error) {
    const bundle = await Updater.download({
      url: latest.url,
      version: latest.version,
      checksum: latest.checksum,
    });
    // Applied on next background/restart
    await Updater.next({ id: bundle.id });
  }
});

Les types TypeScript sont fournis avec le package :

import type { UpdaterPlugin } from '@capgo/cordova-updater';

declare const cordova: { plugins: { Updater: UpdaterPlugin } };

Publier une mise à jour

Construisez votre www dossier et envoyez-le :

bun run build
bunx @capgo/cli@latest bundle upload com.example.app --path ./www --channel production

Intégrez-le dans votre CI après vos tests. Le page live updates affiche les déploiements progressifs par canal, stats et rollback depuis le dashboard.

Migrer depuis cordova-hot-code-push

  1. Supprimez l'ancien plugin et sa config. Supprimer cordova-hot-code-push-plugin, les chcp section dans config.xml, et le cordova-hcp CLI et chcp.json / chcp.manifest génération à partir de votre build.
  2. Supprimer cordova-plugin-ionic-webview si présent, et vérifiez que l'app fonctionne dans la WebView Cordova par défaut.
  3. Mettre à niveau les plateformes Cordova vers Android 13+ et iOS 7+.
  4. Installer @capgo/cordova-updater et ajouter notifyAppReady().
  5. Publier un nouveau build store. Les anciennes installations conservent l’ancien plugin. Seul le nouveau binaire contient le module de mise à jour Capgo.
  6. Envoyez votre premier bundle vers un canal de test, le vérifier sur des appareils, puis le promouvoir en production.

Les utilisateurs qui ne mettent pas à jour depuis le store restent sur l’ancien mécanisme jusqu’à ce qu’ils le fassent. Gardez votre ancien serveur de mise à jour en ligne pendant la transition s’il fonctionne encore, ou acceptez que ces utilisateurs ne reçoivent pas de mises à jour OTA tant qu’ils n’ont pas installé le nouveau binaire.

Migration depuis CodePush pour Cordova

  • Remplacer codePush.sync() appels avec notifyAppReady() et soit le mode automatique, soit le getLatest / download / next flux.
  • Remplacez les clés de déploiement par des canaux (DEFAULT_CHANNEL).
  • Remplacer code-push release-cordova par bunx @capgo/cli@latest bundle upload.
  • Supprimez l'import CodePushDeploymentKey préférences de config.xml.

Pour une version pas à pas destinée aux utilisateurs d'App Center, consultez le guide de migration App Center.

Sécurité et règles des stores

  • Chiffrement et signature. Définissez PUBLIC_KEY lors de l'installation et utilise les clés de chiffrement de CLI, afin que les appareils n'acceptent que les bundles signés pour votre application.
  • Politiques d’Apple et de Google. Both allow updating interpreted code such as JavaScript over the air, as long as you do not change the app’s purpose or add features that would need review. Native code, new plugins and permission changes need a store release.
  • Ciblage par version. Si un bundle nécessite un plugin natif présent uniquement dans un binaire plus récent, ciblez cette version native. La documentation Capgo sur compatibilité live update explique comment faire.

Troubleshooting

Le bundle est téléchargé, mais l’application affiche l’ancienne version. Vous utilisez encore cordova-plugin-ionic-webview, ou un schéma personnalisé. Supprimez-l’et utilisez les valeurs par défaut.

App rolls back after every update. notifyAppReady() n’est pas appelé, ou est appelé après une erreur. Vérifiez la console sur l’appareil et confirmez que l’appel s’exécute à chaque démarrage.

Échec du build iOS après mise à niveau de la plateforme. Cordova iOS 7+ nécessite une version récente de Xcode. Les uploads sur l’App Store exigent Xcode 26. Vous pouvez générer les assets de signature avec Générateur de certificats iOS. Une fois que vous passez à Capacitor, Build Capgo peut générer des builds iOS signés dans le cloud sans Mac local.

Updates work on Android but not iOS. Vérifiez que le schéma iOS dans config.xml est la valeur par défaut app schéma avec localhost hostname.

Faut-il plutôt passer à Capacitor ?

Ce n’est pas obligatoire. Capgo pour Cordova existe pour que vous puissiez continuer à livrer pendant que vous réfléchissez. Capacitor apporte une couche native maintenue, Swift Package Manager sur iOS et un écosystème de plugins plus vaste. Quand vous serez prêt, conservez le même ID d’application Capgo et les mêmes canaux, puis remplacez le plugin client. Notre Guide de migration de Cordova vers Capacitor vous guide pas à pas.

Live updates pour les apps Capacitor

Lorsqu'un bug de la couche web est en ligne, déployez le correctif via Capgo au lieu d'attendre des jours l'approbation des stores. Les utilisateurs reçoivent la mise à jour en arrière-plan, tandis que les changements natifs suivent le circuit de validation habituel.

Les derniers articles du blog

Capgo vous offre les meilleures informations pour créer une application mobile vraiment professionnelle.