Cookie-Einwilligung für React

Cookie-Einwilligung für React,
ein Tag und eine Komponente

Eine Vite- oder CRA-App bekommt die Runtime als erstes Tag in index.html, dann liefert @cookiecrumbs/react Ihnen ConsentGate, CookieDeclaration und ManageCookiesLink für den Baum.

Was sich im Head einer React-Seite ändert, sobald die Runtime an erster Stelle steht: Nichts Nicht-Notwendiges läuft, bis seine Kategorie erlaubt wird.

die Regel

Was das Gesetz von einer React-Website verlangt

Eine React-Single-Page-App lädt ihre Analyse in main.tsx, bevor es irgendeine UI gibt. Eine später hinzugefügte Banner-Komponente zeigt eine Auswahl, kann aber nicht zurücknehmen, was schon gelaufen ist.

Die Regel ist überall in der EU und im Vereinigten Königreich dieselbe: Ohne Zustimmung darf nichts über das unbedingt Notwendige hinaus auf dem Gerät eines Besuchers gespeichert oder von dort ausgelesen werden. Das ist Artikel 5 Absatz 3 der ePrivacy-Richtlinie, und die Zustimmung muss der DSGVO-Definition von Einwilligung genügen: freiwillig, spezifisch, informiert und unmissverständlich, mit einer Ablehnung, die so einfach ist wie die Annahme. Das Vereinigte Königreich hält dieselbe Regel in PECR fest, mit engen Ausnahmen für risikoarme Statistiken seit dem 5. Februar 2026. Kalifornien und die anderen US-Bundesstaaten funktionieren umgekehrt: kein Opt-in, aber ein Opt-out-Link und Unterstützung für das Global-Privacy-Control-Signal.

Für eine Website folgen daraus drei Dinge. Analyse-, Werbe- und Social-Media-Skripte müssen auf eine Entscheidung warten. Die Entscheidung muss so aufgezeichnet werden, dass Sie sie später vorzeigen können, denn Artikel 7 Absatz 1 legt die Beweislast bei Ihnen. Und der Widerruf muss so einfach sein wie die Zustimmung, also braucht es auf jeder Seite ein Bedienelement, das das Banner wieder öffnet. Ein Banner, das zwei Buttons zeigt und Google Analytics trotzdem lädt, fällt beim ersten Test durch, und genau dieses Versagen ahnden die Aufsichtsbehörden, von den CNIL-Entscheidungen gegen Google und SHEIN bis zu den Prüfwellen der niederländischen und belgischen Behörden.

so funktioniert es

So funktioniert Einwilligung in einer React-App

Eine React-SPA hat eine HTML-Datei, und dort muss Einwilligung beginnen. Die Runtime kommt in index.html als erstes Skript im Head, vor das Vite- oder Webpack-Bundle. Sie installiert ihren Interceptor synchron, noch bevor sie Ihre Konfiguration lädt, sodass alles, was das Bundle danach einschleusen will, abgefangen wird.

Im Baum haben Sie zwei Werkzeuge. ConsentGate rendert seine Kinder nur, wenn eine Kategorie erlaubt ist, und zeigt sonst Ihren Fallback, der richtige Weg für ein Chat-Widget, ein Video-Embed oder einen Analytics-Provider. Die Runtime-API auf window, von @cookiecrumbs/react als Hook verpackt, sagt jeder Komponente den aktuellen Status, das Regime, die Sprache und die Consent-ID und gibt ihr open(), um das Banner aus einem Footer-Link wieder zu öffnen.

Beliebte React-Muster, über die Leute stolpern: ein Analytics-Provider an der Baumspitze, der beim Mounten feuert, ein Router, der bei jeder Navigation Seitenaufrufe sendet, und ein useEffect, das ein Pixel einschleust. Jedes davon kommt entweder in ein Gate oder prüft isGranted("analytics"), bevor es etwas tut. Der Scan auf Ihrer deployten Website zeigt, welche davon noch vor der Einwilligung feuern, mit dem Skript, das es getan hat.

