Sobre o projeto
js-fair-consent é uma solução de gerenciamento de consentimento de código aberto projetada para sites que desejam respeitar a privacidade dos visitantes, ainda assim podendo usar ferramentas de analytics e marketing de forma ética e legal.
A biblioteca fornece um banner de consentimento (totalmente personalizável via estrutura HTML e CSS) que solicita permissão aos visitantes antes de carregar quaisquer scripts de analytics. Depois que o consentimento é dado — ou negado — os serviços apropriados são carregados de forma assíncrona e não bloqueante, seguindo as práticas modernas de desempenho web.
**Provedores de analytics suportados**
- Google Analytics (via gtag.js), com suporte ao Consent Mode v2 (`consent-only` ou `preload` modes)
- Matomo, usando sua API nativa de consentimento (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`)
- Umami, com modo sem pré-carregamento para evitar re-renders quando o consentimento é concedido posteriormente
- Hotjar, carregado condicionalmente apenas quando o consentimento de marketing ou personalização é dado
**Principais recursos**
- Carregamento assíncrono e diferido de scripts, de modo que a renderização da página nunca seja bloqueada
- Sinais de Global Privacy Control (GPC) e Do-Not-Track (DNT) são automaticamente respeitados — quando qualquer um é detectado, o banner é ocultado e todas as ferramentas opcionais permanecem desativadas
- Padrões de privacidade por design: nenhum cookie até consentimento explícito, atributos de cookie seguros (`SameSite=Lax`, apenas HTTPS)
- Consentimento granular opcional: os visitantes podem aprovar ou negar categorias individuais (analytics, marketing, personalização) em vez de uma escolha única tudo ou nada
- Seguro para CSP: suporta atributos `nonce` e `integrity` para configurações rígidas de Política de Segurança de Conteúdo
- i18n integrado: traduções em inglês e polonês enviadas por padrão, extensíveis para outros idiomas
- Pronto para CDN: distribuível diretamente via jsDelivr ou GitHub Pages
**Configuração**
A biblioteca é inicializada por meio de um objeto JavaScript simples passado para `ConsentAnalytics.init()`. Os usuários declaram quais serviços desejam suportar, fornecem seus IDs (por exemplo, ID de medição do GA, ID do site do Umami, URL e ID do site do Matomo, ID e versão do projeto do Hotjar) e definem opções como `debug`, `locale` e se devem habilitar `granular` consent. Se o consentimento granular estiver habilitado, o cookie armazenado se torna um objeto JSON que mapeia cada categoria para seu status de aprovação, e cada serviço verifica o valor da categoria relevante antes de carregar.
**API pública**
A biblioteca expõe um pequeno conjunto de métodos para acesso programático:
- `ConsentAnalytics.hasConsent()` — retorna um booleano indicando se algum consentimento foi dado
- `ConsentAnalytics.readPrefs()` — retorna o objeto completo de preferências de consentimento
- `ConsentAnalytics.writePrefs(prefs)` — salva um novo estado de preferência
- `ConsentAnalytics.revokeConsent()` — limpa o consentimento armazenado e exibe o banner novamente
- `ConsentAnalytics.trackPageView()` — dispara manualmente uma visualização de página (útil para SPAs)
O projeto é licenciado sob a MIT e foi criado por Rafał Masiarek.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.