6 hours ago
rrweb

@rrweb/types@2.2.0

Minor Changes

  • #1928 9b9a1ff Thanks @Juice10! - Add a top-level annotation event with record.addAnnotation() and replayer.on('annotation', handler). Annotation data uses type: 'caption' or type: 'timelineMarker'. Import annotationData from @rrweb/types to type annotation data. The player can display these annotations as captions and interactive timeline markers.
6 hours ago
rrweb

rrweb-player@2.2.0

Minor Changes

  • #1928 9b9a1ff Thanks @Juice10! - Display annotation events as captions and timeline markers. Captions stay visible until replaced or cleared with text: '', text: null, or text: false. Seeking restores the caption for that replay time. Hovering or focusing timeline markers reveals their text, and clicking seeks to their timestamp.

    Captions are shown by default; set showCaptions: false to hide them initially. Recordings with nonempty captions show a CC toggle when the controls are visible. Use timelineMarkerColor to configure annotation marker colors separately from custom-event tags.

  • #1928 9b9a1ff Thanks @Juice10! - Make the playback timeline a keyboard-focusable slider with an accessible playback position. Use Home and End to seek to the start and end of the recording. Clicking the timeline focuses the slider so keyboard seeking can continue after scrubbing.

Patch Changes

  • #1928 9b9a1ff Thanks @Juice10! - Fix the playback timeline's ArrowLeft and ArrowRight keys to seek backward and forward by five seconds instead of five milliseconds.

  • Updated dependencies [9b9a1ff, 0d6fc66]:

    • @rrweb/replay@2.2.0
    • @rrweb/packer@2.2.0
6 hours ago
rrweb

@rrweb/utils@2.2.0

Patch Changes

  • #1971 235ae85 Thanks @eoghanmurray! - Fix record-side memory leaks and duplicate mutation emission:

    • Stopping a recording now releases the root document's mutation buffer and observer — previously the document observer was only disconnected, so each start/stop cycle leaked one buffer — and removes the cross-origin iframe message listener.
    • A same-origin iframe is observed once instead of re-observed on every full snapshot (checkoutEveryNth/checkoutEveryNms/manual takeFullSnapshot), so a single iframe mutation is no longer emitted once per checkout; its observers are also released when the iframe is removed or navigates away.
    • The untainted-MutationObserver helper iframe used on WebKit/Safari is reference-counted, so it is torn down only when the last observer stops and will get rebuilt for a later recording.
6 hours ago
rrweb

rrweb-snapshot@2.2.0

Patch Changes

  • #1958 009b2dd Thanks @salzahrani-salla! - fix: release removed shadow trees from the mirror

    Removing a shadow host from DOM was leaving references to shadow descendants, so e.g. repeatedly replacing web components mem-leaked their detached trees. Fix by recursing into shadow roots during removal, including nested hosts and releasing strong references from the mirror.

6 hours ago
rrweb

rrdom-nodejs@2.2.0

Patch Changes

  • Updated dependencies [9b9a1ff]:
    • @rrweb/types@2.2.0
    • rrdom@2.2.0
6 hours ago
rrweb

rrweb@2.2.0

Minor Changes

  • #1928 9b9a1ff Thanks @Juice10! - Add a top-level annotation event with record.addAnnotation() and replayer.on('annotation', handler). Annotation data uses type: 'caption' or type: 'timelineMarker'. Import annotationData from @rrweb/types to type annotation data. The player can display these annotations as captions and interactive timeline markers.

Patch Changes

  • #1971 235ae85 Thanks @eoghanmurray! - Fix record-side memory leaks and duplicate mutation emission:

    • Stopping a recording now releases the root document's mutation buffer and observer — previously the document observer was only disconnected, so each start/stop cycle leaked one buffer — and removes the cross-origin iframe message listener.
    • A same-origin iframe is observed once instead of re-observed on every full snapshot (checkoutEveryNth/checkoutEveryNms/manual takeFullSnapshot), so a single iframe mutation is no longer emitted once per checkout; its observers are also released when the iframe is removed or navigates away.
    • The untainted-MutationObserver helper iframe used on WebKit/Safari is reference-counted, so it is torn down only when the last observer stops and will get rebuilt for a later recording.
  • #1958 009b2dd Thanks @salzahrani-salla! - fix: disconnect shadow-DOM observers when their host is removed

    Each observed shadow root kept a live MutationObserver plus its mutation buffer for the rest of the recording session even if its host was removed, a memory leak problem for component-heavy pages. Fix: release shadow observers and buffers as soon as we observe them as removed/detached from dom with tests added for the still-attached host-moved case, and to ensure they get re-observed on reinsertion.

  • Updated dependencies [9b9a1ff, 235ae85, 009b2dd]:

    • @rrweb/types@2.2.0
    • @rrweb/utils@2.2.0
    • rrweb-snapshot@2.2.0
    • rrdom@2.2.0
6 hours ago
rrweb

rrdom@2.2.0

Patch Changes

  • Updated dependencies [009b2dd]:
    • rrweb-snapshot@2.2.0
6 hours ago
rrweb

rrvideo@2.2.0

Patch Changes