Progressive Web Apps: ¿La web es el futuro de las aplicaciones?

Tres smartphone con las siglas PWA

14 mins. de lectura

Tecnología

Hace 26 años tuve mi primer computadora, una PC de escritorio con 166Mhz de velocidad de reloj de procesador, 32mb de memoria y 1gb de espacio en disco. Para quien no esté familiarizado con estos términos, la potencia de ese dispositivo que ocupaba un escritorio completo equivale a un décimo de un teléfono celular estándar de hoy.

En ese entonces el navegador de internet era una aplicación poco o nada utilizada. Desde aquella época al día de hoy fuimos testigos de un rápido proceso de crecimiento de internet, de las computadoras personales y, en ellas, de migración del software que se ejecutaba desde CDs o diskettes a aplicaciones que funcionan 100% online. En primer lugar fueron contenidos estáticos, seguidos por contenidos interactivos y algunos videojuegos rudimentarios. Hoy en día ya hay aplicaciones profesionales y juegos con gráficos complejos que se ejecutan directamente en el navegador.

Un proceso análogo se dio en los dispositivos celulares, donde cada vez más las aplicaciones de los stores son reemplazadas por aplicaciones web: las Progressive Web Apps (PWA).

¿Qué es una PWA?

Una PWA es la combinación de lo mejor de dos mundos: del mundo aplicaciones la capacidad de generar interacciones dinámicas con el usuario y con el hardware del dispositivo (cámara, micrófono, geolocalización, giroscopio, etc); del mundo navegador, la capacidad de ejecutar un contenido sin instalar nada en el dispositivo y disponible desde el primer clic de acceso al sitio.

Cada vez es más habitual encontrarse con aplicaciones enteras que funcionan en el navegador. Desde la popular aplicación de prototipado y edición de vectores Figma, hasta Autocad y Photoshop ya tienen sus versiones de navegador. La irrupción y popularidad de WebAssembly abrió además la posibilidad de copilar aplicaciones desarrolladas en lenguajes como Rust y C++ para ejecutarse desde el navegador.

Las PWA se alimentan de la potencia, cada vez mayor, de los navegadores modernos. Del acceso de navegadores al hardware del dispositivo y de las herramientas que estos incorporan como sistemas de bases de datos en el navegador, compatibilidad con nuevos formatos y estándares de código, service workers... hemos llegado a un punto fundamental: los service workers.

img_58daaecbd66a1.png

Los service workers dotaron a las PWA de un nuevo superpoder: Funcionar offline. ¿Pero cómo? ¿No son aplicaciones web? Sí, pero el service worker nos provee un puente entre nuestra app y la red, con control de las decisiones que queremos tomar si tenemos internet o no. Esto abrió la puerta a páginas que cargan más rápido, cacheando gran parte de su contenido y accediendo a internet sólo para aquellos contenidos en los que sea estrictamente necesario. También nos permiten interactuar entre internet y el dispositivo cuando nuestra PWA no está abierta en primer plano, por ejemplo para el envío de Push Notifications, sincronización en segundo plano o instalación de nuestra app en el dispositivo emulando el comportamiento de una aplicación nativa y permitiendo que la interfaz visible no sea la del navegador sino la de nuestra app.

Ventajas, desventajas y lo que se viene...

Algunas de sus ventajas las hemos mencionado anteriormente:

  • Capacidad de funcionar offline gracias al almacenamiento en Cache
  • Capacidad de instalar la PWA en el dispositivo
  • Capacidad de sincronización en segundo plano
  • Push Notifications
  • Acceso a cámara, micrófono, geolocalización, giroscopio, entre otros

Además de estos puntos ya tocados cabe agregar gran agilidad al momento de desarrollar progresivamente nuestra aplicación, la facilidad de incorporar cambios, deployar y que los cambios se propaguen rápidamente sobre nuestros usuarios.

También la facilidad de posicionar contenidos de nuestra aplicación en buscadores, aumentando las visitas y conversiones. El sitio pwastats se encarga de recolectar algunas estadísticas relevantes, entre algunas de las empresas que lograron mejorar su performance están Starbucks (aumentó sus visitas x2), Twitter y Facebook (bajaron tasas de rebote e incrementaron páginas visitadas por usuario), alibaba (incrementó las conversiones en un 76% con su PWA), Uber (se apalancó en PWA para acceder a dispositivos de baja gama), Tinder (redujo un 90% el peso de su aplicación) o Pinterest (aumentó un 60% el engagement y un 40% el ad revenue).

