Consentimiento de cookies para aplicaciones web progresivas (PWA): una guía para publishers
Por qué las PWA son un caso límite del consentimiento
Una aplicación web progresiva se comporta como una app nativa — se instala en la pantalla de inicio, funciona sin conexión y almacena en caché de forma agresiva — pero sigue sirviéndose desde un navegador, por lo que se aplican las reglas de cookies y almacenamiento web. Esa naturaleza híbrida es exactamente lo que hace tropezar a los publishers: las mismas obligaciones de consentimiento GDPR que cualquier sitio web, superpuestas a service workers y cachés persistentes que pueden retener silenciosamente datos y scripts después de que un usuario haya dicho que no.
Dónde almacenan las cosas las PWA
Antes de poder condicionar el almacenamiento al consentimiento, necesitas conocer cada lugar donde una PWA puede persistir datos:
- Cookies — la superficie clásica, regida por el consentimiento como siempre.
- LocalStorage / IndexedDB — a menudo usados para el estado de la app, pero también para analítica e identificadores publicitarios.
- Cache Storage — el service worker puede almacenar en caché scripts de terceros (analítica, SDK de anuncios) para que se ejecuten incluso sin conexión.
- El propio service worker — persiste entre sesiones y puede volver a registrar el rastreo en el siguiente inicio.
El consentimiento debe regir todo esto, no solo document.cookie.
El patrón de service worker con consentimiento primero
El principio central: el service worker debe leer el estado del consentimiento antes de almacenar en caché o ejecutar cualquier recurso de terceros no esencial. Un patrón limpio se ve así:
- Almacena la señal de consentimiento en algún lugar que el service worker pueda leer — IndexedDB o una entrada de caché que el CMP actualice en cada elección.
- En el manejador
fetchdel service worker, niégate a almacenar en caché los endpoints de analítica/anuncios a menos que esté presente el consentimiento para ese propósito. - Cuando un usuario retira el consentimiento, envía un mensaje al service worker para purgar los scripts de rastreo almacenados en caché y limpiar los almacenes de IndexedDB pertinentes.
Omitir ese último paso es la brecha de cumplimiento más común en PWA: el banner dice “rechazado,” pero un script de analítica en caché sigue ejecutándose desde el service worker en el siguiente inicio sin conexión.
UX de consentimiento sin conexión
Las PWA pueden iniciarse sin red. Tanto tu banner de consentimiento como la elección almacenada del usuario deben funcionar sin conexión — almacena en caché la propia interfaz del CMP, y nunca uses “concedido” por defecto solo porque el servidor de consentimiento no esté accesible. Si no puedes confirmar una elección previa, trata al usuario como sin consentimiento y sirve únicamente la funcionalidad esencial hasta que puedas.
Implicaciones para los ingresos publicitarios
Para las PWA con publicidad, el estado del consentimiento tiene que llegar a tu SDK de anuncios en el momento de la solicitud, con o sin conexión. Una PWA correctamente conectada pasa la cadena IAB TCF y las señales de Consent Mode v2 a los socios de demanda igual que un sitio normal; una mal configurada almacena en caché un estado obsoleto de “sin consentimiento” y desploma tu eCPM a tarifas no personalizadas indefinidamente. Trata la frescura del consentimiento como una métrica de ingresos.
Cómo ayuda FlexyConsent
FlexyConsent almacena el registro de consentimiento en un almacén legible por el service worker, emite señales de TCF y Consent Mode v2 que sobreviven a los inicios sin conexión, y expone un hook de retirada que puedes conectar a la purga de caché — para que tu PWA siga cumpliendo y tu stack publicitario mantenga la señal de consentimiento más fresca posible en cada superficie.
Puntos clave
- Las PWA afrontan plenas obligaciones de consentimiento GDPR más las complicaciones de service workers y caché.
- Condiciona cookies, LocalStorage, IndexedDB y Cache Storage al consentimiento — no solo las cookies.
- Al retirar el consentimiento, purga los scripts de rastreo en caché y limpia los identificadores almacenados.
- Mantén el estado del consentimiento fresco y seguro sin conexión para que los ingresos publicitarios no se queden atascados en tarifas no personalizadas.