Glossar

Was rrweb aufzeichnet und wie seine Datenschutzoptionen funktionieren

Taras Shynkarenko
Taras Shynkarenko
‱Aktualisiert: ‱8 Min. Lesezeit
Was rrweb aufzeichnet und wie seine Datenschutzoptionen funktionierenWas rrweb aufzeichnet und wie seine Datenschutzoptionen funktionieren

TL;DR, Kurzantwort

8 Min. Lesezeit

Die Open-Source-Bibliothek rrweb zeichnet eine Browser-Sitzung als einen serialisierten DOM-Snapshot auf, gefolgt von einem Strom inkrementeller Events (DOM-Mutationen, Mausbewegungen, Klicks, Scrollen, GrĂ¶ĂŸenĂ€nderungen und Eingaben), und baut die Seite dann in einem sandboxed iframe nach, um sie abzuspielen. Sie zeichnet kein Video auf. Sie steht unter der MIT-Lizenz, und ihr Guide verweist neue Projekte inzwischen auf @rrweb/record und @rrweb/replay statt auf das Ă€ltere Paket rrweb. Ohne Konfiguration maskiert sie nur Passwortfelder; maskAllInputs, blockClass, maskTextClass und ihre Selector-GegenstĂŒcke erweitern das.

Was ist rrweb?

Die Open-Source-Bibliothek rrweb, kurz fĂŒr "record and replay the web", zeichnet die Sitzung eines Nutzers im Browser als strukturiertes JSON auf und spielt sie als ansehbare Rekonstruktion der Seite wieder ab. Das README des Projekts beschreibt sie als "a tool for recording and replaying users' interactions on the web." Sie liegt unter github.com/rrweb-io/rrweb, das Repository wurde im October 2018 angelegt, und der Code ist in TypeScript geschrieben, sodass Recorder und Player ein gemeinsames typisiertes Event-Format teilen.

rrweb ist eine Bibliothek, kein Produkt. Sie liefert Ihnen einen Recorder, der Events ausgibt, und einen Player, der sie verarbeitet. Wohin diese Events gehen, wie lange Sie sie aufbewahren und wer sie ansehen darf, ist Aufgabe Ihres Codes. Diese Trennung ist der Grund, warum so viele kommerzielle Replay-Tools darauf aufbauen, und warum Session Replay im Allgemeinen von Anbieter zu Anbieter so Àhnlich aussieht.

Zeichnet rrweb Video auf?

Nein. rrweb zeichnet den Zustand der Seite auf, nicht ihre Pixel. Beim Start durchlĂ€uft der Recorder das DOM und serialisiert es in einen Baum aus Knoten, jeder mit einer eindeutigen numerischen ID. Das Serialisierungs-Dokument des Projekts nennt diese Ausgabe "descriptive": Skripte werden durch Platzhalter-Tags noscript ersetzt, Eingabewerte in ein value-Attribut kopiert, relative URLs werden absolut, und externe Stylesheets werden inline eingebettet, damit das Replay auch dann rendert, wenn das ursprĂŒngliche CSS nicht erreichbar ist.

Nach diesem vollstÀndigen Snapshot ist alles ein Diff. Der Recorder hÀngt einen MutationObserver und eine Reihe von Listenern an, und das Observer-Dokument listet auf, was er erfasst:

  • DOM-Änderungen: Erzeugen und Löschen von Knoten, AttributĂ€nderungen und TextĂ€nderungen
  • Mausbewegungen
  • Mausinteraktionen: Maustaste hoch und runter, Klick, Doppelklick, KontextmenĂŒ, Fokus, Blur sowie Touch-Start, -Bewegung und -Ende
  • Scrollen der Seite oder eines Elements
  • Änderungen der FenstergrĂ¶ĂŸe
  • Eingaben

Jedes Event trĂ€gt einen timestamp und einen numerischen type. Die Event-Typen sind DomContentLoaded, Load, FullSnapshot, IncrementalSnapshot, Meta und Custom, und inkrementelle Events ergĂ€nzen ein Feld data.source, das angibt, ob die Änderung eine Mutation, eine Mausbewegung, ein Scrollen und so weiter war.

