Saltar al contenido

Reversiones

Aunque las Live Updates de Capgo te permiten entregar mejoras y correcciones rápidamente a tus usuarios, puede haber situaciones en las que necesites hacer rollback a una versión anterior de tu app. Quizás una nueva actualización introdujo un problema crítico inesperado, o tal vez quieras revertir un cambio específico mientras trabajas en una solución.

Respuesta corta: para hacer rollback de un live update defectuoso de Capacitor con Capgo, apunta el channel de nuevo al bundle anterior en el dashboard de Capgo o con el Capgo CLI; los dispositivos lo detectarán en su próxima comprobación de actualizaciones, y el updater también revierte automáticamente cuando un nuevo bundle no llama notifyAppReady() dentro de lo configurado appReadyTimeout.

Capgo ofrece varias formas de gestionar los builds de un channel y controlar la versión de tu app que reciben los usuarios, incluyendo opciones de rollback manual y mecanismos de seguridad automáticos.

Capgo incluye un mecanismo de seguridad integrado para proteger a tus usuarios de actualizaciones defectuosas. Si ocurre un error de JavaScript antes de la notifyAppReady() método, el plugin hará rollback automáticamente a la versión anterior que funcionaba.

Cuando se descarga y aplica una nueva actualización, Capgo espera que tu app llame a notifyAppReady() dentro de un plazo configurable para confirmar que la actualización se cargó correctamente. Este método indica que:

  • El bundle de JavaScript se cargó sin errores críticos
  • La funcionalidad principal de tu app funciona
  • Es seguro mantener la actualización

Si notifyAppReady() si no se debe a un error crítico o un crash de JavaScript, Capgo hará lo siguiente:

  1. Detectará que la actualización no se pudo inicializar correctamente
  2. Revertirá automáticamente al bundle funcional anterior
  3. Marcará la actualización problemática como fallida para evitar que se vuelva a aplicar
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Call this after your app has successfully initialized
await CapacitorUpdater.notifyAppReady()

Esta protección automática ayuda a asegurar que, incluso si subes por error una actualización con errores, tus usuarios no se queden con una app que no funciona.

Puedes configurar cuánto tiempo espera Capgo notifyAppReady() para ser llamada configurando el appReadyTimeout en tu configuración de Capacitor:

{
"plugins": {
"CapacitorUpdater": {
"appReadyTimeout": 10000
}
}
}

El appReadyTimeout el valor se especifica en milisegundos. El timeout por defecto suele ser de 10 segundos, pero puedes ajustarlo según los requisitos de inicialización de tu app. Si tu app tarda más en cargar debido a procesos de inicialización complejos, es recomendable aumentar este valor.

Cada vez que subes un nuevo build y lo asignas a un channel, Capgo mantiene un historial de esos builds. Si necesitas revertir una actualización específica, puedes seleccionar uno de estos builds anteriores para volver a desplegarlo en el channel.

Interfaz de rollback

La forma principal de hacer rollback es mediante la interfaz de rollback, ubicada en la cuarta pestaña (History) al ver un canal en el Dashboard de Capgo. Esta pestaña ofrece una vista completa de todos los builds disponibles para el canal, lo que te permite seleccionar y revertir fácilmente a cualquier versión anterior.

Para hacer rollback usando la pestaña History:

  1. Inicia sesión en el Dashboard de Capgo.

  2. Navega a la sección “Channels”.

  3. Haz clic en el nombre del canal al que quieras hacer rollback.

  4. Ve a la cuarta pestaña (History) en la vista del canal.

  5. Busca el build al que quieras revertir en el historial de builds.

  6. Selecciona ese build para convertirlo en el build activo del canal.

  7. Confirma que quieres hacer el rollback a este build.

Como segunda opción, también puedes hacer un rollback directamente desde la primera pestaña haciendo clic en el icono de la corona junto a cualquier build en el historial de builds del canal:

  1. En la primera pestaña de la vista del canal, busca el build al que quieres volver.
  2. Haz clic en el icono de la corona junto a ese build para convertirlo en el build activo del canal. Opciones de gestión del canal
  3. Confirma que quieres hacer el rollback a este build.

