Saltar al contenido principal

Segmentación por versión

Envía a cada versión nativa solo los bundles que puede ejecutar

Los usuarios actualizan desde la tienda a su propio ritmo, por lo que varias versiones nativas de tu app pueden estar activas a la vez. Capgo verifica las dependencias nativas de cada bundle, bloquea actualizaciones mediante reglas de versión y puede dirigir cada versión nativa a su propio canal.

Verifica la compatibilidad nativa antes del upload

La compatibilidad del bundle compara los paquetes nativos de tu proyecto con el bundle activo en el channel. Usa --fail-on-incompatible en tu CI para detener un upload que requiera un nuevo binario.

Docs de compatibilidad nativa

Establece un mínimo de versión nativa por bundle

Aplica la estrategia de metadata al channel y haz el upload con --auto-min-update-version. Los dispositivos con una versión nativa inferior al mínimo del bundle lo omitirán y mantendrán su bundle actual.

Docs de segmentación de versiones

Bloquea updates entre líneas semver

--disable-auto-update major, minor, o patch evita que un dispositivo reciba un bundle fuera de su línea de versión nativa. Estas reglas solo comparan números de versión; no inspeccionan el code nativo.

Tipos de update y bloqueo de versiones

Un canal por versión nativa

Configura defaultChannel en la config Capacitor de cada build nativo, por ejemplo v2 o v3. Cada línea tiene sus propios bundles, y una línea antigua puede quedarse en su último bundle funcional.

Docs de segmentación de versiones

Cómo funciona

Cómo despliegan con Capgo los equipos con varias versiones nativas

Un setup de CI que permite que el lane de live update y el lane de la store funcionen en paralelo. Cada comando de abajo proviene de la documentación de Capgo CLI.

  1. Pregunta si el commit necesita un build nativo

    build needed compara tus paquetes nativos con el canal. Imprime yes y sale con code 1 cuando se requiere un release de la store, y no cuando basta con un live update.

    npx @capgo/cli@latest build needed com.example.app --channel production
    Referencia de build needed
  2. Cambia el canal a la estrategia de metadata

    Hazlo una sola vez. A partir de ahí, cada bundle lleva una versión nativa mínima y los dispositivos por debajo se lo saltan.

    npx @capgo/cli@latest channel set production com.example.app \
      --disable-auto-update metadata
    Docs de segmentación de versiones
  3. Sube Live Updates a diario

    Mantén --auto-min-update-version en cada upload. --fail-on-incompatible detiene el job si el bundle requiere un code nativo que el channel no tiene.

    npx @capgo/cli@latest bundle upload --channel production \
      --auto-min-update-version \
      --fail-on-incompatible
    Docs de compatibilidad nativa
  4. Sube el bundle para un nuevo Native Build

    Cuando se lance el nuevo binario, sube su bundle sin --fail-on-incompatible. Capgo establece un mínimo para que los builds antiguos lo omitan, y las validaciones posteriores comparan contra los nuevos paquetes nativos.

    npx @capgo/cli@latest bundle upload --channel production \
      --auto-min-update-version
    Workflow de canales Native y OTA

Migración de Appflow

¿Vienes de Ionic Appflow?

Appflow vinculaba los live updates con las versiones nativas por ti. Con Capgo obtienes el mismo resultado usando channels y reglas de versión:

  1. Crea un channel para cada línea nativa, por ejemplo v1 y v2.
  2. Configura el defaultChannel en la config de Capacitor de cada Native Build según su channel.
  3. Sube cada bundle al channel de la línea nativa para la que fue construido.
  4. Mantén --auto-min-update-version en los uploads para que un bundle que requiera un code nativo más reciente salte builds antiguos.
Guía de migración de Appflow
Channel por línea nativa
// capacitor.config.ts in your 2.x native builds
plugins: {
  CapacitorUpdater: {
    defaultChannel: 'v2',
  },
},

# ship a fix to 2.x users only
npx @capgo/cli@latest bundle upload --channel v2 \
  --auto-min-update-version

# 1.x devices stay on their channel's current bundle

Casos de uso comunes

Un nuevo plugin nativo

Tu binario 2.0 añade un plugin de cámara. Sube el bundle que lo usa con --auto-min-update-version, y los dispositivos 1.x lo omitirán hasta que instalen la 2.0.

Docs de compatibilidad nativa

Despliegue gradual

Envía un bundle a una parte de un canal con --rollout, monitoriza los datos de instalación y fallos, y luego promociónalo o haz un rollback.