Der Replayer baut den Snapshot in einem iframe nach und wendet die inkrementellen Events der Reihe nach an. Er fĂŒhrt das JavaScript der aufgezeichneten Seite nie aus. Das Sandbox-Dokument von rrweb erklĂ€rt, dass das sandbox-Attribut des iframe FormularĂŒbermittlungen, Pop-ups wie window.open und Skripte blockiert, Inline-Handler und javascript:-URLs eingeschlossen. Weil die Seite aus Knoten nachgebaut wird, ist Text in einem Replay echter Text, den Sie markieren können. Wenn Sie doch eine Videodatei brauchen, liefert das Monorepo rrvideo mit, das es als "a tool for transforming the session recorded by rrweb into a video" beschreibt.

Dieselbe AbhÀngigkeit von MutationObserver legt die Browser-Untergrenze von rrweb fest. Der Guide stellt fest: "rrweb does not support IE11 and below because it uses the MutationObserver API".

Welche rrweb-Pakete sollten Sie installieren?

Der rrweb-Guide empfiehlt fĂŒr die meisten Projekte @rrweb/record plus @rrweb/replay und @rrweb/all, wenn Sie einen einzigen Import fĂŒr Aufzeichnung, Replay und Packer wollen. Die Tabelle listet die wichtigsten Pakete im Monorepo so, wie das Paket-README sie beschreibt. Jedes davon stand beim Schreiben dieser Seite auf npm bei Version 2.1.6, veröffentlicht am 18 September 2026.

PaketWas es tut
@rrweb/recordDer Aufzeichnungscode, gedacht fĂŒr den Einsatz in Ihrer Frontend-App oder Seite
@rrweb/replayBaut aufgezeichnete Events in einem iframe nach und spielt sie ab
@rrweb/allAufzeichnung, Replay und Packer in einem Paket, ohne Plugins
rrweb-playerEine Wiedergabe-OberflÀche mit Pause, Vorspulen und Springen, gebaut auf @rrweb/replay
rrweb-snapshotSerialisiert das DOM und baut es nach, die Grundlage des FullSnapshot-Events
@rrweb/packerKompression pro Event vor der NetzwerkĂŒbertragung
@rrweb/types, @rrweb/utilsGemeinsame Typen und Hilfsfunktionen
rrdom, rrdom-nodejsEin virtuelles DOM, mit dem Mutationen wÀhrend des Replays vorgespult werden, plus eine Node.js-Version
rrvideoWandelt eine Aufzeichnung in ein Video um
rrwebDas ursprĂŒngliche Paket mit Aufzeichnung und Replay zusammen

Beim ursprĂŒnglichen Paket rrweb widersprechen sich Dokumentation und Registry. Der Guide sagt: "The rrweb package is deprecated. It still works, but new projects should use @rrweb/record and @rrweb/replay." Auf npm trĂ€gt rrweb 2.1.6 keinen Deprecation-Hinweis, und es wird weiterhin hĂ€ufiger heruntergeladen als sein Nachfolger: Die Download-API von npm zĂ€hlte in der Woche vom 15 bis 21 September 2026 1,874,214 Downloads von rrweb gegenĂŒber 498,366 fĂŒr @rrweb/record. Wer es installiert, bekommt keine Warnung. Wenn Sie neu anfangen, folgen Sie dem Guide und installieren Sie die getrennten Pakete, denn das Paket rrweb ist dasjenige, das die Maintainer verschlanken und entfernen wollen.

Unter welcher Lizenz steht rrweb?

rrweb steht unter der MIT License. Die Datei LICENSE im Repository beginnt mit "Copyright (c) 2018 Contributors", und npm fĂŒhrt fĂŒr jedes der Pakete oben MIT. MIT erlaubt Ihnen, rrweb in proprietĂ€rer kommerzieller Software zu nutzen, zu verĂ€ndern und auszuliefern, solange Sie den Copyright- und Lizenzhinweis beibehalten.

