Saltar al contenido principal

La alternativa a Cordova Hot Code Push en 2026

cordova-hot-code-push y CodePush para Cordova están muertos. Aquí tienes una alternativa mantenida de hot code push para Cordova, con configuración, pasos de migración y rollback.

Ilustración del logo de Cordova para una guía alternativa a Cordova hot code push

Si buscas una alternativa de hot code push para Cordova, probablemente sea porque cordova-hot-code-push-plugin y el CodePush de Microsoft para Cordova dejaron de funcionar o de recibir mantenimiento. Una opción mantenida hoy es @capgo/cordova-updater, un plugin de Cordova que lleva Capgo live updates a apps de Cordova Android 13+ y Cordova iOS 7+, con canales, rollback y bundles cifrados, sin obligarte a migrar a Capacitor primero.

El estado de las actualizaciones en vivo de Cordova en 2026

cordova-hot-code-push está archivado

El nordnet/cordova-hot-code-push el repositorio está archivado en GitHub. El último cambio de code fue en septiembre de 2018 y la última versión de npm cordova-hot-code-push-plugin es 1.5.3. Fue diseñado para las plataformas de Cordova y la carga de WebView basada en archivos de esa época. El Android moderno de Cordova sirve la app desde https://localhost a través de un manejador de rutas, y Cordova iOS usa WKWebView con un app:// esquema. Un plugin que asume file:// carga no encaja con ese modelo, y nadie lo está actualizando.

Las instalaciones existentes pueden seguir funcionando si nunca actualizas las plataformas de Cordova. Esa es la trampa: no puedes pasar a un Android de Cordova actual o a Xcode sin arriesgar el mecanismo de actualización.

CodePush para Cordova ha desaparecido

Microsoft archivó cordova-plugin-code-push, terminó el soporte de Cordova en App Center en 2022 y retiró el servicio principal de App Center, incluyendo build, distribución y CodePush, el 31 de marzo de 2025. El plugin se comunicaba con el servicio CodePush en App Center, por lo que ya no hay un backend que sirva actualizaciones. Si pasaste a autoalojar el servidor CodePush, sigues dependiendo de un plugin de cliente archivado.

Ionic Appflow

cordova-plugin-ionic conectaba apps de Cordova con las actualizaciones en vivo de Ionic Appflow. Ionic ha anunciado que Appflow se está cerrando, por lo que los equipos que lo usan también buscan una alternativa. Cubrimos esa ruta en la Guía de alternativas a Appflow.

Lo que debe tener un reemplazo

Antes de elegir una herramienta, compárala con estos requisitos:

Requisito Por qué es importante
Funciona con Android e iOS de Cordova actuales Los requisitos de las tiendas obligan a actualizar las plataformas: Xcode 26 para subir a App Store desde abril de 2026, y aumentos anuales del target API en Google Play
Sin dependencia de cordova-plugin-ionic-webview Ese plugin está desactualizado y entra en conflicto con los manejadores de esquemas modernos
Rollback automático A bad bundle must not brick the app
Canales Prueba con usuarios internos antes de todos
Bundles firmados o cifrados Evita la manipulación de code entregado por la red
Segmentación por versión Nunca envíes JavaScript que requiera un shell nativo más nuevo
CLI compatible con CI Las releases deben ser un solo comando en tu pipeline
Mantenido Revisa las releases recientes, no solo las estrellas

Capgo para Cordova

@capgo/cordova-updater usa el mismo API de JavaScript que @capgo/capacitor-updater y el mismo backend en la nube de Capgo. Los bundles, canales, estadísticas y firmas funcionan igual para clientes de Cordova, Capacitor y Electron.

Requisitos

  • Cordova CLI 12+
  • Cordova Android 13+ (predeterminado https://localhost/ scheme)
  • Cordova iOS 7+ (predeterminado app://localhost/ scheme)
  • cordova-plugin-ionic-webview eliminado

Comprueba tus plataformas:

cordova platform ls

Actualiza si es necesario:

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

Instalar

Crea la app en Capgo (dashboard o CLI) y luego añade el plugin con tu ID de 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

Puedes configurar más opciones al instalar. Son variables del plugin, así que ejecuta cordova prepare después de modificarlos:

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 por defecto es atBackground, que descarga actualizaciones en segundo plano y las aplica la próxima vez que la app pase a segundo plano. Otros modos incluyen atInstall, onLaunch y off para un control totalmente manual.

Indicar al plugin que la app se inició correctamente

Esta es la única línea que no puedes omitir. Llama a notifyAppReady() en cada inicio, después de deviceready. Si un nuevo bundle no lo llama dentro de APP_READY_TIMEOUT milisegundos, el plugin lo marca como fallido y vuelve al último bundle funcional.

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

Llámalo después de que tu app se haya renderizado, no justo al inicio del script, para detectar bundles que fallan al arrancar.

Flujo de actualización manual

Si configuras AUTO_UPDATE=off, controlas cuándo verificar, descargar y aplicar:

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 });
  }
});