Finalmente, para startups y productos que innovan continuamente, desarrollar una PWA agiliza los tiempos y reduce el stack tecnológico de dominio necesario en el equipo. Ya que en vez de ocupar desarrollares web para el sitio y desarrolladores mobile para las apps (ni hablar si se opta por separar los desarrollos de Android y iOS), en cambio se puede trabajar con un mismo stack tecnológico en todos los proyectos.

Sin embargo no todo son maravillas en el mundo de las PWAs. Aún muchas personas, sobre todo en mobile, están acostumbradas a buscar las aplicaciones en los stores de Android, Microsoft y Apple. La buena noticia es que cada vez más estos stores se abren a la posibilidad de introducir PWAs, en los casos de Microsoft y Android con aplicaciones PWA directamente. En Apple la cosa está aún más peliaguda y para tener presencia hay que pensar en alguna solución del tipo webview, y aún en ese caso Apple se reserva el derecho de rechazarla si identifica que tu app no es más que una página embebida en un contenedor nativo.

Si nos enfocamos en los dispositivos con iOS aparecen varias desventajas adicionales:

  • No permite push notifications
  • No permite sincronización en segundo plano
  • No tiene acceso tan completo al hardware como en android
  • El manejo de cache es más difícil
  • No permite instalación
  • No persiste la solicitud de permisos de hardware como cámara o audio, haciendo desagradable la experiencia de solicitarlos cada vez que se usan, entre otras.

Es algo irónico y paradójico tener estas desventajas si tenemos en cuenta que Apple fue quien introdujo el concepto de aplicaciones web hace 15 años. Pero todo parece indicar que después de un largo período de negación Apple ha comenzado a subirse a la ola web apps... El primer paso fue dado en 2018 con iOS 11.3, cuando habilitaron los serviceworkers, permitiendo almacenamiento en caché y algunas funcionalidades adicionales. Desde entonces, y si bien el almacenamiento en cache es limitado, esto permite desarrollar muy buenas experiencias. También para navegadores basados en Chromium se habilitó la sincronización en segundo plano aunque aún es medio tricky.

images.jpeg

Pero el gran cambio viene con iOS 15.4 que está pronto a salir. Con esta nueva versión se permitirán las push notifications, instalar en el escritorio y una serie de features adicionales que terminarán de allanar el camino para las PWA.

Volvamos a la pregunta que titula este artículo: ¿La web es el futuro de las aplicaciones? Personalmente creo que va a depender de hasta dónde corramos los bordes de qué es una web y qué no. Si bien cada vez más se desarrollan aplicaciones en lenguajes orientados a la web, también crece exponencialmente la cantidad de aplicaciones desarrolladas en lenguajes nativos, surgen opciones alternativas que permiten desarrollar cross-platform y la web es tomada como una pata o plataforma más entre otras. Por otro lado crecen tecnologías como realidad virtual y aumentada y aplicaciones sobre todo del ámbito del gaming con experiencias cada vez más potentes e inmersivas y con gráficos en alta definición para los que el navegador moderno aún no está preparado. Además, los lenguajes orientados a web como javascript aún se quedan cortos. Pero con estas limitaciones nacen opciones para potenciar o sustituir javascript, tanto en la evolución propia del lenguaje como en lenguajes y frameworks construidos sobre el estándar de ecmascript como en alternativas como Dart diseñado tanto para web como para apps nativas; Los navegadores son cada vez más potentes, permiten vincular periféricos, desarrollar experiencias de AR/VR, incorporan APIs que potencian las posibilidades del desarrollo web.

Teniendo en cuenta todas estas cuestiones y la corta historia que llevan las PWA desde que Chrome decidió apostarles fuerte allá por el 2015, no tengo dudas que casi todas las aplicaciones que utilizamos cotidianamente estarán basadas en formatos web (¡Muchas de ellas ya lo están!), y que gran parte de ellas serán Progressive Web Apps.

Lecturas similares