zgoda na cookies dla React

Zgoda na cookies dla React,
jeden tag i jeden komponent

Aplikacja Vite lub CRA dostaje runtime jako pierwszy tag w index.html, a potem @cookiecrumbs/react daje Ci ConsentGate, CookieDeclaration i ManageCookiesLink do drzewa.

Co zmienia się w head strony React, gdy runtime jest pierwszy: nic nieniezbędnego nie uruchamia się, dopóki jego kategoria nie zostanie przyznana.

zasada

Czego prawo wymaga od strony w React

Aplikacja React typu SPA ładuje analitykę w main.tsx, zanim istnieje jakikolwiek interfejs. Komponent banera dodany później pokazuje wybór, ale nie może cofnąć tego, co już się wykonało.

Zasada jest taka sama w całej UE i w Wielkiej Brytanii: bez zgody nie wolno zapisywać na urządzeniu odwiedzającego ani odczytywać z niego niczego poza tym, co ściśle niezbędne. To artykuł 5 ust. 3 dyrektywy ePrivacy, a zgoda musi spełniać definicję z RODO: dobrowolna, konkretna, świadoma i jednoznaczna, z odmową równie łatwą jak akceptacja. Wielka Brytania utrzymuje tę samą zasadę w PECR, z wąskimi wyjątkami dla statystyk niskiego ryzyka od 5 lutego 2026 r. Kalifornia i inne prawa stanowe USA działają odwrotnie: bez opt-in, ale z linkiem opt-out i obsługą sygnału Global Privacy Control.

Dla strony wynikają z tego trzy rzeczy. Skrypty analityczne, reklamowe i społecznościowe muszą poczekać na decyzję. Decyzję trzeba zapisać tak, aby dało się ją później pokazać, bo artykuł 7 ust. 1 przerzuca ciężar dowodu na Ciebie. A wycofanie zgody musi być równie łatwe jak jej udzielenie, co oznacza element na każdej stronie, który ponownie otwiera baner. Baner, który pokazuje dwa przyciski i mimo to ładuje Google Analytics, oblewa pierwszy test, i właśnie za to organy nadzoru nakładają kary, od decyzji CNIL wobec Google i SHEIN po kontrole organów holenderskiego i belgijskiego.

jak to działa

Jak działa zgoda w aplikacji React

SPA w React ma jeden plik HTML i tam musi zaczynać się zgoda. Runtime trafia do index.html jako pierwszy skrypt w head, przed bundle’em Vite lub Webpacka. Instaluje swój interceptor synchronicznie, jeszcze przed pobraniem Twojej konfiguracji, więc wszystko, co bundle spróbuje później wstrzyknąć, zostaje przechwycone.

W drzewie masz dwa narzędzia. ConsentGate renderuje dzieci tylko wtedy, gdy kategoria jest przyznana, a w przeciwnym razie pokazuje Twój fallback, co jest właściwym sposobem montowania widżetu czatu, osadzonego wideo lub providera analityki. API runtime na window, opakowane przez @cookiecrumbs/react w hook, mówi każdemu komponentowi o aktualnym stanie, reżimie, języku i identyfikatorze zgody i daje mu open(), by ponownie otworzyć baner z linku w stopce.

Popularne wzorce React, na których ludzie się potykają: provider analityki na szczycie drzewa odpalający przy montowaniu, router wysyłający odsłony przy każdej nawigacji i useEffect wstrzykujący piksel. Każdy z nich albo trafia do gate’a, albo sprawdza isGranted("analytics"), zanim cokolwiek zrobi. Skan wdrożonej strony pokazuje, które z nich nadal odpalają przed zgodą, wraz ze skryptem, który to zrobił.

konfiguracja

Konfiguracja w React

Pięć kroków. CLI wykonuje większość z nich, a każdy to także jedno kliknięcie w panelu.

  1. Init z repozytorium

    Wykrywa zwykły projekt React, łączy stronę, zapisuje konfigurację i wypisuje snippet.

    npx cookiecrumbs login
    npx cookiecrumbs init
  2. Umieść tag na początku index.html

    Przed Twoim bundle’em, przed wszystkim. Runtime instaluje interceptor synchronicznie.

    <!-- index.html -->
    <head>
      <script src="https://app.cookiecrumbs.eu/runtime/cc.js"
        data-cc-site="pk_live_…"
        data-cc-env="production"></script>
      …
    </head>
  3. Zablokuj skrypty i komponenty wymagające zgody

    Tag type="text/plain" z kategorią pozostaje nieaktywny do przyznania. W drzewie ConsentGate renderuje dzieci tylko wtedy, gdy kategoria jest przyznana.

    <script type="text/plain" data-cc-category="analytics"
            src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
    
    // in the app
    import { ConsentGate } from '@cookiecrumbs/react';
    <ConsentGate category="marketing">
      <MetaPixel />
    </ConsentGate>
  4. Daj ludziom drogę powrotu

    Link w stopce ponownie otwierający baner to ścieżka wycofania, jakiej oczekuje art. 7 ust. 3.

    import { ManageCookiesLink } from '@cookiecrumbs/react';
    <ManageCookiesLink>Manage cookies</ManageCookiesLink>
  5. Skanuj, przypisz, opublikuj

    Skan znajduje to, co bundle naprawdę ładuje. Przypisz raz na dostawcę, opublikuj, gotowe.

    npx cookiecrumbs scan --wait
    npx cookiecrumbs push --env production

uwaga

Błędy, które widzimy w aplikacjach React

