Progressive Web Apps y el declive del desarrollo de aplicaciones móviles nativas

¿Qué es una PWA?

Se trata de una nueva forma de desarrollar aplicaciones móviles accesibles desde la web y que aprovechan las últimas y potentes tecnologías de los navegadores actuales.
Gracias a esto, una Progressive Web App hereda las mejores características de la web: acceso instantáneo, actualizaciones inmediatas y facilidad para compartirlas y darlas a conocer.
Además, una PWA se comporta y se ve como una aplicación nativa. A veces son indistinguibles ya que ofrecen acceso a funciones nativas del dispositivo.

¿Cuáles son las características de una PWA?

Estas son las principales características que hacen de una Progressive Web App una tecnología tan potente en la que muchas empresas están invirtiendo esfuerzos.

Desarróllala una vez y ejecútala donde quieras

Una PWA es una aplicación web, por lo tanto, al desarrollarla puede ejecutarse en cualquier dispositivo que cuente con un navegador; es decir, tanto en móvil como en escritorio.
Por el contrario, una aplicación nativa debe desarrollarse de forma específica para el sistema operativo que se desee: iOS, Android, etc. Esto duplica y a veces triplica el coste de desarrollo y mantenimiento de la aplicación.

Web es el nuevo nativo

Gracias a los avances de los navegadores, una PWA se ve y se comporta exactamente igual que una aplicación nativa en cuanto a la visualización, animaciones, gestos, etc.
Además de esto, estas aplicaciones tienen acceso a funciones nativas del dispositivo en el que se ejecutan: almacenamiento offline, notificaciones push, geolocalización y cámara.
Una PWA puede instalarse en el dispositivo para acceder a ella desde su propio icono, como si de una App nativa se tratara.

El poder de los Service Workers

Los Service Workers albergan el verdadero potencial de una PWA. Es gracias a ellos que la aplicación puede hacer uso de algunas funciones como el soporte offline, gestión de la caché de la app o la recepción de notificaciones.
Se trata de un fichero javascript que funciona como un proxy. Se sitúa entre la aplicación e internet capturando así todas las peticiones que haga nuestra aplicación. Además los Service Workers se ejecutan en segundo plano. De esta forma, una PWA puede realizar tareas aunque no estemos usando la aplicación como la recepción de notificaciones push.
Por ejemplo, gracias a ellos la aplicación puede saber en todo momento el contenido que debe descargar del servidor porque este esté actualizado o el contenido que puede servir desde la caché ya que no ha sufrido ningún cambio, minimizando así el consumo de datos y mejorando la velocidad de carga.
También son cruciales en la estrategia offline de la aplicación ya que gracias a ellos puede servir contenido cuando el dispositivo no tenga conexión a internet.

Google a la cabeza

El gigante americano está apostando fuerte por las aplicaciones progresivas, Google Chrome en Android es el navegador que más soporte ofrece a este tipo de aplicaciones.
Al acceder a una PWA permite instalarla en el dispositivo, también, junto con los Service Workers puede detectar actualizaciones y preguntar al usuario si desea descargar la última versión de la aplicación.
Apple va unos pasos por detrás en este sentido. Por ejemplo, para instalar una PWA desde Safari, debe hacerse desde una de las opciones del menú. Lo cierto es que en cada una de las actualizaciones de Safari en MacOs e iOS está implementado nuevas funcionalidades para la compatibilidad de estas.

¿Adiós a las stores?

Una PWA se distribuye igual que cualquier otra aplicación web, al publicarla en un servidor, ya está disponible para cualquier usuario.
La publicación y actualizaciones de nuestra App serán inmediatas ya que no hay que pasar por los engorrosos canales de distribución de las stores que se complican mucho más en el caso de aplicaciones para empresas distribuidas de forma privada.
Además de todo esto, recientemente Google ha anunciado que va a dar soporte a PWA en la Play Store. De esta forma, podrán estar también disponibles en la store como cualquier otra aplicación.
¿Veremos un movimiento parecido por parte de Apple en el futuro? Yo diría que sí.

También en escritorio

Hasta ahora podíamos hacer de nuestra aplicación web una aplicación de escritorio gracias a tecnologías como Electron. Esto es bastante interesante en determinados tipos de aplicaciones. (Spotify o Slack son un ejemplo de ello). Pero próximamente podremos instalar una PWA desde el navegador en cualquier equipo.
Microsoft ha anunciado que permitirá la instalación de PWA en Windows 10 directamente desde la store.
Google Chrome ya permite la instalación de una PWA en MacOS y Chrome OS con un simple click en el navegador.

¿Qué framework puedo elegir?

Son varios los Frameworks y herramientas más usados en panorama actual del desarrollo web que están apostando fuerte para hacer más sencillo el desarrollo de una PWA.

Angular lo está haciendo desde su versión 6, ya que con un solo comando de su angular-cli convierte cualquier proyecto angular en una PWA. Casi lo mismo ocurre con React, podemos crear una Progressive Web App de forma sencilla usando el paquete create-react-app.

Quizás la herramienta más potente actualmente para desarrollar una PWA sea la Ionic. Ionic 4 ofrece un completo Toolkit que facilita mucho el trabajo. Además Ionic está completamente integrado con Angular y también da soporte a React y Vue.

En definitiva, ¿App nativa o PWA?

No hay una respuesta exacta para esta pregunta, depende mucho del producto, el contenido de la aplicación y las exigencias de los usuarios.

Si se pretende desarrollar una aplicación sofisticada y que requiera el uso de hardware específico del teléfono (giroscopio, acelerómetro…) la mejor opción es optar por una aplicación nativa.

Si por el contrario, no se necesita hacer uso de estas funciones una PWA puede ofrecer una experiencia tan buena o incluso mejor que una nativa en cuanto a rendimiento ahorrando mucho tiempo y costes de desarrollo.

¿Debe mi empresa desarrollar una PWA?

Centrándonos en el sector empresarial y con todo lo que hemos visto hasta ahora, la razón mas importante para desarrollar una Progressive Web App puede ser la reducción de su coste, tiempo de desarrollo y posterior mantenimiento.

Es cierto que una aplicación híbrida también supone un gran ahorro en el desarrollo, pero con una PWA también se elimina el tiempo y coste que conlleva publicar y actualizar una aplicación en las distintas stores. Además con frameworks como Ionic se pueden seguir estrategias para publicar las aplicaciones tanto en las stores como PWA.

Si tienes un proyecto de desarrollo de una aplicación y tienes dudas sobre cuál es la mejor tecnología a elegir, en DIGITAL55 podemos ayudarte.

José Antonio Ruiz Santiago

Full-stack Developer en DIGITAL55