Diese freizĂŒgige Lizenz erklĂ€rt die Forks. Das Replay-Paket von Sentry hĂ€ngt laut seiner package.json im Repository sentry-javascript von @sentry/rrweb und @sentry/rrweb-snapshot ab. Das Browser-SDK von PostHog hĂ€ngt von @posthog/rrweb und @posthog/rrweb-record ab. Beide Anbieter pflegen eine eigene Kopie, ein Fix im Upstream-rrweb erreicht deren Nutzer also erst, wenn der Anbieter ihn ĂŒbernimmt, und die Optionsnamen und Standardwerte in ihren SDKs weichen von denen von rrweb ab.

Welche rrweb-Optionen steuern den Datenschutz?

rrweb stellt seine Datenschutzkontrollen als Optionen von record() bereit. Die Namen und Standardwerte unten stammen aus der Tabelle Record Options in guide.md.

OptionStandardWas sie tut
blockClass'rr-block'Zu blockierende Elemente, als String oder RegExp
blockSelectornullEin Selector fĂŒr zu blockierende Elemente
ignoreClass'rr-ignore'Elemente, deren Eingabe-Events ignoriert werden, als String oder RegExp
ignoreSelectornullEin Selector fĂŒr zu ignorierende Elemente
maskTextClass'rr-mask'Elemente, deren Text maskiert wird, als String oder RegExp
maskTextSelectornullEin Selector fĂŒr zu maskierende Elemente
maskAllInputsfalseMaskiert alle Eingabeinhalte als *
maskInputOptions{ password: true }Maskiert bestimmte Arten von Eingaben
maskInputFnkeinerEigene Logik zum Maskieren von Eingabeinhalten
maskTextFnkeinerEigene Logik zum Maskieren von Textinhalten
ignoreCSSAttributesnullEin Array von CSS-Attributen, die ignoriert werden
recordCanvasfalseOb canvas-Elemente aufgezeichnet werden
recordCrossOriginIframesfalseOb Cross-Origin-iframes aufgezeichnet werden, wofĂŒr rrweb in jeden Kind-Frame eingebunden sein muss

Die drei Klassen verhalten sich unterschiedlich, und sie werden oft verwechselt. Der Datenschutzabschnitt des Guides erklÀrt es genau. Ein Element mit .rr-block "will not be recorded. Instead, it will replay as a placeholder with the same dimension." Ein Element mit .rr-ignore "will not record its input events." Und "all text of elements with the class name .rr-mask and their children will be masked." Blockieren entfernt das Element. Ignorieren behÀlt das Element, verwirft aber, was der Nutzer hineintippt. Maskieren behÀlt das Layout und ersetzt die Zeichen.

HĂ€nde tippen auf einer Laptop-Tastatur, stellvertretend fĂŒr die Formulareingaben, die rrweb aufzeichnet, sofern man sie nicht maskiert.

Drei Datenschutzklassen, drei Effekte
blockClassEntfernt das Element, spielt einen Platzhalter ab
ignoreClassBehÀlt das Element, verwirft seine Eingabe-Events
maskTextClassBehÀlt das Element, ersetzt seinen Text
Jede Klasse in rrwebs Record-Options-Tabelle verÀndert einen anderen Teil der Aufzeichnung.

Was maskiert rrweb standardmĂ€ĂŸig?

rrweb maskiert standardmĂ€ĂŸig genau eine Sache: den Wert von Passwortfeldern. Der Guide sagt es in einer Zeile, "input[type="password"] will be masked by default", und der Quellcode des Recorders bestĂ€tigt es: Wenn maskAllInputs nicht true ist und Sie keine maskInputOptions ĂŒbergeben, greift der Recorder auf { password: true } zurĂŒck.

Flowsery
Flowsery

