Saltar al contenido principal
Tutoriales

Convirta cada solicitud de extracción en una vista previa instalable

Stop waiting for TestFlight processing. Capgo PR previews let QA, PMs, and stakeholders test features on real devices in under a minute.

Créditos del artículo

Martin Donadieu

Escritor

Valeria

Revisor

Jordan

Editor

Convirta cada solicitud de extracción en una vista previa instalable

Cada equipo de desarrollo móvil ha sentido el dolor: una característica está lista para la revisión, pero hacer que llegue a las manos de los interesados significa navegar por el laberinto de revisión de beta de TestFlight o Google Play. Lo que debería tomar minutos se convierte en horas de espera, instalación y gestión de versiones de beta.

¿Y si tu aplicación de producción pudiera obtener los últimos cambios de cualquier solicitud de extracción directamente en el dispositivo, sin reinstalaciones ni retrasos en la tienda de aplicaciones?

Eso es lo que los visores de PR habilitan. Cuando un desarrollador abre una solicitud de extracción, una Acción GitHub crea un canal de actualización dedicado y publica los cambios. Cualquiera con la aplicación instalada puede cambiar a ese canal, probar la característica y cambiar de nuevo - todo sin dejar la aplicación que ya tienen.

El problema de TestFlight

El flujo de trabajo tradicional para probar características móviles se parece a esto:

  1. El desarrollador abre la PR - Code está listo para la revisión
  2. Espera a TestFlight - 15-30 minutos de tiempo de procesamiento
  3. Encuentra e instala - Los probadores buscan la construcción correcta
  4. Prueba y repite - Cada cambio significa otra espera

Esto crea una botella de cuello. QA se bloquea esperando construcciones. Los gerentes de producto no pueden verificar rápidamente las características. Los desarrolladores pierden contexto mientras esperan retroalimentación. La industria estima que esto cuesta alrededor de $340 por PR en productividad perdida.

Cómo funcionan las vistas previas de PR

Las vistas previas de PR utilizan el sistema de canal de Capgo para crear flujos de actualizaciones por PR. Aquí está el flujo:

  1. Se abre o se actualiza el PR - Se activa la acción de GitHub
  2. Se sube el paquete - Sus cambios de JS/CSS van a un canal específico del PR
  3. Se publica un comentario - Los probadores reciben instrucciones en el PR
  4. Pruebas instantáneas - Cambiar canales, probar, cambiar de nuevo

No se instalan aplicaciones nuevas. Sin retrasos de TestFlight. La misma aplicación de producción puede obtener actualizaciones de diferentes canales de actualización.

Configuración de vistas previas de PR

Antes de que puedas implementar vistas previas de PR, tu proyecto necesita estar configurado con Capgo Actualizaciones en vivo. Sigue el Capgo guía rápida si no lo has hecho ya.

GitHub Flujo de trabajo de Acciones

Crear .github/workflows/pr-preview.yml:

name: PR Preview
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2

      - name: Install Dependencies
        run: bun install

      - name: Build
        run: bun run build

      # Create a channel named after your PR (may already exist on synchronize)
      - name: Create PR Channel
        id: create_channel
        continue-on-error: true
        run: bunx @capgo/cli@latest channel add pr-${{ github.event.pull_request.number }} --self-assign
        env:
          CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}

      # Upload the build to that channel
      - name: Upload to Capgo
        run: bunx @capgo/cli@latest bundle upload --channel pr-${{ github.event.pull_request.number }}
        env:
          CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}

      # Post a comment with testing instructions (only on PR open)
      - name: Comment on PR
        if: github.event.action == 'opened'
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: ${{ github.event.pull_request.number }},
              body: '📱 **Test this PR on device:**\n\nOpen your app and switch to channel: `pr-${{ github.event.pull_request.number }}`\n\nUse the shake menu or call `setChannel()` from your app.'
            })

La clave es la --self-assign bandera al crear el canal. Esto permite a los probadores cambiar al canal desde dentro de la aplicación utilizando el setChannel() API.

Configuración de Capgo Token

  1. Dirígete a tu Capgo panel de control
  2. Navega a Configuración > API Claves
  3. Genera una nueva clave con all permisos
  4. Agrega como CAPGO_TOKEN en los secretos de tu repositorio GitHub

