Gerente de contenido
Cómo mantener actualizaciones de __CAPGO_KEEP_0__ ligero y rápido
- La mejor actualización en vivo es la que apenas nota el usuario.
- Eso suele significar tres cosas:
- La recuperación es instantánea si algo sale mal.
El mismo consejo de 'mantén OTA delgado' que funciona en el territorio de React Native también se aplica a Capgo. La diferencia es que Capgo da a los equipos de Capacitor un par de palancas adicionales: Actualizaciones delta, canales, rollback automático, diseño de versión, y cifrado de extremo a extremo opcional Si los utiliza juntos, obtendrá paquetes más pequeños, instalaciones más rápidas y mucho menos desorden operativo..
Importa incluso cuando el MAU permanece igual
Un detalle útil específico de __CAPGO_KEEP_0__: el MAU de __CAPGO_KEEP_1__ es efectivamente el número de dispositivos activos mensuales que contactaron con el servicio de actualización en los últimos 30 días.
One useful Capgo-specific detail: Capgo MAU is effectively the number of monthly active devices that contacted the update service in the last 30 days.
__CAPGO_KEEP_0__ es __CAPGO_KEEP_1__ para __CAPGO_KEEP_2__.
- Descargas más rápidas en celular o Wi-Fi débil
- Mejor experiencia con actualizaciones directas
- Menos ancho de banda desperdiciado en lanzamientos fallidos o revertidos
- Radio de explosión más pequeño al probar o estagiar un lanzamiento
Actualizaciones ágiles son realmente sobre velocidad, seguridad y disciplina operativa
1. Por defecto, utilizar actualizaciones Delta
Si haces solo una cosa, haz esto
Capgo’s Actualizaciones Delta envían solo archivos que cambiaron entre versiones en lugar de descargar nuevamente el paquete web completo
bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta
Cuando tu paso de QA esté listo:
bunx @capgo/cli@latest bundle upload --channel production --delta
If deseas que CI permanezca estricto, utiliza --delta-only para que nadie accidentalmente regrese a subir archivos de bundle completos:
bunx @capgo/cli@latest bundle upload --channel production --delta-only
Sólo utiliza --delta-only cuando tu flota de producción admite actualizaciones de Delta. En versiones mixtas de plugins, los dispositivos más antiguos que no admiten la entrega de deltas basada en manifestos no podrán descargar esa actualización.
Esto importa aún más si utilizas directUpdate, porque el tiempo entre “se encontró la actualización” y “se recargó la aplicación” se vuelve visible para el usuario.
2. Trata a los activos como activos, no como bagaje de JavaScript
Los activos grandes son donde los bundles OTA se hinchan silenciosamente.
Algunas reglas prácticas:
- No incluyas grandes imágenes o medios dentro de JavaScript cuando un archivo de activo normal lo hará.
- Mantén el contenido que cambia con frecuencia en tu propio CDN o API si no necesita vivir dentro del paquete de aplicación que se envía.
- Cuida con las imágenes de marketing, los videos de onboarding y los activos de campaña que se reemplazan cada lanzamiento.
- Mantén estables los activos. Con actualizaciones de Delta, los archivos sin cambios se reutilizan en lugar de descargarlos de nuevo.
Esta es una de las formas más fáciles de mantener Capgo rápido a medida que tu aplicación crece. El peor patrón es una pequeña corrección de interfaz que fuerza a los usuarios a descargar una pila de medios no relacionados.
3. Mantén las versiones nativas para cambios reales nativos
Capgo updates the web layer: HTML, CSS, JavaScript, and assets loaded at runtime.
No es el canal adecuado para:
- nuevos plugins nativos,
- cambios de permisos,
capacitor.config.tscambios,- cualquier cosa que modifique el estado del proyecto nativo de iOS o Android.
Esa línea importa para el rendimiento también. Si sigues metiendo cambios estructurales importantes en la vía de actualización OTA, tu estrategia de actualización se vuelve más pesada y riesgosa con el tiempo.
Usa dos vías de lanzamiento con propósito:
Vía nativa
Para cambios de plugins, cambios de permisos y configuración nativa:
bun run build
bunx cap sync
Entonces envía una liberación de tienda normal.
Capgo línea
Para iteraciones de capa web seguras:
bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta
Refresca también tu línea base nativa regularmente si recientemente agregaste una gran cantidad de activos de larga vida. Una construcción de tienda fresca incorpora esa nueva línea base, lo que mantiene las diferencias futuras de Capgo más pequeñas.
4. Utiliza canales para mantener el tamaño de la actualización pequeño
Una actualización 'delgada' no solo se trata de megabytes. También se trata de cuántos dispositivos reciben la actualización antes de que sepas que es buena.
Capgo’s El sistema de canales es la forma más limpia de controlar eso:
stagingpara QAbetapara probadores invitadosproductionpara todoshotfixpara la recuperación de emergencia
Un flujo simple se parece a esto:
- Subir a
staging. - Validar en dispositivos reales.
- Desplegar gradualmente, ya sea a través de canales controlados o de un despliegue porcentual.
- Revertir inmediatamente si la salud disminuye.
Si su aplicación tiene varias bases nativas en el mundo, pair los canales con diseño de versión. Eso mantiene los paquetes incompatibles o innecesariamente pesados alejados de los binarios más antiguos.
Para los equipos que desean incluso más estrictos ciclos de revisión, Capgo también funciona bien para previstas de PR. Eso permite a product, QA y stakeholders probar cambios de JS sin tener que esperar a nuevos builds internos de TestFlight o Play.
5. Si habilitas actualizaciones directas, optimiza el camino de arranque duro
Cuanto más rápido quieras que se aplique una actualización, más disciplinado debe ser tu camino de arranque.
Capgo’s comportamiento de actualización los docs recomiendan explícitamente la combinación directUpdate con actualizaciones Delta. Eso es la configuración por defecto correcta.
La segunda barrera es notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
Si tu aplicación no informa que está lista dentro de la ventana de 10 segundos por defecto, o dentro de lo que notifyAppReady() tú hayas configurado en tu __CAPGO_KEEP_0__ config, __CAPGO_KEEP_1__ puede marcar esa versión como inválida y restaurar la versión anterior buena. Ese comportamiento de rollback es lo que quieres en producción, pero también significa que debes mantener el arranque limpio: appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:
- Llamar
notifyAppReady()en el lugar correcto - Evita realizar trabajo de arranque lento en el camino crítico
- Guarda y restaura cuidadosamente el estado de la aplicación si se recarga inmediatamente
- Prueba escenarios de mala red y dispositivos de bajo rendimiento antes de un lanzamiento amplio
Si no lo has revisado recientemente, el guide de notifyAppReady es recomendable re-leerlo.
6. Utiliza canales de actualización internos en lugar de reconstrucciones nativas innecesarias
Muchos equipos de móviles desperdician tiempo construyendo binarios para cambios que claramente son solo web.
Si el cambio es:
- copiar
- polish de interfaz de usuario
- flujo de incorporación
- lógica de pantalla de precios
- conexión de análisis
- banderas de características
- rendimiento de respuesta o API de solicitud
entonces, una actualización de Capgo es a menudo el artefacto de revisión más rápido.
Eso significa menos reconstrucciones nativas, menos cambios en TestFlight y un ciclo de retroalimentación más estrecho para el equipo. Es uno de los beneficios menos utilizados de Capgo: puede mover más trabajo de revisión y QA a la vía de actualización OTA sin romper la frontera nativa/web.
Nuestra guía sobre estadía con un ID de aplicación móvil cubre una forma práctica de mantener esto limpio con el tiempo.
7. Mantén separado lo esbelto de lo secreto
Paquetes pequeños y paquetes seguros resuelven problemas diferentes.
Los canales control la elegibilidad. No hacen que un paquete sea confidencial por sí mismos.
Si necesita garantías de entrega más fuertes:
- habilitar cifrado de actualización en vivo,
- usar almacenamiento personalizado o entrega autoalojada,
- mantener las llaves privadas solo en CI o flujos de trabajo de operador seguros.
Eso no hace que el tamaño de la actualización sea irrelevante. Solo significa que debería optimizar para ambas dimensiones:
- seleccione velocidad
- cifrado para control de entrega
- canales para control de lanzamiento
- rollback para recuperación
Un flujo de trabajo práctico "lean Capgo"
Si deseas un modelo de operación por defecto simple, utiliza esto:
- Mantén separados los canales de lanzamiento nativo y OTA.
- Sube cambios de JS con
--deltapor defecto. - Utiliza
stagingy canales antes debetaObservaproduction. - actualiza estadísticas y registros después del lanzamiento, no solo antes de él. Convierte PRs en previsualizaciones instalables cuando un build nativo no es necesario.
- protectedTokens
- Mantenga grandes y cambiantes medios fuera del paquete donde sea posible.
- Refresque la base nativa después de un crecimiento significativo de activos o cambios nativos.
- Trate
notifyAppReady()y el comportamiento de rollback como parte de la ingeniería de lanzamiento, no como trivia de configuración.
Esa combinación permanece rápida durante mucho tiempo más que el enfoque común “suba todo lo que ha cambiado”.
Pensamiento final
Para los equipos Capgo, “delgado y rápido” no es solo un problema de tamaño de paquete.
Es un problema de diseño de lanzamiento.
Use actualizaciones Delta para el tamaño de la carga, canales para el tamaño de la implementación y rollback para el tamaño de la falla. Una vez que piense en OTA de esa manera, sus actualizaciones permanecen rápidas incluso a medida que la aplicación, el equipo y la base de usuarios crecen.