Entre 2017 y 2020, las PWA vivieron un ciclo de hype tecnológico. Conferencias, artículos en blogs, soporte oficial de Google y Microsoft. Luego llegó la decepción: iOS mantuvo cerradas API clave, los avisos de instalación resultaron confusos y el marketing de las apps nativas seguía pesando más. La comunidad se pasó a Flutter, React Native y Capacitor.
Pero, en silencio, ocurrió otra cosa. El stack de las PWA siguió madurando. En los últimos años, Apple ha ido añadiendo las API que faltaban, los navegadores han mejorado el flujo de instalación y la especificación del service worker se ha asentado. Y para los equipos de producto sin un gran presupuesto, las PWA se han convertido en una opción sorprendentemente sólida.
Este artículo es un caso práctico honesto de trefa.app —una porra de empresa construida como PWA— tras un año en producción. Qué ha funcionado, qué no, y a quién le recomendaría hoy una PWA.
Contexto: qué es trefa.app
Trefa.app es una aplicación web para porras de empresa. El usuario inicia sesión con Google, crea una liga para su empresa, invita a sus compañeros mediante un enlace o un código QR y, juntos, pronostican los resultados de los partidos. La app sincroniza datos de las API deportivas (NHL, Premier League, campeonatos del mundo) y recalcula los puntos en tiempo real.
El frontend es Next.js 16 + React 19 + Tailwind, alojado en Vercel. El backend es Django 5 + DRF + Channels en Hetzner. Por el medio, PostgreSQL en Supabase y Redis para la comunicación en tiempo real.
Un detalle agradable: no hay ninguna app nativa para iOS ni para Android. La PWA es el único cliente. Los usuarios de iPhone, Android, Windows y macOS usan exactamente lo mismo.
Por qué elegimos PWA en lugar de una app nativa
La decisión fue en gran medida económica. Una app nativa habría supuesto:
- Desarrollar dos clientes en paralelo (iOS en Swift + Android en Kotlin) o usar un framework multiplataforma (Flutter, React Native).
- El proceso de publicación en la App Store + Google Play: cuotas de publicación, retrasos por revisión y republicaciones periódicas cada vez que cambia la API del backend.
- Notificaciones push a través de APNs y FCM: dos infraestructuras separadas, dos procesos de certificación.
- El flujo de actualización a través de las tiendas: el usuario tiene que actualizar de forma activa y una parte de los usuarios se queda en una versión antigua durante meses.
Para un producto con un público objetivo relativamente pequeño (equipos de empresa, no el mercado de masas), el coste del desarrollo nativo era considerablemente mayor que el beneficio. La PWA eliminó todo lo anterior de golpe.
Ventajas técnicas que los usuarios nunca notarán
Esta es la parte que habría subestimado antes de pasar a producción. Desde el punto de vista del desarrollo, una PWA aporta una serie de ventajas concretas que ahorran semanas de trabajo al año:
El deploy es instantáneo. Haces push a main → Vercel compila → en 2 minutos la nueva versión está delante de todos los usuarios. Sin publicación, sin esperas, sin malabares de compatibilidad entre las versiones del cliente y del backend. Si introduzco un cambio incompatible en la API, al día siguiente puedo lanzar un arreglo y todo el mundo lo tiene de inmediato.
Un único código base para todo. iOS, Android, Windows, macOS, Linux: la misma app en todas partes. Sin bugs específicos de cada plataforma («esto solo falla en el iPhone 13 en modo oscuro»), sin implementaciones duplicadas.
Un camino corto hasta el usuario. Envías un enlace, un clic y ya estás dentro de la app. Nada de «descarga nuestra app de la App Store, regístrate y luego inicia sesión». Para productos B2B de uso poco frecuente (una porra solo funciona durante un torneo deportivo), esto supone una enorme ventaja de conversión.
Las notificaciones push funcionan incluso sin instalación. El service worker registra la suscripción de push. En cuanto el usuario pulsa «Permitir notificaciones», empieza a recibir avisos antes de los partidos, independientemente de si ha añadido la app a la pantalla de inicio o de si solo la abre de vez en cuando en Safari.
Lo que una PWA no puede hacer (la sección honesta)
Aquí la honestidad importa más que el marketing. Las PWA tienen límites reales con los que hemos topado en producción.
Las notificaciones push en iOS vienen con condiciones. Apple Web Push existe desde iOS 16.4, pero solo funciona si el usuario ha añadido la PWA a la pantalla de inicio. Si usa la app a través de las pestañas de Safari, la suscripción de push no se mantiene. Esa es una fricción que las apps nativas no tienen.
Falta la presencia en la App Store. Para algunos perfiles de comprador (departamentos de RR. HH., responsables de TI en empresas), «no está en la App Store» equivale a «no es serio». Es subjetivo, pero real.
Algunas API del sistema operativo no están disponibles. Bluetooth Low Energy, NFC, acceso completo al sistema de archivos: para una app típica esto no es problema, pero si necesitas estas funciones, la PWA te limita.
El modo sin conexión es posible, pero no automático. Hay que configurar el service worker a mano, diseñar las estrategias de caché e implementar las colas de sincronización. Para una app totalmente offline-first, esto es más trabajo del que los desarrolladores esperan.
Comparativa de rendimiento frente a lo nativo: una PWA es un ~15-25 % más lenta en la primera carga (parseo del bundle de JS) y un ~5-10 % en las interacciones del día a día. Para la mayoría de las apps es imperceptible; para juegos exigentes o edición de vídeo, es un factor decisivo.
Resultados tras un año en producción
Datos concretos de trefa.app tras un año en funcionamiento:
- Estabilidad multiplataforma: un equipo de desarrollo de una sola persona mantiene la app en todos los sistemas operativos sin bugs específicos de cada plataforma. El mismo ciclo de pruebas para todos.
- Frecuencia de deploys: de media, entre 3 y 5 deploys por semana mediante Vercel. Ninguno de ellos lidiando con retrasos de publicación en la App Store.
- Notificaciones push: ~70 % de usuarios activos, tasa de entrega de push de ~95 % en Android y ~85 % en iOS (por el requisito de instalación en la pantalla de inicio).
- Sin cuotas de la App Store: nos hemos ahorrado unos 70 USD al año en cuentas de desarrollador, además de la comisión de aproximadamente el 30 % sobre las transacciones (que, de otro modo, se aplicaría a las compras dentro de la app).
El principal beneficio para el negocio, sin embargo, no fue técnico. Fue la velocidad de iteración. Si un cliente escribía «esta función me vendría bien», normalmente empezaba a trabajar en ella el mismo día y la entregaba en menos de una semana. Eso, sencillamente, no es posible con una app nativa.
A quién le recomendaría hoy una PWA
Una PWA encaja si se cumplen al menos dos de los siguientes puntos:
- Tienes recursos limitados y no puedes permitirte dos apps nativas más una versión web.
- Tus usuarios usan la app de forma ocasional (no a diario), por lo que tener poca fricción en el primer acceso es importante.
- Tu app no necesita API del sistema operativo exigentes (Bluetooth, NFC, acceso completo al sistema de archivos).
- Quieres desplegar sin las tiendas de aplicaciones de por medio.
- Tu público es mixto: iOS y Android, móvil y escritorio.
Una PWA probablemente no sea la opción adecuada si:
- Tu app se usa a diario, varias horas al día, y los usuarios la utilizan de forma intensiva (redes sociales, mensajería).
- Necesitas integraciones avanzadas con el sistema operativo.
- Tus compradores esperan una presencia en la App Store.
- El rendimiento es crítico (juegos, vídeo, RA).
Conclusión
El hype de las PWA quizá haya terminado, pero la tecnología ha madurado en silencio hasta un punto en el que, para muchos productos, es una opción mejor que apostar por lo nativo. Trefa.app lleva un año funcionando sobre PWA y no veo ninguna razón para cambiarlo. Al contrario: si empezara de nuevo hoy, iría aún más rápido.
Si estás sopesando una PWA frente a una app nativa para tu proyecto, ten en cuenta una cosa más allá de los argumentos técnicos: una PWA te lleva a producción más rápido. Y en las primeras fases, la velocidad de iteración vale más que cualquier otra cosa.
Por cierto, puedes probar tú mismo trefa.app: sin instalar nada, basta un clic y ya estás pronosticando.
