El ataque de Apple a los service workers.

¿qué limitaciones tienen las PWAs en iOS y por qué?

Apple vs Google

En mi opinión Apple nunca ha sido bueno con respecto a relaciones con los desarrolladores. Yo tengo un iPhone, me gusta, pero a veces me dan ganas de no comprar el que sigue. Pienso que la gente de Apple después de todo no está acostumbrada a acercarse a la comunidad de desarrolladores, no les importa y en sus actualizaciones nunca han pedido nuestras opiniones, ni las pedirán.

John Wilander, quien tienen el cargo WebKit Security & Privacy Engineer en Apple, escribió hace un par de semanas un artículo en el blog de WebKit que comienza con excelentes noticias: “Bloqueo completo de cookies de terceros y más”. Parece que Safari se está poniendo al día con Firefox y va a deshabilitar las cookies de terceros de forma predeterminada. ¡Chingón!

Referencia: Full Third-Party Cookie Blocking and More.

Aunque hemos desactivado las cookies de terceros durante ya algunos años y mientras algo se rompe ocasionalmente. Negar a las compañías la capacidad de rastrear a los usuarios en todos los sitios es importante y es positivo.

Privacy Badger es un plugin para evitar ser rastreados.

En este mismo artículo en el blog de Webkit, John menciona que las cookies del lado del cliente se limitarán a una vida útil de siete días *2, esta bien.

Pero aclaremos que solo aplica a las cookies de lado del cliente. Si estas creando una cookie en el servidor, usando PHP o algún otro lenguaje de lado servidor, no serán afectadas. Así que por ejemple los logins persistentes aun podrán ser implementados.

Luego, en un audaz ejemplo para hacerse guey, como decimos en mi barrio, hacia el final del articulo, John anuncia que un montón de otras tecnologías de almacenamiento del lado del cliente también se limitarán a siete días. La mayoría de estas tecnologías son APIS, que como las cookies, pueden usarse para guardar datos: Indexed DB, Local Storage y Session Storage ( Cache API no se menciona, habra que ver). Y al final de la lista esta esto

Service Worker registrations

Toma chango tu banana!

Pero tratemos aclaremos un poco las cosas, por que en el post no son muy claras.

Los siete días se cuentan o hacen referencia más bien a siete días de uso de Safari, no siete días del calendario, pero dado como muchas personas usan sus tabletas y teléfonos , los dos probablemente puedan ser el mismo periodo de tiempo). Así que si alguien regresa a tu sitio dentro de un periodo de siete días usando Safari, el contador o se resetea a cero y tu service worker obtiene una suspensión de la ejecución.

Esto solo aplica a Safari. Pero, si su sitio se ha agregado a la pantalla de inicio y el manifiesto de la aplicación web tiene un valor para la propiedad de “visualización” como “independiente” o “pantalla completa”, el contador de siete días no se aplica.

Eso no lo decía originalmente el artículo.

Poco después el artículo fue actualizado y se incluyo esta aclaración, — algunas personas tomaron eso como una aclaración que significa que las aplicaciones web progresivas o pwas no serán afectadas por el futuro cambio. ¡Naranjas agrias!

Solo las aplicaciones web progresivas que se han agregado a la pantalla de inicio (y que tienen el valor apropiado de desplegar — “display”) se salvarán.

Esto por supuesto es un porcentaje muy pequeño de aplicaciones web progresivas, especialmente en iOS. ¿Han intentado hacerlo?

Para agregar un sitio a la pantalla de inicio en iOS, necesitamos escarbar y desplazarnos el el menu compartir para encontrar la option adecuada. Y necesitas hacer esto sin previo aviso. No hay ambient badging en Safari para indicar que un sitio se puede instalar. El banner de instalación de Chrome no es perfecto, pero es mejor que nada.

La imagen muestra el botón Agregar a la Pantalla de iInicio en Android.

Ambient Badging, (o insignia ambiental pfff, no mejor lo dejamos así), es cuando alertamos sutilmente que el sitio web en el que actualmente están navegando es una aplicación web que se puede guardar como una aplicación en su pantalla de inicio.