Jetzt 14 Tage kostenlos testen

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Alles andere, E-Mail-, Telefon-, Adress- und Freitextfelder eingeschlossen, verlĂ€sst den Browser so, wie es getippt wurde, es sei denn, Sie konfigurieren mehr. maskInputOptions akzeptiert diese SchlĂŒssel aus MaskInputOptions in den Typen von rrweb-snapshot: color, date, datetime-local, email, month, number, range, search, tel, text, time, url, week, textarea, select und password. maskAllInputs: true schaltet alle auf einmal ein.

Es gibt keine Option, ein Kind innerhalb eines maskierten Elternelements wieder sichtbar zu machen. rrweb hat keine Einstellung unmask oder unblock, Anbieter, die so etwas anbieten, haben es also in ihren Fork eingebaut. Wenn Sie Bibliotheken nach ihren Standardwerten vergleichen, stellt unsere AufschlĂŒsselung, wo die Standardwerte der PII-SchwĂ€rzung Daten offenlegen, rrweb neben Sentry und Clarity.

Eine praktische Regel fĂŒr eine neue Installation: Beginnen Sie mit maskAllInputs: true, ergĂ€nzen Sie maskTextClass oder maskTextSelector an jedem Container, der Kontodaten rendert, und setzen Sie blockClass auf Drittanbieter-Widgets, die Sie nicht sehen mĂŒssen.

Reihen von ServerschrÀnken in einem Rechenzentrum, in denen sich rrweb-Aufzeichnungen ansammeln und Speicher belegen.

Wie verkleinern Sie eine rrweb-Aufzeichnung?

Das Speicher-Rezept von rrweb nennt drei Strategien: DOM-Elemente blockieren, die viele Events auslösen, mit der sampling-Konfiguration Events verwerfen und das, was Sie behalten, komprimieren oder deduplizieren.

Die Option sampling dĂŒnnt Events innerhalb einer Aufzeichnung aus, statt auszuwĂ€hlen, welche Sitzungen aufgezeichnet werden. Ihre SchlĂŒssel stammen aus dem Typ SamplingStrategy. mousemove nimmt false oder einen Throttle-Schwellenwert, mouseInteraction nimmt false oder eine Zuordnung pro Interaktion, scroll und media nehmen Throttle-Schwellenwerte, input nimmt 'all' oder 'last', und canvas nimmt 'all' oder eine Snapshot-Rate zwischen 1 und 60 pro Sekunde. Das Beispiel im Rezept setzt scroll: 150 mit dem Kommentar "do not emit twice in 150ms" und input: 'last', um nur den Endwert einer getippten Folge zu behalten. Das ist Sampling auf Event-Ebene, ein anderer Hebel als die Session-Replay-Sampling-Rate, die Anbieter anbieten.

FĂŒr die Kompression liefert @rrweb/packer eine Funktion pack, die Sie als packFn ĂŒbergeben, und das passende unpack geht als unpackFn an den Replayer. Das Rezept merkt an, dass die Kompression der ganzen Sitzung im Backend meist besser abschneidet als die Kompression pro Event. slimDOMOptions entfernt Teile des DOM wie Skripte und Kommentare, und checkoutEveryNth oder checkoutEveryNms erstellen in AbstĂ€nden einen frischen vollstĂ€ndigen Snapshot, sodass Sie nur den letzten Abschnitt einer Sitzung behalten können, wenn ein Fehler auftritt. Der Guide warnt, dass das nur ungefĂ€hr gilt: Mit checkoutEveryNth: 200 senden Sie am Ende "the last 200 to 400 events".

Die Kosten der Aufzeichnung sind auch eine Frage der Ladegeschwindigkeit. Die veröffentlichten Zahlen dazu, was ein Recorder an Bundle-GrĂ¶ĂŸe und Main-Thread-Zeit hinzufĂŒgt, sind unter wie stark Session Replay eine Website verlangsamt gesammelt.

HĂ€ufig gestellte Fragen

Ist rrweb kommerziell kostenlos nutzbar?