Cómo los probadores cambian de canal

Hay dos formas para que los probadores cambien a un canal de PR:

Opción 1: Menú de sacudida (Más sencillo)

Habilita el menú de sacudida con selector de canal en tu configuración de Capacitor:

// capacitor.config.ts
const config: CapacitorConfig = {
  // ... your other config
  plugins: {
    CapacitorUpdater: {
      shakeMenu: true,
      allowShakeChannelSelector: true
    }
  }
};

Los probadores sacuden su dispositivo para abrir el menú de depuración, que muestra una lista de canales disponibles con una barra de búsqueda. Encuentran su canal de PR (por ejemplo, pr-123tapan para seleccionarlo y la aplicación descarga y aplica automáticamente la actualización. Cuando terminan de probar, sacuden de nuevo y se cambian a producción.

El menú de sacudida maneja el flujo completo automáticamente:

  1. Obtiene todos los canales autoasignables mediante listChannels()
  2. Muestra canales con búsqueda para encontrar PR específicos
  3. Descarga la actualización después de la selección
  4. Indica para recargar con opciones de ‘Recargar ahora’ / ‘Más tarde’

Opción 2: Selector de canales personalizado

Construya un selector de canales en su aplicación que muestre los canales de PR disponibles y permita a los probadores elegir uno. Esto utiliza dos claves API:

  • listChannels() - Obtiene todos los canales con autoasignación habilitada
  • setChannel() - Cambia el dispositivo al canal seleccionado
import { CapacitorUpdater } from '@capgo/capacitor-updater';

// Get all available channels (including PR channels)
async function getAvailableChannels() {
  const { channels } = await CapacitorUpdater.listChannels();

  // Filter to show only PR channels
  const prChannels = channels.filter(c => c.name.startsWith('pr-'));

  return prChannels;
}

// Switch to a specific PR channel
async function switchToChannel(channelName: string) {
  await CapacitorUpdater.setChannel({
    channel: channelName,
    triggerAutoUpdate: true  // Immediately check for updates
  });
}

// Return to production
async function switchBackToProduction() {
  await CapacitorUpdater.unsetChannel({});
}

// Get current channel
async function getCurrentChannel() {
  const { channel } = await CapacitorUpdater.getChannel();
  return channel;
}

Con estos bloques de construcción, puede crear una interfaz de usuario simple:

// Example: List PR channels and let user select
const channels = await getAvailableChannels();
const current = await getCurrentChannel();

// Display channels in your UI
channels.forEach(channel => {
  console.log(`${channel.name} ${channel.name === current ? '(current)' : ''}`);
});

// When user selects a channel
await switchToChannel('pr-123');

Para un ejemplo completo de componente React, consulte nuestro artículo de búsqueda de canales.

Limpieza de canales de PR

Cuando un PR se fusiona o se cierra, querrás limpiar el canal. Agrega otro flujo de trabajo:

name: Cleanup PR Preview
on:
  pull_request:
    types: [closed]

jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - name: Delete PR Channel
        run: bunx @capgo/cli@latest channel delete pr-${{ github.event.pull_request.number }}
        env:
          CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}

Esto elimina el canal cuando el PR se cierra, manteniendo tu lista de canales limpia.

Compatibilidad de versiones

PR previews only work when the JavaScript bundle is compatible with the installed native version. If your PR includes native code changes (new Capacitor plugins, iOS/Android modifications), testers will need a new native build.

Capgo verifica automáticamente la compatibilidad de versiones. Si el paquete de un PR apunta a una versión nativa diferente a la instalada, la actualización no se aplicará. Esto previene errores de incompatibilidad code.

Para PR que requieren cambios nativos, necesitarás distribuir una nueva compilación de TestFlight/Play Store. Las vistas previas de PR funcionan mejor para cambios de JavaScript, CSS y recursos que no tocan la capa nativa code.

¿Quién se beneficia de las vistas previas de PR?

Ingenieros de pruebas

  • Ver características de prueba inmediatamente cuando se abren PRs
  • Alternar entre múltiples PRs sin reinstalar
  • Verificar correcciones y regresiones en dispositivos reales
  • No más espera por el procesamiento de TestFlight