Einrichtung

Einrichtung in React

Fünf Schritte. Die CLI erledigt die meisten davon, und jeder ist auch ein Klick im Dashboard.

  1. Init aus dem Repo

    Erkennt ein reines React-Projekt, verknüpft die Website, schreibt die Konfiguration und gibt das Snippet aus.

    npx cookiecrumbs login
    npx cookiecrumbs init
  2. Das Tag an erste Stelle in index.html

    Vor Ihrem Bundle, vor allem anderen. Die Runtime installiert ihren Interceptor synchron.

    <!-- index.html -->
    <head>
      <script src="https://app.cookiecrumbs.eu/runtime/cc.js"
        data-cc-site="pk_live_…"
        data-cc-env="production"></script>
      …
    </head>
  3. Einwilligungspflichtige Skripte und Komponenten sperren

    Ein type="text/plain"-Tag mit Kategorie bleibt inaktiv, bis sie erlaubt wird. Im Baum rendert ConsentGate seine Kinder nur, wenn die Kategorie erlaubt ist.

    <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. Geben Sie den Leuten einen Weg zurück

    Ein Footer-Link, der das Banner wieder öffnet, ist der Widerrufsweg, den Artikel 7 Absatz 3 erwartet.

    import { ManageCookiesLink } from '@cookiecrumbs/react';
    <ManageCookiesLink>Manage cookies</ManageCookiesLink>
  5. Scannen, einsortieren, veröffentlichen

    Der Scan findet, was das Bundle wirklich lädt. Einmal pro Anbieter einsortieren, veröffentlichen, fertig.

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

aufgepasst

Fehler, die wir in React-Apps sehen

Jeder davon taucht im ersten Scan als Tracker auf, der vor der Einwilligung gefeuert hat.

  • Die Runtime aus einem useEffect einschleusenEffekte laufen nach dem ersten Render. Dann ist das Bundle geladen und der Analytics-Provider hat gefeuert. Das Tag gehört in index.html.
  • „Session“-Cookies als notwendig behandelnNotwendigkeit geht um Funktion, nicht um Lebensdauer. Ein Session-Cookie eines Marketing-Tools ist trotzdem Marketing.
  • Einwilligung nur im React-State speichernEin Reload vergisst sie, und das Banner fragt erneut. Lassen Sie die Runtime das Cookie besitzen und lesen Sie daraus.
  • Ein Banner für jedes LandDie USA brauchen Opt-out und GPC, die EU braucht Opt-in. Regionsregeln wählen anhand des Standorts des Besuchers das Richtige.
  • Nur auf localhost testenScan und Installations-Check brauchen die deployte URL. Nutzen Sie den Preview-Schlüssel auf einem Staging-Deploy.

vor dem Livegang

Die Compliance-Checkliste

Acht Zeilen. Die letzten beiden hakt das Dashboard anhand echter Daten ab.

  • Das Tag ist das erste Skript im HeadAlles darüber kann ein Cookie setzen, das die Runtime nicht zurücknehmen kann.
  • Jedes Analyse-, Werbe- und Social-Skript wartet auf seine KategorieEntweder type="text/plain" mit einer Kategorie, oder der Host steht in der Block-Map aus dem Scan.
  • „Alle ablehnen“ steht auf der ersten EbeneGleiche Größe, gleiches Gewicht wie „Alle akzeptieren“. Kein „X“, das als Einwilligung zählt, keine vorangekreuzten Kästchen.
  • Die Consent-Mode-Standardwerte stehen auf „denied“, bevor Google lädtPrüfen Sie die sieben Signale im Tag Assistant bei verweigerter Einwilligung.
  • Die Links zu Impressum und Datenschutzerklärung sind gesetztOhne beide wird die Veröffentlichung verweigert; die Banner-Fußzeile verlinkt darauf.
  • Ein Widerrufs-Element ist auf jeder Seite erreichbarDas dauerhafte Bedienelement oder ein Link „Cookies verwalten“ in Ihrer Fußzeile.
  • Der erste vollständige Scan ist gelaufen und jeder Anbieter ist einsortiertDas Urteil auf der Startseite sagt datiert, was vor der Einwilligung gefeuert hat.
  • Der Installations-Check ist bestandenEr lädt Ihre Seite wie ein Besucher und bestätigt, dass das Banner vor jedem Tracker lief.

