¿Te ha gustado el artículo?
5
¿Te ha gustado el artículo?
5

Progressive web apps: ¿promesa o hype?

Las aplicaciones web progresivas o progressive web apps (PWA) son el nuevo fenómeno en el paisaje de las aplicaciones móviles. Una PWA aúna características de una página web con las prestaciones de una aplicación nativa, lo que permite que funcione en la misma medida como página web y como aplicación móvil sin depender del sistema operativo.

Ahora bien, ¿pueden las aplicaciones progresivas rivalizar realmente con las consolidadas aplicaciones nativas? Y, ¿qué es lo que hace que estas aplicaciones web sean progresivas a, diferenciándolas del resto? Sigue leyendo para conocer cómo funcionan las PWA y qué las desmarca de otros formatos, además de enterarte de sus ventajas e inconvenientes.

¿Qué es una progressive web app?

El término hace referencia a un novedoso método de desarrollo de aplicaciones que alberga prometedoras posibilidades y que continúa el desarrollo del formato de aplicación web ya existente.

El padre conceptual de este nuevo concepto es, sobre todo, Google, por lo que no extraña que, hasta ahora, el diseño de las PWA solo haya tenido en cuenta el propio sistema operativo Android, mientras que en los dispositivos con iOS de la rival Apple aún no funcionan del todo bien. Aunque se encuentra aún en una fase temprana de su desarrollo, lo que impide que esta tecnología pueda desplegar todo su potencial, cabe prever que Google invierta en su futuro desarrollo. Esto hace probable que las progressive web apps puedan seguir optimizándose.

A continuación analizamos los cuatro aspectos que definen esencialmente a una aplicación web progresiva.

Progressive web app: página web y aplicación en uno

Al encontrarse aún en pleno desarrollo, hoy solo se puede aclarar el término de una forma aproximada. No obstante, se puede considerar la estructura fundamental como asentada. Una PWA es accesible en Internet con un URL y se ejecuta en el navegador, lo que hace posible que funcione en diferentes sistemas operativos y no dependa de la tienda de aplicaciones ni requiera una instalación.

A diferencia de una aplicación web al uso, sin embargo, también se puede ejecutar sin conexión. Para ello solo hay que anclar un vínculo al URL correspondiente en la pantalla de inicio del dispositivo móvil, a través del cual puede accederse cómodamente a la aplicación, incluso con una débil o nula conexión a Internet (sería necesario, en este caso, disponer de una memoria caché offline en el navegador). Cuando se abre, la aplicación progresiva se parece más a una aplicación nativa que a una aplicación web y, gracias a su diseño responsivo, se adapta sin problemas al tamaño de la pantalla en la cual se ejecuta.

Progressive web app frente a aplicación nativa

Podemos imaginarnos una PWA como una aplicación web responsiva con el aspecto de una aplicación nativa. Esta aplicación progresiva puede utilizar funciones nativas del terminal, como la cámara, el micrófono, la geolocalización o las notificaciones push e integrarlas en el programa. Para ello, la aplicación comprueba la compatibilidad tanto del navegador que se utiliza como del terminal mismo. También el look and feel de una progressive web app (respuesta ágil al deslizar el dedo por la pantalla, etc.) es similar al de una aplicación nativa en cualquier tablet o smartphone.

Por otro lado, abrir una PWA online conlleva la ventaja de acceder siempre a la versión más actualizada de la aplicación, lo que la diferencia de las aplicaciones nativas, que han de ser actualizadas por el usuario. Tan pronto como una PWA se conecta a su servidor, se comprueba si es necesario actualizarla.

Otra ventaja de las aplicaciones progresivas frente a las nativas es el menor trabajo de programación que requiere su desarrollo por ser al mismo tiempo una página web y una aplicación independiente de plataforma. Esto reduce los costes de desarrollo en gran medida, aun para una PWA que muestra un rendimiento equiparablemente satisfactorio en muchos escenarios. A esto se añaden las escasas necesidades de memoria en el dispositivo de una progressive web app, aunque esto depende, en última instancia, del tamaño de la caché offline del terminal.