Gerentes de Producto

  • Revisar características antes de que se fusionen
  • Dar retroalimentación directamente en el PR
  • Verificar que la implementación coincide con los requisitos
  • Reducir el tiempo del ciclo de revisión

Desarrolladores

  • Obtener retroalimentación más rápida sobre cambios
  • Demostrar características a partes interesadas de inmediato
  • Depurar problemas con usuarios específicos
  • Gaste menos tiempo en la gestión de compilaciones de beta

Comparación: Versión tradicional vs Previsualizaciones de PR

Aspecto TestFlight/Beta Capgo Previsualización de PR
Tiempo de construcción 15-30 min <1 min
Intercambiar PRs 5+ min reinstalar 10 segundos
Complejidad de configuración de la instalación Credenciales de la Tienda de Aplicaciones Un archivo de flujo de trabajo
Limpiar Manual Automático
Cambios nativos code Requerido Opcional (solo JS)

Buenas prácticas

  1. Nombra los canales de manera clara: Utiliza pr-{number} una convención para una identificación fácil
  2. Auto-limpieza: Siempre eliminar canales cuando se cierren PRs
  3. Limitar acceso: Habilitar solo el menú de sacudir en compilaciones de depuración/producción
  4. Documentar el proceso: Agregar instrucciones de prueba a tu plantilla de PR
  5. Manejar fracasos con gracia: Verificar que la creación de canales tenga éxito antes de publicar comentarios

Cuándo No Usar Previsualizaciones de PR

Las previsualizaciones de PR son para cambios de JavaScript/CSS. Si tu PR incluye:

  • Nuevo Capacitor plugins de Capgo
  • : Cambios nativos de iOS code
  • Cambios nativos de Android code
  • Actualizaciones de dependencias que afectan compilaciones nativas

Necesitarás distribución tradicional de TestFlight/Play Store para esos cambios.

Combinación con Channel Surfing

Las vistas previas de PR funcionan mejor cuando se combinan con navegación por canales. Su aplicación puede tener:

  • production - Lanzamientos estable para todos los usuarios
  • beta - Acceso temprano para usuarios que opten por ello
  • pr-123 - Vistas previas de características para PR específicos

Los probadores con compilaciones de producción pueden cambiar a cualquier canal de PR, probar la característica, luego cambiar de nuevo - todo con la misma aplicación instalada.

Recursos

Conclusión

Las vistas previas de PR transforman la forma en que su equipo revisa y prueba características móviles. En lugar de esperar a que se procesen las actualizaciones de TestFlight y gestionar múltiples compilaciones de beta, los probadores pueden cambiar a cualquier canal de PR en segundos utilizando la aplicación que ya tienen instalada.

La configuración es mínima - un archivo de flujo de trabajo GitHub - y los beneficios se acumulan en su equipo. La QA permanece sin bloqueos, los gerentes de producto revisan más rápido y los desarrolladores reciben retroalimentación más rápida.

Comience agregando el flujo de trabajo a un repositorio y vea cómo cambia su proceso de revisión.

Siga adelante desde Turn Every Pull Request Into an Installable Preview

Si está utilizando Turn Every Pull Request Into an Installable Preview para planificar la ruta de canal y el despliegue en etapas, conecte con Canales para los detalles de implementación en Canales, Canales para los detalles de implementación en Canales, Canales Solución de Pruebas Beta para el flujo de trabajo del producto en Solución de Pruebas Beta, y Solución de Alcance de Versión para el flujo de trabajo del producto en Solución de Alcance de Versión. Créditos del artículo

Actualizaciones en vivo para aplicaciones Capacitor

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Cuando un error de capa web está vivo, envíe la corrección a través de __CAPGO_KEEP_0__ en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios obtienen la actualización en segundo plano mientras los cambios nativos siguen en el camino de revisión normal.

Contexto: Página/área: Sitio web de marketing de Capgo. Rol: Oración de descripción o metadescritivo de soporte. Visto en: componente GetStarted.astro. Preservar términos de producto/marca de Capgo exactamente. Mensaje clave `instant_updates_for_capacitor_apps_description` (Descripción de Actualizaciones Instantáneas para Aplicaciones de Capacitor).

soporte humano de Martin

Capgo gives you the best insights you need to create a truly professional mobile app.