Ja. rrweb steht unter der MIT-Lizenz, Sie können es also in proprietĂ€rer kommerzieller Software nutzen und verĂ€ndern. Sie mĂŒssen den Copyright-Hinweis und den Lizenztext mit dem ausgelieferten Code beibehalten.

Erfasst rrweb, was Nutzer tippen?

Ja, es sei denn, Sie maskieren es. rrweb zeichnet input-Events auf und maskiert standardmĂ€ĂŸig nur input[type="password"]. Setzen Sie maskAllInputs: true oder listen Sie bestimmte Eingabetypen in maskInputOptions auf, um mehr zu maskieren.

Was ist der Unterschied zwischen blockClass und maskTextClass in rrweb?

blockClass (Standard 'rr-block') entfernt ein Element aus der Aufzeichnung und spielt einen gleich großen Platzhalter ab. maskTextClass (Standard 'rr-mask') behĂ€lt das Element und ersetzt den Text darin und in seinen Kindern.

Sollte ich rrweb oder @rrweb/record installieren?

Installieren Sie @rrweb/record fĂŒr die Aufzeichnung und @rrweb/replay fĂŒr die Wiedergabe. Der rrweb-Guide bezeichnet das kombinierte Paket rrweb als deprecated, obwohl npm dafĂŒr keine Deprecation-Warnung anzeigt.

Kann rrweb Canvas und iframes aufzeichnen?

Ja, beides ist standardmĂ€ĂŸig ausgeschaltet. recordCanvas: false und recordCrossOriginIframes: false sind die Standardwerte, und Cross-Origin-iframes brauchen zusĂ€tzlich rrweb in jedem Kind-Frame.

Welche Browser unterstĂŒtzt rrweb?

rrweb unterstĂŒtzt Browser, die MutationObserver implementieren. Sein Guide stellt fest, dass es Internet Explorer 11 und Ă€lter nicht unterstĂŒtzt.

Wie verkleinert die Sampling-Option von rrweb eine Aufzeichnung?

Die sampling-Konfiguration dĂŒnnt Events innerhalb einer Sitzung aus, statt ganze Aufzeichnungen zu verwerfen. scroll und media nehmen einen Drosselungswert, mousemove ebenfalls, und input akzeptiert 'last', um nur den letzten Wert einer Eingabesequenz zu behalten. Das Beispiel aus dem Storage-Rezept setzt scroll: 150, sodass ein Scroll nur alle 150 Millisekunden ausgelöst wird.

Flowsery
Flowsery

Jetzt 14 Tage kostenlos testen

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Kann man eine rrweb-Aufzeichnung in eine Videodatei umwandeln?

Das rrweb-Monorepo enthÀlt rrvideo, beschrieben als "a tool for transforming the session recorded by rrweb into a video." Damit wird eine Aufzeichnung aus DOM-Snapshot und Mutationen in eine echte Videodatei umgewandelt. rrweb selbst zeichnet weiterhin kein Video auf; rrvideo ist ein separater Konvertierungsschritt im Nachhinein.

Wie viele Downloads hat das veraltete rrweb-Paket im Vergleich zu @rrweb/record?

In der Woche vom 15. bis 21. September 2026 zĂ€hlte npm 1.874.214 Downloads des Pakets rrweb gegenĂŒber 498.366 fĂŒr @rrweb/record. Der Guide bezeichnet rrweb als veraltet, aber npm zeigt keinen Deprecation-Hinweis dafĂŒr an, sodass bei der Installation keine Warnung erscheint. Das Ă€ltere Paket wird weiterhin deutlich hĂ€ufiger heruntergeladen als sein Nachfolger.

Verwenden Sentry und PostHog das ursprĂŒngliche rrweb-Paket direkt?