Dicho esto, cabe mencionar que las aplicaciones web y las páginas web móviles y responsivas, estas últimas con algunos límites, ya ofrecen algunas de estas funciones. Entonces, ¿qué tienen las aplicaciones web progresivas que no tengan las web apps clásicas?

¿Qué diferencia a las PWA de las web apps tradicionales?

Las aplicaciones web ya funcionan sin instalación directamente en el navegador en diferentes sistemas operativos móviles como Android, iOS y Windows Phone. Así que, el principio de las progressive web apps no se puede decir que sea nuevo, aunque sí esencialmente más madurado que en el caso de las web apps tradicionales. Así, el abanico de funciones de una PWA se ajusta al marco en que se ejecuta. Esto significa que, aun en el caso que los usuarios, sus terminales y/o navegadores no sean compatibles con todas las prestaciones, pueden usarlas, si bien de forma reducida.

Veámoslo con este ejemplo: una aplicación progresiva para subir fotos a una plataforma online autoriza el uso de una cámara, de forma que los usuarios puedan crear y cargar las fotos directamente en la aplicación. Sin embargo, no todos los navegadores y terminales soportan técnicamente esta función, lo que lleva a la aplicación a comprobar, tan pronto como se inicia en un navegador, si hay una cámara conectada y si esta cuenta con el soporte de la aplicación progresiva y del navegador. Si no es así, la función de cámara no se puede utilizar, pero sí todas las que sean compatibles. En este caso, si la cámara no es compatible con la PWA, la función de carga de la PWA permitiría subir las fotos que se deseen desde el smartphone.

En definitiva, estas aplicaciones son progresivas en la medida en que son ejecutables en cualquier navegador, ajustando sus funciones al hardware disponible y a las características de cada navegador, lo que lleva a concluir que el mejor o menor rendimiento de una PWA depende del mayor o menor potencial del navegador y el terminal utilizados.

Progressive web app vs. hybrid app

Además de la aplicación web, con la ya veterana aplicación híbrida se cuenta con un formato adicional que se apropia de algunas características de las aplicaciones nativas y supera algunas de sus carencias. Una aplicación híbrida, de forma similar a una PWA, puede ser desarrollada para diferentes sistemas operativos móviles con un equiparable escaso esfuerzo, pero las híbridas parten de un concepto diferente, ya que se integran en sistemas Android y iOs mediante instalación, imitando de esta forma el funcionamiento de las nativas, lo que conlleva tanto ventajas como inconvenientes.

Además de su sencillo desarrollo, la integración de las aplicaciones híbridas en el sistema operativo mediante instalación representa un aspecto positivo esencial, pues de esta forma pueden recurrir a más funciones nativas del terminal que las aplicaciones web (progresivas), aunque en menor grado que las aplicaciones nativas.

No obstante, la instalación también conlleva desventajas, y es que, además de depender de cada plataforma, las aplicaciones híbridas no pueden probarse tan fácilmente como permite el formato web app. E incluso cuando el desarrollo para un solo sistema operativo es mucho más sencillo que en las aplicaciones nativas, en última instancia conlleva mucho más trabajo de programación que en el caso de las aplicaciones progresivas, pues en el desarrollo de una PWA no se tienen que llevar a cabo modificaciones para Android y iOS. En su lugar, es el estudio de la compatibilidad del hardware y el navegador el que tiene la última palabra.

La tecnología que sustenta a una PWA

Las aplicaciones progresivas se basan en estándares web abiertos y están escritas principalmente, como una aplicación web convencional, en HTML, CSS y JavaScript. Además, son extremadamente flexibles y adaptan sus funciones al marco de su ejecución. La capacidad exacta de una PWA depende siempre del navegador y del terminal en los que se ejecute, aunque en parte también del sistema operativo. Ahora bien, ¿qué tecnologías utiliza una progressive web app?

Service worker

Una novedad de las aplicaciones progresivas es la utilización del service worker, fruto del desarrollo del web worker, y que se ejecuta como JavaScript en un segundo plano en el navegador (como un thread independiente de la página web). La primera vez que se abre la instalación, el servidor de la PWA carga e instala el service worker. Una vez hecho esto, el service worker está listo para funcionar cada vez que se vuelve a iniciar la aplicación y se le informa de cada petición de red en el dominio correspondiente. Esto solo funciona, eso sí, si se utiliza HTTPS. De lo contrario, se está arriesgando la seguridad en sumo grado.  