was Sie bekommen

Was der kostenlose Tarif enthält

Zwei Domains, 100 gescannte Unterseiten pro Monat und Domain, jede Regulierung, die CLI, die SDKs und der MCP-Server.

Ein Scanner, der die gerenderte Seite liest

Jede Seite, in jedem Einwilligungszustand, in einem echten Browser. Cookies, Pixel, iFrames und Storage-Schlüssel, mit der Seite und dem Skript, die sie gesetzt haben. Regelmäßig neu gescannt.

Die Cookie-Erklärung schreibt sich aus dem Ergebnis von selbst.

Ein Banner, das zuerst blockiert

Tags bleiben inaktiv, bis ihre Kategorie erlaubt wird. „Alle ablehnen“ ist so sichtbar wie „Alle akzeptieren“. Sieben Layouts, 25 Sprachen, Consent Mode v2 und die richtige Regel pro Region.

21 kB, eine Datei, keine eigenen Anfragen an Dritte.

Ein Nachweis, den Sie vorlegen können

Jede Entscheidung wird mit Zeitstempel, Banner-Version und einem Hash der angezeigten Texte gespeichert, verkettet mit dem Datensatz davor. Exporte sind signiert. Gehostet in Frankfurt.

Artikel 7 Absatz 1, im kostenlosen Tarif.

kostenloser Check

Prüfen Sie, was Ihre Website gerade lädt

Das HTML der Startseite, abgeglichen mit der Tracker-Datenbank. Kein Konto, nichts wird gespeichert. Der vollständige Scan im Dashboard macht dasselbe für jede Seite, in einem echten Browser.

Fragen

Klare Antworten

Brauche ich ein npm-Paket?
Nein. Das Script-Tag reicht für Blockierung und Banner. @cookiecrumbs/react ergänzt typisierte Komponenten und Hooks für React-Bäume.
Wie lese ich den Einwilligungsstatus in einer Komponente?
Die Runtime-API stellt ihn auf window bereit, und @cookiecrumbs/react verpackt ihn als Hook, sodass eine Komponente einen Platzhalter rendern kann, bis die Kategorie erlaubt wird.
Und eine React-App, die Google Tag Manager nutzt?
Geben Sie dem GTM-Tag type="text/plain" mit einer Kategorie, oder lassen Sie Consent Mode v2 das regeln: Die Runtime setzt alle sieben Signale auf „denied“, bevor GTM lädt, und aktualisiert sie bei Einwilligung.
Funktioniert das mit Remix, Gatsby oder Vite SSR?
Alles, was ein HTML-Dokument rendert, funktioniert mit dem Script-Tag als erstem Element im Head. Die React-Komponenten funktionieren in jedem React-Baum.
Ruiniert es meinen Lighthouse-Score?
Die Runtime ist 21 kB gzip, asynchron, ohne eigene Anfragen an Dritte. Die Layouts Bar und Ribbon reservieren Platz vor dem Rendern, also keine Layoutverschiebung.
Wie zeige ich die Cookie-Liste auf meiner Datenschutzseite?
Binden Sie CookieDeclaration an beliebiger Stelle ein. Es rendert die öffentliche Cookie-Liste aus Ihrem letzten Scan in der Sprache des Besuchers.

nächster Schritt

Das Banner mit dem nächsten Deploy ausliefern

Website hinzufügen, npx cookiecrumbs init im React-Repo ausführen, und das Einwilligungsprotokoll beginnt in der EU aufzuzeichnen.