Sobre el proyecto
js-fair-consent es una solución de gestión de consentimiento de código abierto diseñada para sitios web que desean respetar la privacidad de los visitantes mientras aún pueden utilizar herramientas de análisis y marketing de manera ética y legal.
La biblioteca proporciona un banner de consentimiento (totalmente personalizable mediante estructura HTML y CSS) que solicita permiso a los visitantes antes de cargar cualquier script de análisis. Una vez que se otorga o niega el consentimiento, los servicios correspondientes se cargan de forma asíncrona y sin bloqueo, siguiendo las prácticas modernas de rendimiento web.
**Proveedores de análisis compatibles**
- Google Analytics (vía gtag.js), con soporte para Consent Mode v2 (modos `consent-only` o `preload`)
- Matomo, utilizando su API nativa de consentimiento (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`)
- Umami, con un modo sin precarga para evitar re-renderizados cuando se concede el consentimiento más tarde
- Hotjar, cargado condicionalmente solo cuando se otorga el consentimiento de marketing o personalización
**Características principales**
- Carga de scripts asíncrona y diferida para que la renderización de la página nunca se bloquee
- Las señales de Global Privacy Control (GPC) y Do-Not-Track (DNT) se respetan automáticamente; cuando se detectan cualquiera de ellas, el banner se oculta y todas las herramientas opcionales permanecen desactivadas
- Configuración predeterminada de privacidad desde el diseño: sin cookies hasta que se otorgue consentimiento explícito, atributos de cookie seguros (`SameSite=Lax`, solo HTTPS)
- Consentimiento granular opcional: los visitantes pueden aprobar o denegar categorías individuales (análisis, marketing, personalización) en lugar de una opción única de todo o nada
- Compatible con CSP: soporta atributos `nonce` e `integrity` para configuraciones estrictas de Content Security Policy
- i18n integrado: traducciones al inglés y polaco incluidas por defecto, extensible para otros idiomas
- Listo para CDN: distribuible directamente a través de jsDelivr o GitHub Pages
**Configuración**
La biblioteca se inicializa a través de un simple objeto de JavaScript pasado a `ConsentAnalytics.init()`. Los usuarios declaran qué servicios desean soportar, proporcionan sus IDs (p. ej., ID de medición de GA, ID del sitio de Umami, URL e ID de sitio de Matomo, ID del proyecto y versión de Hotjar) y establecen opciones como `debug`, `locale` y si habilitar el consentimiento `granular`. Si el consentimiento granular está habilitado, la cookie almacenada se convierte en un objeto JSON que asigna cada categoría a su estado de aprobación, y cada servicio verifica el valor de la categoría relevante antes de cargarse.
**API pública**
La biblioteca expone un pequeño conjunto de métodos para acceso programático:
- `ConsentAnalytics.hasConsent()` — devuelve un booleano que indica si se ha otorgado algún consentimiento
- `ConsentAnalytics.readPrefs()` — devuelve el objeto completo de preferencias de consentimiento
- `ConsentAnalytics.writePrefs(prefs)` — guarda un nuevo estado de preferencias
- `ConsentAnalytics.revokeConsent()` — elimina el consentimiento almacenado y muestra el banner nuevamente
- `ConsentAnalytics.trackPageView()` — activa manualmente una vista de página (útil para SPAs)
El proyecto tiene licencia MIT y fue creado por Rafał Masiarek.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.