El service worker y su caché se guardan en el navegador utilizado, siempre y cuando este soporte esta función (por ahora, Google Chrome, Mozilla Firefox y Opera). ¿Qué tiene esto de especial? Un service worker permite utilizar una PWA incluso sin conexión, ya que carga el contenido desde la memoria caché. Este proceso puede acelerarse enormemente si se “cachea” la estructura de la aplicación, de forma que solo se tiene que descargar el contenido (los datos) actual.

Separación del app shell y del contenido

En la realización de aplicaciones web progresivas, además de los service workers, también la “Application Shell Architecture” tiene un papel importante. Con ella, el software de la aplicación puede diferenciar el application shell (la estructura base de la aplicación) del contenido. La interfaz de usuario de una progressive web app se basa, así, en el app shell, que es lo primero que se carga y se visualiza. El contenido que se muestra es de tipo dinámico y se carga desde Internet.

El app shell se guarda en la caché del service worker desde la primera vez que se abre la aplicación. Esto tiene la ventaja de que la estructura se carga mucho más rápido, lo que aumenta, en definitiva, el rendimiento de la PWA. El contenido se puede asegurar, además, en la caché o mediante IndexedDB. Para ello, este componente se ha de instalar en la aplicación progresiva accediendo a la aplicación, de la misma forma que se guarda el app shell. Esto permite poder acceder al contenido ya descargado de una aplicación progresiva sin conexión.

WebAPK

Los denominados WebAPK son servidores capaces de convertir una progressive web app en el formato de archivo APK (Android Package), de tal modo que se integra mejor en el sistema operativo, al menos en terminales Android.

Una PWA empaquetada en el formato APK se puede guardar en el cajón de aplicaciones e instalar en el terminal de forma parecida a como se haría con una aplicación nativa. Con ello, la PWA puede utilizar más funciones nativas, permisos de acceso y otras aplicaciones, así como recursos del terminal. Android, por ejemplo, ejecuta una aplicación progresiva, una vez instalada, como una aplicación propia y ya no como una pestaña abierta en el navegador.

Sin embargo, hasta ahora solo unas pocas versiones beta de navegadores Android han soportado la función y la conversión al formato APK no acaba de ir sobre ruedas, lo que excluye la posibilidad de considerar a la instalación de WebAPK plenamente compatible en su forma actual. Ahora bien, sí cabe esperar una expansión de esta función a todos los navegadores habituales, pues hoy las aplicaciones web progresivas, aun sin poderse instalar, ya convencen por su gran capacidad de rendimiento.

Presente y futuro de las progressive web apps

Los avances en la tecnología de los navegadores, en general, y la implementación del service worker ligada a ella, en particular, han sido decisivos a la hora de poder desarrollar las nuevas aplicaciones web. Con las mencionadas tecnologías propias de la PWA hoy ya es posible hacer realidad aplicaciones muy diversas y de gran calidad, aunque solo puedan desplegar todo su potencial con exploradores que soporten service workers. En este listado de Google y en la página web pwa.rocks se encuentran buenos ejemplos de aplicaciones web progresivas.

A día de hoy, las aplicaciones progresivas no son capaces aún de sustituir a las aplicaciones nativas en todos los aspectos y así será en el futuro, puesto que las aplicaciones desarrolladas para un sistema operativo tienen siempre más opciones a la hora de acceder a terminales, recursos del sistema, etc. No obstante, la mayoría de aplicaciones no requieren una integración así de profunda del hardware y el software, lo que convierte al formato PWA en uno totalmente idóneo para la mayor parte de proyectos.

Muchas de las ventajas de las aplicaciones web progresivas saltan a la vista, lo que genera grandes expectativas en este formato tanto en proveedores como en usuarios. No tan visibles son los pocos pero decisivos factores que dificultan la fabricación y comercialización masiva de las PWA.

Ventajas y desventajas de las progressive web apps

En la siguiente tabla hemos sintetizado los puntos a favor y en contra de las PWA frente a otros formatos, contemplando aspectos de programación tanto como de utilización de las aplicaciones.