Tras el rollback, los dispositivos configurados para escuchar el canal actualizado recibirán el build anterior la próxima vez que busquen una actualización. El build restaurado se tratará como una nueva actualización, por lo que se aplicarán el flujo y las condiciones habituales.

Reapuntar un canal suele surtir efecto la próxima vez que un dispositivo busque una actualización. Las Capgo Notifications pueden enviar una notificación silenciosa de comprobación de actualizaciones a una app compatible mientras está en segundo plano. Con la integración del updater habilitada, la app puede buscar, descargar e instalar el rollback según su modo de actualización configurado.

Este es un método de aceleración, no un comando forzado para toda la flota. La entrega sigue siendo best-effort y depende de la programación en segundo plano del sistema operativo, la disponibilidad de red y el estado del dispositivo. No puede actualizar una app que esté offline o que se haya cerrado a la fuerza, así que no puede prometer un tiempo fijo para llegar a cada dispositivo.

Para configurar este método, sigue estos pasos: Notificaciones: Activar comprobaciones de Silent Update.

Si quieres detener temporalmente las actualizaciones en un canal mientras investigas un problema, puedes desvincular el canal de su build actual.

Para desvincular un canal:

  1. Ve al channel en el Dashboard de Capgo.

  2. Haz clic en el botón “Unlink” junto a la build actual.

  3. Confirma que quieres desvincular el canal.

Una vez desvinculado, el canal no distribuirá ninguna actualización nueva. Los dispositivos configurados para ese canal permanecerán en su build actual hasta que el canal se vincule de nuevo a una build.

Esto es útil si has detectado un problema con una actualización pero aún no estás seguro de a qué build quieres volver. Desvincular el channel te da tiempo para investigar sin lanzar más actualizaciones.

En situaciones más graves, es posible que quieras revertir todos los dispositivos de un channel al build web que se empaquetó originalmente con el binario nativo de tu app. Esto se conoce como el “built-in bundle”.

Para forzar el built-in bundle en un channel:

  1. Ve al channel en el Dashboard de Capgo.

  2. Haz clic en el botón “Built-in Bundle”.

  3. Confirma que quieres forzar el built-in bundle.

Al forzar el built-in bundle, todos los dispositivos configurados para ese channel volverán al build web original empaquetado en su próxima comprobación de actualizaciones. Esto ocurre sin importar en qué build estén actualmente.

Esta es una opción de rollback más agresiva que revertir a una build anterior específica, ya que descarta todas las Live Updates lanzadas desde la última vez que se publicó la app en las tiendas.

Para detectar errores rápidamente y minimizar el impacto de actualizaciones problemáticas, es fundamental tener un plan para monitorear tus lanzamientos y responder a los incidentes.

Algunas estrategias incluyen:

Para un rollout limitado a un cohort, usa Despliegues progresivos para pausar la exposición o limpiar su objetivo antes de cambiar el bundle estable de todo el canal.

  • Monitoreo de crash reports y feedback de usuarios tras lanzar una actualización
  • Usar rollouts graduales o un sistema de canales por etapas para probar actualizaciones en un grupo reducido antes del lanzamiento general
  • Tener un proceso de decisión claro sobre cuándo hacer rollback, unlink o forzar el bundle integrado, y quién tiene la autoridad para hacerlo
  • Comunicar a los usuarios el problema y su resolución, si resulta apropiado

Al combinar un monitoreo cuidadoso con la capacidad de gestionar rápidamente actualizaciones problemáticas, puedes ofrecer una experiencia de app en mejora continua minimizando las interrupciones para tus usuarios.

Si estás usando Reversiones para planificar rollbacks y control de versiones, conéctalo con Segmentación por versión para los detalles de implementación en Version Targeting, Comportamiento de actualización por el detalle de implementación en Update Behavior, bundle para los detalles de implementación en el bundle, Live Updates de Capgo para el flujo de trabajo de Capgo Live Updates, y Estrategias de rollback para Capacitor Live Updates para el contexto práctico en Rollback Strategies para Capacitor Live Updates.