Cada equipo de desarrollo móvil ha sentido el dolor: una característica está lista para revisión, pero hacer que llegue a las manos de los interesados significa navegar por el laberinto de revisión de TestFlight o Google Play beta.
¿Y si tu aplicación de producción pudiera recuperar 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 vistas de solicitud de extracción permiten. Cuando un desarrollador abre una solicitud de extracción, una GitHub Acción 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 algo así:
- El desarrollador abre PR - Code está listo para revisión
- Espera a TestFlight - 15-30 minutos de tiempo de procesamiento
- Encuentra e instala - Los probadores buscan la construcción correcta
- Prueba y repite - Cada cambio significa otra espera
Esto crea una botella de cuello. QA se bloquea esperando construcciones. Los gerentes de productos no pueden verificar características rápidamente. 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:
- PR abierta o actualizada - GitHub Acción desencadena
- Paquete subido - Sus cambios JS/CSS van a un canal específico de PR
- Comentario publicado - Los probadores reciben instrucciones en el PR
- Pruebas instantáneas - Cambiar canales, probar, cambiar de nuevo
No se instalan nuevas aplicaciones. No hay retrasos en TestFlight. La misma aplicación de producción puede obtener actualizaciones de diferentes canales.
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 guía rápida de Capgo si no lo has hecho ya.
Flujo de trabajo de GitHub 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 cuando se crea 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
- Dirígete a tu Capgo panel de control
- Navega a Configuración > API Claves
- Genera una nueva clave con
allpermisos - Agrega como
CAPGO_TOKENen 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 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, __CAPGO_KEEP_0__), tocan 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. pr-123El menú de sacudidas maneja todo el flujo automáticamente:
Obtiene todos los canales autoasignables mediante
- Muestra canales con búsqueda para encontrar PR específicos
listChannels() - Descarga la actualización después de la selección
- Indica recargar con opciones ‘Recargar ahora’ / ‘Más tarde’
- Opción 2: Selector de canales personalizado
Construya un selector de canales en su aplicación que enumere los canales de PR disponibles y permita a los probadores elegir uno. Esto utiliza dos claves API:
- Obtiene todos los canales con autoasignación habilitada
listChannels()- Cambia el dispositivo al canal seleccionadosetChannel()Con estos bloques de construcción, puede crear una interfaz de usuario simple:
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;
}
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, __CAPGO_KEEP_0__), tocan 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.
// 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 versión
Las vistas previas de PR solo funcionan cuando el paquete JavaScript es compatible con la versión nativa instalada. Si tu PR incluye cambios nativos code (nuevos plugins Capacitor, modificaciones de iOS/Android), los probadores necesitarán una nueva compilación nativa.
Capgo verifica automáticamente la compatibilidad de versión. Si el paquete de un PR apunta a una versión nativa diferente a la instalada, la actualización no se aplicará. Esto previene los errores de incompatibilidad code.
Para PRs 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 activos que no tocan el code nativo.
¿Quién se beneficia de las vistas previas de PR
Ingenieros de pruebas
- Pueden probar características inmediatamente cuando se abren PRs
- Alternar entre varios PRs sin reinstalar
- Verificar fijaciones 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 gestionando versiones de pruebas
Comparación: Versión tradicional vs Previsualización de PR
| Aspecto | TestFlight/Prueba | Capgo Previsualización de PR |
|---|---|---|
| Tiempo de construcción | 15-30 min | <1 min |
| Cambiar PRs | 5+ min reinstalar | 10 segundos |
| Complejidad de configuración de inicio | credenciales de la Tienda de Aplicaciones | un archivo de flujo de trabajo |
| Limpieza | Manual | Automático |
| Cambios nativos code | Requerido | Opcional (solo JS) |
Prácticas recomendadas
- Nombrar los canales claramente: Utilice
pr-{number}convención para una fácil identificación - Limpieza automática: Siempre eliminar canales cuando se cierran PRs
- Restringir acceso: Solo habilitar menú de sacudida en compilaciones de depuración/producción
- Documentar el proceso: Agregar instrucciones de prueba a tu plantilla de PR
- Manejar fallas 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:
- Nuevos Capacitor plugins
- Cambios nativos de iOS code
- Cambios nativos de Android code
- Actualizaciones de dependencias que afectan compilaciones nativas
Necesitarás distribuir tradicionalmente a través de TestFlight/Play Store para esos cambios.
Combinar con Channel Surfing
Los resúmenes de PR funcionan mejor cuando se combinan con navegación por canalesTu aplicación puede tener:
production- Lanzamientos estables para todos los usuariosbeta- Acceso temprano para usuarios que opten por ellopr-123- Previsualizaciones 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
- Actualizaciones en vivo Capgo Documentación
- Documentación de canales
- Guía de navegación por canales
- CLI Referencia de comandos
- Página de soluciones de vistas previas de PR
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 al procesamiento de TestFlight y gestionar múltiples versiones 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 'Convirta cada solicitud de extracción en una vista previa instalable'
Si está utilizando Convirta cada solicitud de extracción en una vista previa instalable para planificar la ruta de canal y el despliegue en etapas, conectéalo con Canales para los detalles de implementación en Canales, Canales para los detalles de implementación en Canales, Canales para los detalles de implementación en Canales, Solución de Pruebas de Beta para el flujo de trabajo del producto en Solución de Pruebas de Beta, y Solución de Enfoque en Versión para el flujo de trabajo del producto en Solución de Enfoque en Versión.