@rrweb/types@2.2.0
- #1928
9b9a1ffThanks @Juice10! - Add a top-level annotation event withrecord.addAnnotation()andreplayer.on('annotation', handler). Annotation data usestype: 'caption'ortype: 'timelineMarker'. ImportannotationDatafrom@rrweb/typesto type annotation data. The player can display these annotations as captions and interactive timeline markers.
rrweb-player@2.2.0
-
#1928
9b9a1ffThanks @Juice10! - Display annotation events as captions and timeline markers. Captions stay visible until replaced or cleared withtext: '',text: null, ortext: 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: falseto hide them initially. Recordings with nonempty captions show a CC toggle when the controls are visible. UsetimelineMarkerColorto configure annotation marker colors separately from custom-eventtags. -
#1928
9b9a1ffThanks @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.
@rrweb/utils@2.2.0
-
#1971
235ae85Thanks @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
messagelistener. - A same-origin iframe is observed once instead of re-observed on every full snapshot (
checkoutEveryNth/checkoutEveryNms/manualtakeFullSnapshot), 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-
MutationObserverhelper 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.
- 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
rrweb-snapshot@2.2.0
-
#1958
009b2ddThanks @salzahrani-salla! - fix: release removed shadow trees from the mirrorRemoving 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.
rrdom-nodejs@2.2.0
- Updated dependencies [
9b9a1ff]:- @rrweb/types@2.2.0
- rrdom@2.2.0
rrweb@2.2.0
- #1928
9b9a1ffThanks @Juice10! - Add a top-level annotation event withrecord.addAnnotation()andreplayer.on('annotation', handler). Annotation data usestype: 'caption'ortype: 'timelineMarker'. ImportannotationDatafrom@rrweb/typesto type annotation data. The player can display these annotations as captions and interactive timeline markers.
-
#1971
235ae85Thanks @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
messagelistener. - A same-origin iframe is observed once instead of re-observed on every full snapshot (
checkoutEveryNth/checkoutEveryNms/manualtakeFullSnapshot), 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-
MutationObserverhelper 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.
- 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
-
#1958
009b2ddThanks @salzahrani-salla! - fix: disconnect shadow-DOM observers when their host is removedEach observed shadow root kept a live
MutationObserverplus 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
rrdom@2.2.0
- Updated dependencies [
009b2dd]:- rrweb-snapshot@2.2.0