Progressive Web Apps ¿las App del futuro?

Progressive Web Apps ¿las App del futuro?
Anterior

Progressive web apps (PWA) o Aplicaciones Web Progresivas, es la manera de llamar a la nueva generación de apps que mejoran su eficiencia y eficacia en el funcionamiento, dependiendo de las capacidades del dispositivo en el que se ejecutan.

¿Qué diferencia una Progressive web apps de una aplicación nativa?

Sencillamente, la diferencia es que las aplicaciones nativas son todas aquellas que descargamos normalmente desde la tienda, app store o play store para android. Y que tienen la problemática de que tenemos que desarrollar una versión especial para cada tipo de sistema operativo con el que queramos que sea compatible, mientras que en las Progressive web apps accedemos a ellas directamente desde un navegador web mediante una URL sin importar el tipo de dispositivo que tengamos ni el sistema operativo que use.

Esto obviamente nos da varias ventajas importantes, con respecto a las web nativas, y es que podemos compartirlas con todo el mundo sin importar el dispositivo que tenga, y serán fácilmente localizables desde cualquier buscador web (google, bing, etc).

Tenemos que entre las principales objetivos/ventajas de una Progressive web apps podemos encontrar:

  • Ser Progresivo: De ahí su nombre, debe funcionar en cualquier dispositivo y mejorar progresivamente, es decir, aprovechar las funciones disponibles en el dispositivo del usuario y también del navegador. O dicho de otra manera, la aplicación corriendo desde el navegador web deberá ser capaz de acceder a los recursos del dispositivo (mandar notificaciones, hacer que vibre, usar los sensores del móvil, etc).
  • Detectable: Debe ser detectable en los motores de búsqueda. Esta es una gran ventaja sobre las aplicaciones nativas, ya que desde cualquier buscador (google, bing, etc) son más fácilmente localizables, puesto que las nativas todavía se quedan muy atrás en este campo.
  • Enlazable: Un sitio web bien diseñado debe utilizar una URI para indicar el estado actual de la aplicación. Esto permitirá a la aplicación web conservar o volver a cargar su estado cuando el usuario marque o comparta la URL de la aplicación.
  • Responsiva (Adaptable): Debe de ajustarse al tamaño y forma de cualquier dispositivo, esto es algo básico.
  • Ser como una app: Debe de tener el aspecto de una aplicación nativa y debe estar basada en el modelo de shell de aplicación, con un mínimo de refrescos de página.
  • Conectividad independiente: Debe funcionar en áreas de baja conectividad o fuera de línea. O lo que es lo mismo, es capaz de detectar si nos quedamos sin conexión a la red y ser capaz de funcionar con una versión anterior o la última versión que hayamos guardado en caché.
  • Instalable: Una aplicación web progresiva se tiene que poder instalar en la pantalla principal del dispositivo, haciéndola fácilmente accesible al usuario (al igual que cualquier app normal) mediante un acceso directo al escritorio.
  • Con el contenido actual: Cuando se publica nuevo contenido y el usuario está conectado a Internet, dicho contenido debe estar disponible en la aplicación para el usuario en ese mismo momento.
  • Ser segura: Dado que una aplicación web es usada de manera diferente por cada usuario, es imprescindible que la aplicación esté alojada a través de HTTPS para evitar ataques y además dar la sensación de seguridad al usuario.

¿Para qué tipos de tecnologías puede servir?

Destacamos las siguiente:

Service Workers

Según los propios desarrolladores de google podemos decir que esto es:

"Una secuencia de comandos que nuestro navegador ejecuta en segundo plano, separado de una página web, permitiendo el acceso a funciones que no necesitan una página web ni interacción de usuario."
Service Workers

Básicamente lo que nos están tratando de decir es que nos permite ejecutar servicios en segundo plano.
Y esto conlleva múltiples beneficios, entre ellos destaco:

  1. Ser capaz de manejar las notificaciones push fácilmente.
  2. Poder sincronizar datos en segundo plano.
  3. Ser capaz de responder a las solicitudes de los recursos originales desde otros lugares.
  4. Recibir actualizaciones de manera centralizada.

App Shell

Esto es, para cargar más rápidamente la app, almacenar la interfaz de usuario básica. Esto permite, un diseño o una arquitectura en los que se puede cargar el contenido de forma progresiva y dinámica, permitiendo a los usuarios interactuar con la aplicación a pesar de tener una conectividad limitada o nula.

Básicamente, almacenar la información localmente en la caché del navegador del dispositivo, permitiendo así su uso con la última versión guardada en la caché, en caso de no disponer de conexión.

Manifiesto de aplicación

Esto, es una especificación de W3C que define una codificación basada en JSON, para proporcionar a los desarrolladores un único sitio en el que poner los meta-datas de una aplicación web. Por por ejemplo:

Ejemplo de estructura de meta data

En conclusión, aún a pesar de tener bastante muy buena pinta, no es algo tan nuevo, ni es algo que se sea tan increíble como para dejar todo lo hecho hasta ahora y cambiar a esto. Tampoco quiero decir que no sirva, ni mucho menos, sino que simplemente como siempre hay que tener en cuenta que es lo que queremos y para qué lo queremos.

Pero es evidente que, cada vez más las Progressive web apps se van pareciendo cada vez más a las aplicaciones móvil nativas, así que es posible que en un futuro no muy lejano veamos un nuevo “boom” con respecto a la creación de apps.

Un cordial saludo a tod@s.