Sentry und PostHog pflegen jeweils einen eigenen Fork, statt direkt von rrweb abzuhĂ€ngen. Das Replay-Paket von Sentry hĂ€ngt von @sentry/rrweb und @sentry/rrweb-snapshot ab, und das Browser-SDK von PostHog von @posthog/rrweb und @posthog/rrweb-record. Ein Fix im Upstream-rrweb erreicht deren Nutzer erst, wenn der Anbieter ihn ĂŒbernimmt, und die Optionsnamen und Standardwerte jedes Forks weichen von denen von rrweb ab.

War dieser Artikel hilfreich?

Teilen Sie uns Ihre Meinung mit!

Sehen Sie uns öfter bei Google

Ein Klick macht Flowsery zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in Ihren Top-Meldungen, im KI-Modus und in den KI-Übersichten.

Bevor Sie gehen...

Flowsery

Flowsery

Umsatzorientierte Analysen fĂŒr Ihre Website

Verfolgen Sie jeden Besucher, jede Quelle und jede Conversion in Echtzeit. Einfach, leistungsstark und komplett ohne Cookies.

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Verwandte Glossarbegriffe

Wie Session Replay funktioniert und was es nicht siehtWie Session Replay funktioniert und was es nicht sieht
Glossar

Wie Session Replay funktioniert und was es nicht sieht

Ein Session Replay rekonstruiert einen Besuch aus DOM-Mutationen und Eingaben, nicht aus Video. Was es erfasst, was Maskierung verbirgt, was Heatmaps trennt.

‱7 Min. Lesezeit
Wo die Standardwerte der PII-SchwÀrzung im Session Replay Daten offenlegenWo die Standardwerte der PII-SchwÀrzung im Session Replay Daten offenlegen
Glossar

Wo die Standardwerte der PII-SchwÀrzung im Session Replay Daten offenlegen

Standardwerte fĂŒr die PII-SchwĂ€rzung im Session Replay gehen weit auseinander: rrweb maskiert nur Passwörter, Sentry allen Text, Clarity Zahlen und E-Mails.

‱9 Min. Lesezeit
Was sieben Anbieter zur Aufbewahrungsdauer fĂŒr Session-Replay-Daten veröffentlichenWas sieben Anbieter zur Aufbewahrungsdauer fĂŒr Session-Replay-Daten veröffentlichen
Glossar

Was sieben Anbieter zur Aufbewahrungsdauer fĂŒr Session-Replay-Daten veröffentlichen

Die Aufbewahrungsdauer fĂŒr Session-Replay-Daten laut Anbieter-Doku: FullStory, Hotjar, Clarity, LogRocket, PostHog, Sentry, Datadog und die Vorgaben der DSGVO.

‱9 Min. Lesezeit
Wie stark bremst Session Replay die Website-Geschwindigkeit?Wie stark bremst Session Replay die Website-Geschwindigkeit?
Glossar

Wie stark bremst Session Replay die Website-Geschwindigkeit?

Die belastbare Antwort darauf, ob Session Replay eine Website verlangsamt, mit rrweb- und Sentry-Zahlen zu SkriptgrĂ¶ĂŸe, Hauptthread-CPU und Upload.

‱8 Min. Lesezeit
Wie ein Opt-out fĂŒr Google Analytics funktioniert und was jede Methode blockiertWie ein Opt-out fĂŒr Google Analytics funktioniert und was jede Methode blockiert
Glossar

Wie ein Opt-out fĂŒr Google Analytics funktioniert und was jede Methode blockiert

Ein Opt-out fĂŒr Google Analytics kann ein Browser-Add-on, ein ga-disable-Flag oder verweigerter Consent sein. Was jede Methode blockiert und wo sie endet.

‱8 Min. Lesezeit
Woher die Daten bei Session Replay vs. Heatmaps kommenWoher die Daten bei Session Replay vs. Heatmaps kommen
Glossar

Woher die Daten bei Session Replay vs. Heatmaps kommen

Bei Session Replay vs. Heatmaps steht ein Besuch gegen viele: wie Hotjar, Datadog, PostHog, Clarity und FullStory Heatmaps mit oder ohne Aufzeichnungen bauen.

‱7 Min. Lesezeit

Verwandte Artikel