Ventajas Inconvenientes
En comparación con las aplicaciones nativas, la programación de las PWA es mucho más sencilla y económica. Además, permite realizar al mismo tiempo una página web tradicional y una aplicación multiplataforma. El formato PWA, así como su compatibilidad con navegadores y sistemas operativos móviles, se encuentra aún en pleno desarrollo. Hasta el momento no está claro qué otras funciones nativas de los dispositivos puedan ser soportadas en el futuro.
Las PWA están disponibles de forma inmediata en el navegador; no se tienen que descargar ni instalar, lo que conlleva la ventaja de poder probarlas sin compromiso. El formato WebAPK permite instalarlas para integrarlas aún más en el sistema operativo. No todos los exploradores y sistemas operativos soportan PWA en toda su amplitud, lo que en gran parte depende de si en el futuro los dispositivos con iOS soportarán esta técnica. Las WebAPK, por su parte, representan aún una tecnología experimental con un futuro incierto.
Algunas PWA ya pueden acceder a funciones nativas de los dispositivos móviles, como las notificaciones push, la geolocalización, la cámara, el micrófono y el registro de la situación y el movimiento del terminal. No se pueden usar todas las funciones nativas de los terminales. Entre estas estarían, por ejemplo, los contactos, el calendario, el bluetooth o la NFC. Incluso aunque pronto sea posible integrar mejor las PWA en el sistema operativo gracias a una mayor compatibilidad con los navegadores, nunca podrán integrar funciones nativas en la misma medida que las aplicaciones nativas.
No es necesario descargar actualizaciones: la aplicación se actualiza automáticamente cuando se abre, siempre y cuando se tenga conexión a Internet. Las PWA pueden utilizarse también sin conexión. Aún no se sabe si las PWA se impondrán en el mercado, aunque, teniendo como protector a uno de los lobbies tecnológicos más influyentes a nivel global como es Google, su situación es prometedora. Además, se trata de una tecnología web abierta con influyentes defensores.
Requiriendo apenas memoria y menos recursos que una aplicación nativa, pueden registrar un rendimiento similarmente satisfactorio. No se pueden integrar en el cajón de aplicaciones en la forma habitual.
Las PWA se pueden encontrar en el buscador y enlazar en la página web principal. Son independientes del ecosistema cerrado de una tienda de aplicaciones. No pueden posicionar en las tiendas de aplicaciones.

Estas características representan el statu quo de la capacidad de las aplicaciones progresivas en la actualidad, al menos en relación con las posibilidades que, a día de hoy, ofrecen las versiones más actuales de los navegadores habituales (Google Chrome, Mozilla Firefox y Opera). Hay indicios que apuntan a una expansión del soporte de PWA en el futuro, como es la integración de los service workers en el navegador Edge en la que está trabajando Microsoft. En lo relativo a Apple, el soporte de Safari es muy limitado y las PWA no se pueden utilizar aún offline ni pueden guardarse en el cajón de aplicaciones de los dispositivos iOS.

¿Pueden imponerse las PWA a las aplicaciones nativas?

Hasta ahora, los nuevos formatos de aplicaciones no lo han tenido fácil. Ni las aplicaciones web al uso ni las híbridas han logrado obtener una expansión semejante a la de las nativas en terminales móviles. Las progresivas, en cambio, podrían ser las primeras en conseguirlo, gracias a una sofisticada tecnología subyacente y al gran apoyo por parte de muchos sectores. La pregunta sigue siendo hoy si Apple aceptará el formato PWA, lo que tendría como consecuencia que las progressive web apps representaran a corto plazo un rival que las aplicaciones nativas deberían tomarse en serio.

Apple tiene, por su parte, buenos motivos para seguir centrando sus esfuerzos en el formato nativo e interponer obstáculos en la carrera de las PWA. No olvidemos que la App Store supone para Apple una fuente nada desdeñable de ingresos que, además, compromete a los usuarios con sus servicios, sin contar el papel de los datos que se recopilan con las aplicaciones nativas y la tienda de aplicaciones. Si Apple soportara las progressive web apps de tal forma que muchas aplicaciones se pudieran implementar en iOS y macOs como progresivas en lugar de como nativas, significaría que tanto los desarrolladores de Apple como sus usuarios ya no dependerían de su tienda. A esta simbiosis solo renunciaría Apple, si llegara a hacerlo, si las PWA superaran en uso y expansión a las nativas.

