Probador de Semver de Capgo
Comprueba la compatibilidad de la política del canal con la base nativa enviada como version_build
La versión nativa enviada a Capgo como version_build, desde la config o los metadatos de la app nativa.
La versión del bundle asignada al canal resuelto.
Qué significa "Native Baseline Version"
La Native Baseline Version es la versión de la app nativa enviada a Capgo como
version_build cuando el dispositivo pide un bundle al servidor de actualizaciones. En una app con Capacitor, ese valor puede venir de
CapacitorUpdater.version en capacitor.config.*. Si ese ajuste no está presente, el plugin recurre a la versión nativa de la app en iOS o Android. No asumas que es tu package.json
versión a menos que tu build copie ese valor en la config o en los metadatos nativos.
Capgo sigue usando version_name para saber qué bundle descargado está instalado. Las políticas semver de un Channel como major, minor, y
patch comparan el bundle remoto contra version_build.
la config de Capacitor
Configurar CapacitorUpdater.version cuando quieres que la app envíe una versión explícita.
Pro: fácil de mantener igual en builds de iOS y Android.
Contra: una config desactualizada puede reportar la versión incorrecta si olvidas actualizarla antes de un release nativo.
Versión de la app nativa
Usa la versión de la plataforma, como iOS CFBundleShortVersionString o Android
versionName.
Pro: coincide con el binario que los usuarios instalaron desde TestFlight, App Store, Play Store o pruebas internas.
Contra: cambiarlo requiere un build nativo y puede variar según la plataforma si la configuración de release se desajusta.
Segmentación del bundle
Compáralo con versiones de bundle remotas, reglas semver de canales o restricciones de metadatos para upload, como --min-update-version. El canal debe usar --disable-auto-update metadata.
Pro: evita enviar JavaScript que requiera un code nativo más nuevo a binarios de app antiguos.
Contra: las reglas demasiado estrictas pueden bloquear actualizaciones válidas hasta que se ajuste el canal o los metadatos del bundle.
Para este tester, introduce la línea base nativa que el dispositivo envía como version_build, y luego compárala con la versión del bundle remoto que quieres que Capgo entregue.
Por qué Capgo usa Semantic Versioning
Versionado semántico es el estándar de versionado más adoptado en el desarrollo de software. Al usar semver, Capgo garantiza la compatibilidad y la seguridad al entregar actualizaciones en vivo a tus apps Capacitor.
El estándar semver permite que Capgo entienda exactamente qué cambios incluye cada actualización:
- Actualizaciones de parche (1.0.0 → 1.0.1): Bug fixes, safe to apply automatically
- Actualizaciones menores (1.0.0 → 1.1.0): Nuevas funcionalidades, retrocompatibles
- Actualizaciones mayores (1.0.0 → 2.0.0): Breaking changes, requieren un release nativo en la app store
Esto evita que Capgo envíe una actualización incompatible a tu code nativo, protegiendo a tus usuarios de crashes y asegurando que tu app se mantenga estable.
Estrategias flexibles de Semver: más allá del versionado básico
Aunque semver es estricto con su formato base, puedes extenderlo según las necesidades de tu equipo usando identificadores de pre-release y metadatos de build:
🏷️ Metadatos de Build (+) - La capa "cosmética"
Importante: Los metadatos de build se ignoran en la precedencia de versión -
1.2.0+anything es igual a 1.2.0 para la lógica de actualización de Capgo.
🔧 Identificadores de prelanzamiento (-) - Canales de desarrollo
Nota: Las versiones de prelanzamiento tienen menor precedencia -
1.3.0-beta.1 < 1.3.0
🎯 Enfoque híbrido - Lo mejor de ambos mundos
Casos de uso de Semver y estrategias de equipo
🚀 Startup / Desarrollo rápido
0.1.0 - Primer lanzamiento MVP0.2.0-beta.1 - Testing de nuevas features0.2.0+ui.v2 - Metadata de rediseño de UI1.0.0 - Listo para producciónUsa 0.x.x para desarrollo pre-1.0 y metadata para tracking de diseño
🏢 Enterprise / Regulado
2.1.0 → Lanzamiento trimestral2.1.1+sec.patch.cve2024 → Parche de seguridad con tracking2.2.0-rc.1+audit.ready → Release candidate pre-auditoríaSemver estricto con metadata de compliance
🎮 Gaming / Apps creativas
1.0.0+season.winter.2024 → Contenido estacional1.1.0+event.halloween → Funciones basadas en eventos1.2.0+assets.hd.remaster → Actualizaciones de assetsMetadatos creativos para tracking de contenido
⚡ Estrategia de hotfix
1.2.0 → Producción actual1.2.1-hotfix.payment → Corrección de bug crítico1.2.1+urgent.20240315.1430 → Lanzado con timestampPre-release para testing, metadatos para tracking de despliegue
🌍 Estrategia multiplataforma
1.3.0+ios.optimized → Optimizaciones específicas de iOS1.3.0+android.material3 → Actualizaciones de diseño en Android1.3.0+web.pwa.ready → Capacidades de PWAMisma versión, metadatos por plataforma
🔄 Integración CI/CD
1.4.0-alpha.1+build.123 → Pre-release automatizado1.4.0+deploy.staging.456 → Despliegue en Staging1.4.0+prod.final.789 → Despliegue en producciónVersionado automático con metadatos de despliegue
- Usa build metadata (+) para tracking, timestamps o info cosmética que no afecta la compatibilidad
- Usa identificadores pre-release (-) para canales de desarrollo que necesitan distinta precedencia de actualizaciones
- Combina ambos para máxima flexibilidad:
1.2.0-beta.1+ui.dark.theme.20240315 - Recuerda: Capgo respeta las reglas de precedencia de semver; planifica en consecuencia tu estrategia de canales
Importante: Capgo usa versionado semántico estricto
A diferencia de la implementación de semver de npm, Capgo sigue estrictamente la especificación oficial de SemVer. El node-semver de npm tiene desviaciones conocidas de la especificación, lo que puede causar comportamientos inesperados.
Por ejemplo, npm trata las versiones como 1.0.0-alpha.1
de forma distinta a lo que requiere la especificación. Consulta nuestro
issue reportado y
intento de fix que nunca se mergeó.
Versiones semánticas válidas
1.0.0 ✓ Release estándar 2.1.3-alpha ✓ Pre-lanzamiento 1.0.0-beta.1 ✓ Pre-release con número 1.0.0+build.1 ✓ Metadatos de build 1.0.0-rc.1+build.1 ✓ Versión completa Versiones semánticas inválidas
v1.0.0 ✗ No se permite el prefijo 'v' 1.0 ✗ Falta la versión patch 1.0.0.0 ✗ Demasiados segmentos de versión 1.0.0- ✗ Pre-release vacío 1.0.0+ ✗ Metadatos de build vacíos Comportamiento de actualización de Capgo
Esta herramienta sigue la especificación oficial de Semantic Versioning a diferencia de la implementación de npm.