Każdy z nich pojawia się w pierwszym skanie jako tracker uruchomiony przed zgodą.

  • Wstrzykiwanie runtime z useEffectEfekty działają po pierwszym renderze. Wtedy bundle jest już załadowany, a provider analityki odpalił. Tag należy do index.html.
  • Traktowanie cookies „sesyjnych” jako niezbędnychNiezbędność dotyczy funkcji, nie czasu życia. Cookie sesyjne narzędzia marketingowego to nadal marketing.
  • Przechowywanie zgody tylko w stanie ReactOdświeżenie ją zapomina i baner pyta ponownie. Niech runtime będzie właścicielem cookie i czytaj z niego.
  • Jeden baner dla każdego krajuUSA potrzebują opt-out i GPC, UE potrzebuje opt-in. Reguły regionalne wybierają właściwy na podstawie lokalizacji odwiedzającego.
  • Testowanie tylko na localhostSkan i test instalacji potrzebują wdrożonego adresu. Użyj klucza preview na deployu stagingowym.

przed publikacją

Lista kontrolna zgodności

Osiem punktów. Dwa ostatnie panel odhacza na podstawie prawdziwych danych.

  • Tag jest pierwszym skryptem w headWszystko powyżej może ustawić cookie, którego runtime nie cofnie.
  • Każdy skrypt analityczny, reklamowy i społecznościowy czeka na swoją kategorięAlbo type="text/plain" z kategorią, albo host jest w mapie blokowania ze skanu.
  • „Odrzuć wszystko” jest na pierwszej warstwieTen sam rozmiar i ta sama waga co „Akceptuj wszystko”. Żadnego „X” liczonego jako zgoda, żadnych zaznaczonych z góry pól.
  • Domyślne wartości Consent Mode są „denied”, zanim załaduje się GoogleSprawdź siedem sygnałów w Tag Assistant przy odmowie zgody.
  • Linki do impressum i polityki prywatności są ustawionePublikacja jest odrzucana, dopóki nie ma obu; stopka banera do nich prowadzi.
  • Na każdej stronie dostępny jest element do wycofania zgodyStały element lub link „Zarządzaj cookies” w stopce.
  • Pierwszy pełny skan został wykonany i każdy dostawca jest przypisanyWerdykt na stronie głównej mówi, z datą, co uruchomiło się przed zgodą.
  • Test instalacji zaliczonyŁaduje Twoją stronę jak odwiedzający i potwierdza, że baner uruchomił się przed jakimkolwiek trackerem.

co dostajesz

Co zawiera darmowy plan

Dwie domeny, 100 skanowanych podstron miesięcznie na domenę, wszystkie regulacje, CLI, SDK i serwer MCP.

Skaner, który czyta wyrenderowaną stronę

Każda strona, w każdym stanie zgody, w prawdziwej przeglądarce. Cookies, piksele, iframe’y i klucze storage, wraz ze stroną i skryptem, które je ustawiły. Skanowane ponownie według harmonogramu.

Deklaracja cookies pisze się sama na podstawie wyniku.

Baner, który najpierw blokuje

Tagi pozostają nieaktywne, dopóki ich kategoria nie zostanie przyznana. „Odrzuć wszystko” jest tak samo widoczne jak „Akceptuj wszystko”. Siedem układów, 25 języków, Consent Mode v2 i właściwa zasada dla każdego regionu.

21 kB, jeden plik, żadnych własnych żądań do firm trzecich.

Dowód, który możesz przekazać

Każdy wybór jest zapisywany ze znacznikiem czasu, wersją banera i skrótem pokazanych tekstów, powiązany łańcuchowo z poprzednim rekordem. Eksporty są podpisane. Hostowane we Frankfurcie.

Artykuł 7 ust. 1, w darmowym planie.

darmowy test

Sprawdź, co Twoja strona ładuje w tej chwili

HTML strony głównej porównany z bazą trackerów. Bez konta, nic nie jest zapisywane. Pełny skan w panelu robi to samo dla każdej strony, w prawdziwej przeglądarce.

pytania

Proste odpowiedzi

Czy potrzebuję pakietu npm?
Nie. Tag script wystarcza do blokowania i banera. @cookiecrumbs/react dodaje typowane komponenty i hooki dla drzew React.
Jak odczytać stan zgody w komponencie?
API runtime udostępnia go na window, a @cookiecrumbs/react opakowuje go w hook, więc komponent może renderować placeholder, dopóki kategoria nie zostanie przyznana.
A aplikacja React używająca Google Tag Managera?
Nadaj tagowi GTM type="text/plain" z kategorią albo pozwól Consent Mode v2 to załatwić: runtime ustawia wszystkie siedem sygnałów na „denied” przed załadowaniem GTM i aktualizuje je po zgodzie.
Czy to działa z Remixem, Gatsbym lub Vite SSR?
Wszystko, co renderuje dokument HTML, działa z tagiem script jako pierwszym elementem head. Komponenty React działają w każdym drzewie React.
Czy zepsuje mój wynik Lighthouse?
Runtime to 21 kB (gzip), asynchroniczny, bez własnych żądań do firm trzecich. Układy pasek i wstążka rezerwują miejsce przed renderowaniem, więc bez przesunięć układu.
Jak pokazać listę cookies na stronie polityki prywatności?
Zamontuj CookieDeclaration w dowolnym miejscu. Renderuje publiczną listę cookies z ostatniego skanu w języku odwiedzającego.

następny krok

Wdróż baner z następnym deployem

Dodaj stronę, uruchom npx cookiecrumbs init w repozytorium React, a dziennik zgód zaczyna rejestrować w UE.