Shorebird en Flutter: ejercicio resuelto con code push y actualizaciones OTA
Shorebird en Flutter: ejercicio resuelto con code push
Shorebird es el servicio de code push para Flutter: permite enviar actualizaciones de código Dart directamente a los usuarios sin pasar por revisión de Google Play ni App Store. Fue creado por el equipo original de ingeniería de Flutter.
El concepto es el mismo que hot fixes de React Native CodePush: compilas un parche de los cambios en Dart, lo subes a Shorebird y la app lo descarga e instala la próxima vez que se abre.
Enunciado
Configura un proyecto Flutter con Shorebird que:
- Inicialice la integración con
shorebird init. - Compruebe si hay una actualización disponible al arrancar.
- Descargue e instale el parche en segundo plano.
- Informe al usuario del estado con una UI mínima.
- Muestre el número de parche actual del lado del cliente.
Dependencias
Configuración
1. Instalar la CLI de Shorebird:
Verifica la instalación con shorebird --version.
2. Crear cuenta y autenticarse:
3. Inicializar Shorebird en el proyecto Flutter:
Esto añade un shorebird.yaml con el app_id del proyecto.
4. Crear la primera release (build de producción que se sube a Shorebird):
Distribuye este build en Google Play / App Store como cualquier release normal.
5. Cuando tengas cambios de código que quieras enviar como parche:
Los usuarios recibirán el parche la próxima vez que abran la app.
Solución completa
Conceptos clave
| Concepto | Detalle |
|---|---|
shorebird release | Build completo que se distribuye en las stores |
shorebird patch | Parche solo con cambios de código Dart |
ShorebirdUpdater | Cliente Flutter para comprobar e instalar parches |
updater.isAvailable | false en debug y simuladores (solo funciona en release) |
updater.checkForUpdate() | Consulta al servidor si hay un parche más nuevo |
updater.readCurrentPatch() | Número del parche instalado actualmente |
updater.update() | Descarga e instala el parche (se aplica al reiniciar) |
UpdateStatus.outdated | Hay un parche disponible |
UpdateStatus.upToDate | App en la última versión |
Limitaciones importantes
- Solo Dart: Shorebird parchea código Dart compilado. Cambios en código nativo (Kotlin/Swift), assets, imágenes o dependencias de pub.dev no se pueden enviar como parche.
- El parche se aplica al reiniciar:
updater.update()descarga el parche, pero se activa la próxima vez que el usuario abre la app. - iOS: Shorebird cumple con las políticas de Apple; solo modifica código Dart, no código nativo.
- Plan gratuito: incluye un número limitado de parches al mes; revisa los precios actuales en shorebird.dev.
Errores frecuentes
isAvailablesiempre false en desarrollo: correcto por diseño. Prueba siempre conflutter build+ distribución interna.- Cambiar assets y esperar que lleguen con el parche: no funciona. Solo Dart.
- Olvidar hacer
shorebird releaseantes del primershorebird patch: Shorebird necesita una release base contra la que calcular el diff del parche.
Aplicación práctica
Shorebird es especialmente valioso para apps con ciclos de review lentos en Apple, correcciones urgentes de bugs en producción o equipos con pipelines de despliegue frecuentes. Combínalo con feature flags para activar nuevas funcionalidades de forma controlada sin re-publicar en las stores.
Siguiente ejercicio recomendado
- CI/CD con GitHub Actions en Flutter: ejercicio resuelto
- Flavors dev/prod en Flutter: ejercicio resuelto
- Todos los ejercicios de Flutter
Práctica guiada y siguiente paso
- Más ejercicios de Flutter
- Ejercicios C para reforzar fundamentos
- Programación en C en 100 ejercicios resueltos
- Ver en Amazon (incluido en Kindle Unlimited)
FAQ
¿Shorebird viola las políticas de Apple?
No. Shorebird solo modifica código Dart compilado (AOT patches), no código nativo. Apple permite actualizar la lógica de la aplicación mientras no cambies la funcionalidad principal sin revisión.
¿Cuánto tarda el parche en llegar a los usuarios?
Los parches se descargan la próxima vez que la app se abre con conexión. Se aplican al siguiente arranque. El tiempo total para la mayoría de usuarios es de horas, no días.
¿Puedo revertir un parche?
Sí. Desde el panel de Shorebird puedes promover una release anterior como activa, lo que hace que las apps descarten el parche defectuoso y vuelvan al estado anterior.