Un recordatorio amistoso: un app o sitio web progresivo es aquel que:

  • corre sobre HTTPS,
  • tiene un service worker,
  • y un manifiesto web manifest.

Agregar a la pantalla de inicio es algo que puedes hacer con una aplicación web progresiva (o con cualquier otro sitio). No es lo que define a una aplicación web progresivas como tal.

En cualquier caso, este movimiento de borrar los service workers después de 7 días de uso en Safari es muy extraño. Y seguimos confundidos tratando de encontrar la conexión con el resto de la publicación del blog, que trata sobre tecnologías que pueden almacenar datos.

Hasta nuestro entender, con la negación de configurar cookies de terceros, los rastreadores o trackers se estarán moviendo tecnologías nativas p a tecnologías propias, como fue en el pasado, que una compañía rastreadora podia decirle a sus clientes “Agrega este elemento script a tus páginas”, ahora tendrán que decir, “Agrega este elemento script y este archivo de script a tus páginas”. Ese archivo JavaScript podrá entonces podrá almacenar un identificador único en el cliente. Este podría hacerse con una cookie, con Local Storage, o con Indexed DB, por ejemplo.

Pero seguimos sin entender como un script service worker podria ser usado en este sentido. Tal vez podrían poner ejemplos de esto.

Una explicación podría ser para tratar de entender esta decisión de Apple es que se siente como la mejor solución para ellos, no necesariamente no la más ingeniosa o la mejor.

Si algunas tecnologías que se establecen en un dominio específico son purgadas después de siete días entonces lo lógico seria purgar todas las tecnologías de ese dominio. Los services workers están siendo incluidos en esa cacería.

Ahora , para ser justos, navegadores y sistemas operativos son libres de limpiar el espacio de almacenamiento como mejor les parezca. Caches, Local Storage, Indexed DB — todos estos son sujetos a ser limpiados eventualmente.

Siendo curiosos y dandole a Apple el beneficio de a duda, me puse a tratar de averiguar cuánto tiempo duran realmente los registros de los service workers antes de ser eliminados. Tal vez este anuncio de un límite de tiempo de siete días resultaría no ser un cambio tan drástico en el comportamiento actual. Tal vez los service workers actuales duran 90, 60 o solo 20 días.

Naranjas (otra vez):

No había tiempo limite previamente.

No había limite de tiempo previamente.

Entonces esto no es cambio menor. Podemos considerarlo un ataque, paralizador, contra los service workers, una tecnología específicamente diseñada para mejorar la experiencia de usuario de las visitas que regresan, ya sea a través de un rendimiento mejorado o acceso sin conexión.

No nos sorprendería tanto si este anuncio viniera con una función que lo acompañara que permitiese a los usuarios de Safari saber cuándo un sitio web es una aplicación web progresiva que se puede agregar a la pantalla de inicio. Pero Safari continua ignorando la existencia de las aplicaciones web progresivas y ahora desalentará activamente a las personas a utilizar service workers.

Si desean dar su opinión sobre esta situación, pueden presentar el error, y/o quejarse de este desarrollo, esto pues pienso se quedará abajo, muy abajo, en un sótano que en el fondo tiene el archivo muerto cerrado con llave atascado en un baño en desuso y con un letrero en la puerta que dice “Cuidado con los cocodrilos”.

Sin duda, habra quien van a defender a Apple y darán argumentos de porque es bueno mandar los services workers a la zona fantasma, pero no me chinguen. Es una mala jugada de Apple.

Pero pues reflexionando, dada la pandemia y terrible secuela económica que estamos viviendo y otras muchas preocupaciones, este drama estilo de la vieja escuela por un fabricante de un navegador comportándose de mala manera o haciendo berrinche pues se siente hasta reconfortante.

Una pregunta final, nada que ver con lo anterior, ¿se puede implementar PWA en Thor? Voy a investigar y luego actualizo este artículo, o mejor escribimos otro, si alguien sabe al respecto déjeme sus comentarios.

saludos, Alex

Anexo

Para que se involucren con PWAs , recomiendo: https://codelabs.developers.google.com/codelabs/your-first-pwapp/#0

o en KMMX vamos a dar un curso a distancia, más información aquí.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.