Este concepto de aplicaciones web, impulsado por Google, y por el que según parece muchos desarrolladores y empresas están interesándose bastante, trata de explicar cómo es posible tener una aplicación web en un dispositivo, dando la sensación de aplicación nativa, pero realmente funcionar sobre un navegador.

La principal característica de estas aplicaciones es que se integran con el sistema operativo y mediante ciertos mecanismos es posible su ejecución offline y la actualización continua cuando hay disponibilidad de conexión. Esto permite dar al usuario una grata experiencia. También están pensadas para ser usadas con conexiones débiles y que no se dé la sensación de carga o actualización. Todo ello, gracias al API de Service Workers con el que se implementan.

La seguridad es una parte esencial para el funcionamiento de las PWAs y el uso de https es justificado dado que para hacer uso del hardware (cámara, sensores, etc…) a través de los navegadores, es necesario, y de hecho, algunos navegadores no permiten utilizar estas características si no es con conexión https. *Nota: Si a alguien le interesa obtener un certificado HTTPS de forma gratuita para sus proyectos, en https://letsencrypt.org/  es posible.

Es interesante lo que dice Google que tiene que tener una aplicación web para ser Progressive: 

  • Progresiva: funciona para todos los usuarios, sin importar la elección de navegador, porque está construida con mejora progresiva como principio central.
  • Adaptable: se adapta a cualquier factor de formulario, sea escritorio, móvil, tablet o lo que venga en el futuro.
  • Independiente de la conectividad: mejorada con service workers para trabajar sin conexión o con redes de mala calidad.
  • Estilo app: al usuario le parece una app con interacciones y navegación estilo app, porque está construida con modelo de shell de app.
  • Fresca: siempre actualizada gracias al proceso de actualización de service worker.
  • Segura: emitida vía HTTPS para evitar intromisiones y para garantizar que el contenido no se haya manipulado.
  • Descubrible: se puede identificar como “app” gracias al manifiesto W3C y al alcance de registro de service worker, lo que permite que los motores de búsqueda la encuentren.
  • Posibilidad de volver a interactuar: facilita la posibilidad de volver a interactuar a través de funciones como notificaciones push.
  • Instalable: les permite a los usuarios “conservar” las apps que les resultan más útiles en su pantalla principal sin la molestia de una tienda de app.
  • Vinculable : se puede compartir fácilmente vía URL, no requiere instalación compleja.

Un ejemplo para entender la filosofía de esta propuesta es que si tenemos una PWA en nuestro dispositivo y la tenemos abierta, si desde otro link la volvemos a abrir, se redirigiría a la instancia abierta y no se duplicaría.

SERVICE WORKERS:

Básicamente se trata de un fichero bloqueante asíncrono que corre en otro hilo distinto al principal y mediante el cual se puede decidir qué enviar al cliente, dependiendo por ejemplo, de las características que tenga. También gestionan, cuando la información en el backend está disponible para enviarla al cliente y avisar por ejemplo, con una notificación Push.

Llegados a este punto, recordamos todas las asombrosas cosas que se pueden hacer con las APIs de acceso a los dispositivos. Listado de Mozilla

 

Este artículo no trata de entrar en profundidad en cómo implementar una PWA, ni explicar a fondo cada uno de las herramientas que se usan para ello. Si no explicar qué son y cómo funcionan a grandes rasgos. Y si estás interesado en abordar el tema más al detalle, puedes visitar las siguientes webs donde se explica con ejemplos el desarrollo de una aplicación web progresiva. Google developers y Manual de PWA de Desarrolloweb.