Docs de rollouts progresivos

Retirar una versión antigua

Deja de subir cambios al canal v1. Los dispositivos en él mantendrán su último bundle funcional mientras la v2 sigue recibiendo updates.

Docs de segmentación de versiones

Cada versión nativa apunta a su propio canal

Un ejemplo de distribución con tres versiones nativas en producción.

  • Native 3.x
    v3
    Nuevos bundles
  • Native 2.x
    v2
    Solo fixes
  • Native 1.x
    v1
    Sin nuevos bundles

Lanza features a v3, fixes a v2 y nada a v1. Los dispositivos en v1 mantienen su último bundle funcional.

Apps creadas con Capacitor

Las apps públicas deben soportar versiones nativas viejas y nuevas

Las apps de servicios cívicos, salud o clima pueden requerir soporte para versiones antiguas de Android y distintos modelos de dispositivos. Con el version targeting, cada Native Build mantiene el web bundle más reciente compatible sin imponer una única ruta de actualización para todos.

Icono de la app e-Título SOCIAL

e-Título

App de identidad ciudadana con gran necesidad de compatibilidad con dispositivos públicos.

Instalaciones en Google Play
54,9M
Calificación en la tienda
4.8
Icono de la app Conecte SUS MÉDICO

Conecta TUS

App de salud donde shells nativas antiguas y nuevas pueden requerir distintos web bundles.

Instalaciones en Google Play
27,7M
Calificación en la tienda
4.6
Icono de la app Windy.com - Weather Forecast CLIMA

Windy.com - Pronóstico del tiempo

App de clima donde la capacidad del dispositivo y el rendimiento del mapa varían según la versión.

Instalaciones en Google Play
32,9M
Calificación en la tienda
4.7

Testimonios de clientes

Lo que dicen los equipos que publican con Capgo

5.0/5 valorado por equipos de desarrollo 9,400+ equipos Leer reseñas

no-tone @ Webincode

Desarrollador, Webincode

“Poder añadir Device IDs a grupos concretos y enviar los cambios solo a esos grupos es un salvavidas.”

Nate van Jole

CTO, Privado

“La configuración tomó menos de un día. Los rollouts por canales me permiten probar en mi propio dispositivo antes de lanzarlo a producción.”

Retrato de Sergiu S

Sergiu S

Desarrollador principal, drivolino GmbH

“El plugin Capgo Capacitor Updater transformó por completo cómo lanzamos actualizaciones. Lo que antes tardaba días ahora tarda solo minutos.”

FAQ

Dudas sobre versiones en producción

Para equipos que gestionan usuarios que actualizan la app de la store en distintos momentos.

¿Qué pasa con los usuarios que nunca actualizan la app nativa?

Seguirán recibiendo bundles compatibles con su versión nativa. Con la estrategia de metadata, si un bundle requiere una versión nativa superior a la suya, se omite y el usuario mantiene su bundle actual.

Docs de segmentación de versiones

¿Es --disable-auto-update suficiente para evitar crashes?

No. Las reglas de versión solo comparan números de versión, por lo que un cambio nativo en un minor o patch release se enviará igual. Usa --fail-on-incompatible o --auto-min-update-version para validar tus paquetes nativos.

Docs de compatibilidad nativa

¿Cómo sabe el CI si un cambio requiere un release en la store?

Ejecuta build needed o compara el releaseType del bundle contra el channel. Ambos comparan la metadata de los paquetes nativos. No detectan cada edición en ios/, android/ o capacitor.config, así que protege también esas rutas en git.

Elige OTA o Native Build en tu CI

Nos estamos migrando de Ionic Appflow. ¿Podemos mantener las actualizaciones con versiones coincidentes?

Sí. Usa un canal por cada línea nativa con defaultChannel, o la estrategia de metadatos con --auto-min-update-version. La guía de migración de Appflow te explica cómo configurarlo.

Guía de migración de Appflow

¿Qué pasa si ya se envió un bundle incompatible?

Apunta el channel al último bundle compatible de su historial, o fuerza el bundle integrado y lanza el Native Build. notifyAppReady() hace rollback de un bundle que no logra iniciar, pero no sustituye a un code nativo compatible.

Docs de rollbacks

Mantén cada versión nativa con un bundle compatible

Configura la estrategia de metadata y un check de compatibilidad en tu CI durante la prueba gratuita de 14 días. Sin tarjeta de crédito.