El paquete incluye tipos de TypeScript:

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

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

Publicar una actualización

Compila tu www carpeta y súbela:

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

Agrégalo a tu CI después de los tests. La página de Live Updates muestra despliegues de canales, estadísticas y rollback desde el dashboard.

Migrar desde cordova-hot-code-push

  1. Elimina el plugin antiguo y su configuración. Eliminar cordova-hot-code-push-plugin, chcp sección en config.xml, y la cordova-hcp CLI y chcp.json / chcp.manifest generación desde tu build.
  2. Eliminar cordova-plugin-ionic-webview si está presente, y prueba que la app funcione en el WebView de Cordova por defecto.
  3. Actualiza las plataformas de Cordova a Android 13+ e iOS 7+.
  4. Instalar @capgo/cordova-updater y añade notifyAppReady().
  5. Publica un nuevo build en la tienda. Las instalaciones antiguas conservan el plugin antiguo. Solo el nuevo binario contiene el actualizador Capgo.
  6. Sube tu primer bundle a un canal de pruebas, verifícalo en dispositivos y luego promuévelo a producción.

Los usuarios que no actualicen desde la tienda permanecerán con el mecanismo antiguo hasta que lo hagan. Mantén tu servidor de actualizaciones anterior en línea durante la transición si aún funciona, o acepta que esos usuarios no reciban actualizaciones OTA hasta que instalen el nuevo binario.

Migración desde CodePush para Cordova

  • Reemplazar codePush.sync() llamadas con notifyAppReady() y ya sea el modo automático o el getLatest / download / next flujo.
  • Reemplaza las claves de despliegue por canales (DEFAULT_CHANNEL).
  • Reemplazar code-push release-cordova con bunx @capgo/cli@latest bundle upload.
  • Elimina las CodePushDeploymentKey preferencias de config.xml.

Para una versión paso a paso para usuarios de App Center, consulta la guía de migración de App Center.

Seguridad y reglas de la tienda

  • Encryption and signing. Configurar PUBLIC_KEY al instalar y usa las claves de cifrado de CLI, para que los dispositivos solo acepten bundles firmados para tu app.
  • Políticas de Apple y Google. Ambos permiten actualizar code interpretado, como JavaScript, de forma remota, siempre que no cambies el propósito de la app ni añadas funciones que requieran revisión. Los code nativos, los nuevos plugins y los cambios de permisos requieren una publicación en la tienda.
  • Segmentación por versión. Si un bundle necesita un plugin nativo que solo existe en un binario más reciente, dirígelo a esa versión nativa. La documentación de Capgo sobre compatibilidad con live update explicar cómo.

Solución de problemas

Se descargan los bundles, pero la app muestra la versión anterior. Aún estás usando cordova-plugin-ionic-webview, o un esquema personalizado. Elimínalo y usa los valores por defecto.

La app hace rollback tras cada actualización. notifyAppReady() no se llama, o se llama después de un error. Revisa la consola del dispositivo y confirma que la llamada se ejecute en cada inicio.

El build de iOS falla tras actualizar la plataforma. Cordova iOS 7+ requiere un Xcode actualizado. Las subidas a la App Store requieren Xcode 26. Puedes generar assets de firma con generador de certificados iOS. Una vez que migres a Capacitor, Build de Capgo puede generar builds de iOS firmados en la nube sin un Mac local.

Updates work on Android but not iOS. Verifica que el scheme de iOS en config.xml sea el scheme app por defecto con el localhost hostname.

¿Deberías cambiarte a Capacitor en su lugar?

No es necesario. Capgo para Cordova existe para que puedas seguir publicando mientras decides. Capacitor aporta una capa nativa con mantenimiento, Swift Package Manager en iOS y un ecosistema de plugins más amplio. Cuando estés listo, mantén el mismo app ID de Capgo y los mismos canales, y solo cambia el plugin del cliente. Nuestra Guía de migración de Cordova a Capacitor te explica cómo hacerlo.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.