No obstante, aun sin el pleno apoyo de Apple, parece que el mercado para las aplicaciones progresivas es lo suficientemente grande y rentable, si bien el éxito del formato depende de un soporte más amplio por parte de los navegadores más utilizados. Es razonable suponer que en el desarrollo de Chrome habrá sitio para una mejor compatibilidad con las PWA, así como para una integración para Android mucho más fácil. Mozilla y Opera acompañan a Google en la defensa de este formato, así que la plena compatibilidad de sus navegadores con las aplicaciones progresivas, hoy ya parcialmente efectiva, será próximamente una de sus mayores prioridades. No hay que olvidar que la mayor parte de partidarios del formato PWA son grandes actores de la industria del software y de Internet que se benefician de la programación y la informática libres.

¿Son las PWA las aplicaciones del futuro?

Progressive web apps no solo es una palabra de moda, sino que con ellas, los desarrolladores se adentran en un territorio técnico inexplorado. Continuar desarrollando las aplicaciones web “normales” trae consigo un potencial completamente revolucionario, donde el componente progresivo hace referencia a la habilidad de las aplicaciones de adaptarse al contexto en que se utilizan, lo que significa, en última instancia, que cuanta más capacidad aporten el terminal y el navegador empleados, más capacidad puede desplegar una PWA.

Si se abre en un ordenador de escritorio o en un portátil, una aplicación progresiva se comporta como una aplicación web habitual, pero si se abre con un smartphone o una tablet, se presenta como una nativa. En función de las prestaciones del terminal es posible, entonces, que la aplicación utilice funciones nativas, como son la cámara, el micrófono, las notificaciones push o el GPS.

Las ventajas de las progressive web apps son obvias y prometedoras, pues no requieren descargarse e instalarse, se actualizan automáticamente cada vez que se abren, suponen un ahorro de recursos, no dependen necesariamente de la conexión a Internet y su carácter multiplataforma permite probarlas online antes de enraizarlas en el dispositivo. Sin duda, el tiempo de respuesta de la aplicación también constituye un factor relevante pues, si hasta el momento eran las aplicaciones nativas las más ventajosas en look and feel, hoy las PWA ya están preparadas para mostrar un rendimiento equiparable.

Desde la perspectiva del desarrollo y dado que solo hay que programar una aplicación que puede actuar de sitio web y aplicación multiplataforma, el ahorro de trabajo y coste que supone la creación de una PWA es otro componente a favor que beneficia tanto a proveedores como a usuarios. Sin embargo, lo que aún falla es el soporte de todas las funciones nativas de los dispositivos móviles. A nivel de funcionalidad, las PWA solo pueden hacer la seria competencia a las aplicaciones nativas si pueden utilizar las posibilidades de un dispositivo de una forma parecida, incluso aunque no puedan equipararse con las nativas en cuanto a sus opciones de empleo.

Lo que sigue siendo esencialmente problemático es la carente disposición por parte de Apple de apoyar este formato. Los navegadores de los mayores proveedores (Google, Mozilla, Microsoft, Opera) van a apostar intensamente por una mayor compatibilidad del formato abierto PWA con sus productos. Apple, en cambio, al sacar provecho del aislado sistema de aplicaciones para las plataformas iOS y macOs y su App Store, muestra comprensiblemente menos interés en el proyecto.

El futuro dirá si las aplicaciones progresivas podrán competir realmente con las nativas, aunque las opciones se prevén buenas a la vista de los renombrados apoyos con los que cuenta. Sin embargo, la cuestión de la plena compatibilidad del formato PWA en los sistemas operativos y navegadores de Apple queda abierta. Si bien también es cierto que, en caso de que el novedoso formato obtuviera atención y apoyo por parte de desarrolladores y usuarios en el futuro, podría ocurrir que la reticencia de Apple retrocediera paulatinamente, pues, por lo general, ningún global player puede permitirse el lujo de cerrarse las puertas de una tecnología avanzada y cosechadora de éxitos.

Tutoriales Navegador Glosario