-
#1535
04ee6ed
Thanks @eoghanmurray! - Slight simplification to how we replace :hover after #1458 -
#1437
5fbb904
Thanks @eoghanmurray! - Edge case: Provide support for mutations on a <style> element which (unusually) has multiple text nodes -
#1593
5a78938
Thanks @daibhin! -NodeType
enum was moved from rrweb-snapshot to @rrweb/types The following types where moved from rrweb-snapshot to @rrweb/types:documentNode
,documentTypeNode
,legacyAttributes
,textNode
,cdataNode
,commentNode
,elementNode
,serializedNode
,serializedNodeWithId
,serializedElementNodeWithId
,serializedTextNodeWithId
,IMirror
,INode
,mediaAttributes
,attributes
andDataURLOptions
-
Updated dependencies [
8e55c45
,02cc62d
,04ee6ed
,5fbb904
,5a78938
]:- [email protected]
- [email protected]
- @rrweb/[email protected]
- @rrweb/[email protected]
-
#1417
40bbc25
Thanks @YunFeng0817! - fix: duplicate textContent for style elements cause incremental style mutations to be invalid -
#1527
68076b7
Thanks @arredgroup! - Export takeFullSnapshot function for a recording process -
#1515
8059d96
Thanks @okejminja! - Added support for deprecated addRule & removeRule methods -
#1509
be6bf52
Thanks @Juice10! - Reverse monkey patch built in methods to support LWC (and other frameworks like angular which monkey patch built in methods). -
Updated dependencies [
40bbc25
,335639a
,335639a
,d350da8
,be6bf52
]:- [email protected]
- [email protected]
- @rrweb/[email protected]
- @rrweb/[email protected]
-
#1386
a2c8a1a
Thanks @ababik! - Fix that the optionalmaskInputFn
was being accidentally ignored during the creation of the full snapshot -
#1512
d08624c
Thanks @eoghanmurray! - optimisation: skip mask check on leaf elements
-
#1497
2606a2a
Thanks @Juice10! - Split plugins out of rrweb and move them into their own packages: @rrweb/packer, @rrweb/rrweb-plugin-canvas-webrtc-record, @rrweb/rrweb-plugin-canvas-webrtc-replay, @rrweb/rrweb-plugin-sequential-id-record, @rrweb/rrweb-plugin-sequential-id-replay, @rrweb/rrweb-plugin-console-record, @rrweb/rrweb-plugin-console-replay. Check out the README of each package for more information or check out rrweb-io/rrweb#1033 to see the changes. -
#1497
2606a2a
Thanks @Juice10! - Distributed files have new filenames, paths and extensions. Important: If you reference distributed files or types directly, you might have to update your paths/filenames. E.g. you import fromrrweb/typings/...
orrrdom/es
. However you runimport rrweb from '@posthog/rrweb'
you won't notice a difference with this change. If you include rrweb files directly in a script tag, you might have to update that path to include a the.umd.cjs
files instead. All.js
files now use ES modules which can be used in modern browsers, node.js and bundlers that support ES modules. All npm packages now also ship.cjs
and.umd.cjs
files. The.umd.cjs
files are CommonJS modules that bundle all files together to make it easy to ship one file to browser environments (similar to the previous.js
files). The.cjs
files are CommonJS modules that can be used in older Node.js environments. Types should be better defined inpackage.json
and if you need specific types they might be exported from new packages (for examplePlayerMachineState
andSpeedMachineState
are now exported from@rrweb/replay
). Check thepackage.json
'smain
andexports
field for the available files. -
#1497
2606a2a
Thanks @Juice10! - Remove the rrweb-all.js, rrweb-record.js, and rrweb-replay.js files fromrrweb
package. Now you can use@rrweb/all
,@rrweb/record
, and@rrweb/replay
packages instead. Check out the README of each package for more information or check out PR #1033 to see the changes.
-
#1033
7261c43
Thanks @Juice10! - ExportReplayPlugin
from rrweb directly. Previously we had to doimport type { ReplayPlugin } from 'rrweb/dist/types';
now we can doimport type { ReplayPlugin } from '@posthog/rrweb';
-
#1468
4014305
Thanks @eoghanmurray! - inlineImages: during snapshot avoid adding an event listener for inlining of same-origin images (async listener mutates the snapshot which can be problematic) -
#1489
609b7fa
Thanks @JonasBa! - Optimize performance of isParentRemoved by converting it to an iterative procedure -
#1493
82f6fec
Thanks @eoghanmurray! - Replay: Replace negative lookbehind in regexes from css parser as it causes issues with Safari 16 -
#1353
5c27b76
Thanks @YunFeng0817! - Fix: some nested cross-origin iframes can't be recorded -
#1328
d38893f
Thanks @eoghanmurray! - Refactor to preclude the need for a continuous raf loop running in the background which is related to shadowDom -
#1295
d7cf8dd
Thanks @colingm! - Return early for child same origin frames -
#760
e08706a
Thanks @eoghanmurray! - Add slimDOM option to block animation on <title> tag; enabled when the 'all' value is used for slimDOM -
Updated dependencies [
4014305
,82f6fec
,2606a2a
,f3cf092
,e08706a
]:
-
#1464
03b5216
Thanks @colingm! - better support for coexistence with older libraries (e.g. MooTools & Prototype.js) which modify the in-builtArray.from
function -
#1441
ae6908d
Thanks @eoghanmurray! - perf: Avoid an extra function call and object clone during event emission -
#1481
46f1b25
Thanks @eoghanmurray! - Fix and test for bug #1457 which was affecting replay of complex tailwind css -
#1476
cbbd1e5
Thanks @eoghanmurray! - Fixup for multiple background-clip replacement -
#1467
e96f668
Thanks @eoghanmurray! - Bugfix after #1434 perf improvements: fix that blob urls persist on the shared anchor element and can't be later modified -
Updated dependencies [
03b5216
,46f1b25
,cbbd1e5
,5e7943d
,c0f83af
,e96f668
]:
- #1432
123a81e
Thanks @Juice10! - Full overhawl ofvideo
andaudio
element playback. More robust and fixes lots of bugs related to pausing/playing/skipping/muting/playbackRate etc.
-
#1422
3d1877c
Thanks @marandaneto! - fix: createImageBitmap throws DOMException if source is 0 width or height -
#1432
123a81e
Thanks @Juice10! - Recordloop
on<audio>
&<video>
elements. -
#1445
02f50d2
Thanks @daibhin! - fix: protect against missing parentNode -
Updated dependencies [
123a81e
,123a81e
,f7c6973
,123a81e
,c278d06
]:
- #1310
7c0dc9d
Thanks @benjackwhite! - Extends maskTextFn to pass the HTMLElement to the deciding function
-
#1403
af0962c
Thanks @pauldambra! - safely capture BigInt values with the console log plugin" -
#1327
57a940a
Thanks @mydea! - fix: Fix checking forpatchTarget
ininitAdoptedStyleSheetObserver
-
#1155
8aea5b0
Thanks @YunFeng0817! - Feat: Add support for replaying :defined pseudo-class of custom elements -
#1340
9c6edfe
Thanks @mydea! - ref: Avoid unnecessary cloning of objects or arrays -
#1383
1e0b273
Thanks @daibhin! - export the canvasMutation function -
#1324
1fe39ab
Thanks @Belen-Luo! - export eventWithTime for consumption by typescript code -
#1343
05478c3
Thanks @mdellanoce! - use WeakMap for faster attributeCursor lookup while processing attribute mutations -
#1272
58c9104
Thanks @eoghanmurray! - Perf: Avoid creation of intermediary array when iterating over style rules -
#1311
980a38c
Thanks @eoghanmurray! - Add 'recordDOM' config option to turn off recording of DOM (making recordings unreplayable). Specialist use case e.g. only heatmap click/scroll recording -
#1351
a2be77b
Thanks @eoghanmurray! - Don't double-record the values of <textarea>s when they already have some content prefilled #1301 -
#1431
a7c33f2
Thanks @eoghanmurray! - Ensure :hover works on replayer, even if a rule is behind a media query Respect the intent behind max-device-width and min-device-width media queries so that their effects are apparent in the replayer context -
#1374
314a8dd
Thanks @andrewpomeroy! - Capture stylesheets designated asrel="preload"
-
#1349
07ac5c9
Thanks @eoghanmurray! - Snapshot performance when masking text: Avoid the repeated calls toclosest
when recursing through the DOM -
Updated dependencies [
58c9104
,a2be77b
,a7c33f2
,8aea5b0
,314a8dd
,e607e83
,7c0dc9d
,07ac5c9
]:
-
#1279
11f6567
Thanks @eoghanmurray! - Extend to run fixBrowserCompatibilityIssuesInCSS over inline stylesheets -
#1287
efdc167
Thanks @Juice10! - Upgrade all projects to typescript 4.9.5
-
#1269
7103625
Thanks @eoghanmurray! - Don't include redundant data from text/attribute mutations on just-added nodes -
#1268
d872d28
Thanks @eoghanmurray! - Compact style mutation fixes and improvements- fixes when style updates contain a 'var()' on a shorthand property #1246
- further ensures that style mutations are compact by reverting to string method if it is shorter
-
#1262
36da39d
Thanks @billyvg! - feat: AddignoreSelector
optionSimilar to ignoreClass, but accepts a CSS selector so that you can use any CSS selector.
-
#1251
bbbfa22
Thanks @wfk007! - fix: Resize and MediaInteraction events repeat generated after the iframe appeared -
#1254
d0fbe23
Thanks @mydea! - Handle case whereevent
is null/undefined -
#1273
a3de582
Thanks @Juice10! - Canvas FPS recording: overridepreserveDrawingBuffer: true
on canvas creation. Canvas replay: fix flickering canvas elemenrs. Canvas FPS recording: fix bug that wipes webgl(2) canvas backgrounds while recording.
-
#1196
490b3e2
Thanks @eoghanmurray! - Guard against presence of older 3rd party javascript libraries which redefine Date.now() -
#1220
a1ec9a2
Thanks @wfk007! - perf: optimize performance of the DoubleLinkedList get -
#1196
490b3e2
Thanks @eoghanmurray! - Guard against redefinition of Date.now by third party libraries which are also present on a page alongside rrweb -
#1183
d7c72bf
Thanks @mydea! - fix: Ensure attributes are lowercased when checking -
#1214
ebcbe8b
Thanks @wfk007! - perf: optimize the performance of record in processMutation phase
-
#1129
979d2b1
Thanks @eoghanmurray! - click events now include a.pointerType
attribute which distinguishes between 'pen', 'mouse' and 'touch' events. There is no new PenDown/PenUp events, but these can be detected with a MouseDown/MouseUp + pointerType=pen -
#1188
bc84246
Thanks @benjackwhite! - feat: Extends maskInputFn to pass the HTMLElement to the deciding function
-
#1198
b5e30cf
Thanks @charliegracie! - Reset the finished flag in Controllergoto
instead ofhandleProgressClick
so that it is properly handled ifgoto
is called directly. -
#1184
aa79db7
Thanks @mydea! - fix: Ensure getting the type of inputs works
-
#1170
d2582e9
Thanks @mydea! - feat: Ensure password inputs remain masked when switching input type -
#1107
a225d8e
Thanks @mydea! - feat: Allow to passerrorHandler
as record option
-
#1179
e0f862b
Thanks @wfk007! - Fix: #1178 remove warning related to worker_threads while building -
#1186
267e990
Thanks @YunFeng0817! - Fix: processed-node-manager is created even in the environment that doesn't need a recorder -
#1145
a82a3b4
Thanks @eoghanmurray! - For a mutation which removes a node, reduce the number of spurious warnings to take into account that an anscestor (rather than just a parent) may have been just removed -
#1191
1e6f71b
Thanks @Juice10! - Only apply touch-active styling on flush -
#1191
1e6f71b
Thanks @Juice10! - Trigger mouse movement and hover with mouse up and mouse down events when replayer.pause(...) is called. -
#1163
4cb4d0e
Thanks @zhaobosky! - Fix: some websites rebuild imcomplete- Some websites, addedSet in emit function is not empty, but the result converted from Array.from is empty.
- Some websites polyfill classList functions of HTML elements. Their implementation may throw errors and cause the snapshot to fail. I add try-catch statements to make the code robust.
-
#1156
e65465e
Thanks @Code-Crash! - Fix the statement which is getting changed by Microbundle -
#1139
f27e545
Thanks @YunFeng0817! - Fix: Switch from virtual dom to real dom before rebuilding fullsnapshot -
#1130
f6f07e9
Thanks @Equlnox! - Fix: Make relative path detection in stylesheet URLs to detect more types of URL protocols when inlining stylesheets. -
#1141
3416c3a
Thanks @YunFeng0817! - Fix: isCheckout is missed in all fullsnapshot events -
#1157
8e47ca1
Thanks @mydea! - fix: Explicitly handlenull
attribute values -
#1136
aaabdbd
Thanks @benjackwhite! - fix: Recursive logging bug with console recording -
#1159
5e6c132
Thanks @eoghanmurray! - For users of userTriggeredOnInput setting: also set userTriggered to false on Input attribute modifications; this was previously empty this variant of IncrementalSource.Input -
Updated dependencies [
c28ef5f
,f6f07e9
,eac9b18
,f27e545
,8e47ca1
]:
-
#1095
1385f7a
Thanks @YunFeng0817! - Fix duplicated shadow doms -
#1126
227d43a
Thanks @YunFeng0817! - Refactor all suffix of bundled scripts with commonjs module from 'js' to cjs #1087. -
#1126
227d43a
Thanks @YunFeng0817! - Fix: improve rrdom robustness #1091. -
#1127
3cc4323
Thanks @YunFeng0817! - Refactor: Improve performance by 80% in a super large benchmark case.- Refactor: change the data structure of childNodes from array to linked list
- Improve the performance of the "contains" function. New algorithm will reduce the complexity from O(n) to O(logn)
-
#1121
502d15d
Thanks @YunFeng0817! - Fix: outdated ':hover' styles can't be removed from iframes or shadow doms -
#1122
8d209a6
Thanks @YunFeng0817! - Add missing change logs manually. In the next version, all change logs will be generated automatically.-
a220835
#1053 Thanks @Juice10! - Fix: Post message can break cross origin iframe recording. -
7e8dcdb
#1063 Thanks @lele0108! - Fix: muted false -> true not being set. -
36b44e1
#1042 Thanks @wfk007! - Fix: Failed to execute insertBefore on Node. -
44e92cb
#1058 Thanks @mydea! - Handle errors when observing iframes. -
729b8bf
#1083 Thanks @Juice10! - Fix: Catch iframe manager & fix formatting issues. -
03821d9
#1083 Thanks @eoghanmurray! - Harmonize on a single getWindowScroll -
d08913d
#1086 Thanks @YunFeng0817! - Fix: missed adopted style sheets of shadow doms in checkout full snapshot. -
66abe17
#1032 Thanks @dbseel! - Fix: isBlocked throws on invalid HTML element. -
57a2e14
#1088 Thanks @mydea! - Fix: Guard against missing window.CSSStyleSheet. -
fc82869
#1093 Thanks @YunFeng0817! - Fix: cross origin iframe bugs. -
a77e302
#1104 Thanks @jlalmes! - [console-plugin] Feat: Record unhandled rejection event. -
25a4f5a
#1115 Thanks @Juice10! - Fix: Don't trigger Finish event when in liveMode. -
cb15800
#1106 Thanks @mydea! - Fix: Ensure CSS support is checked more robustly. -
0732618
#1100 Thanks @YunFeng0817! - Fix: wrong rootId value in special iframes. -
3caa25e
#1098 Thanks @eoghanmurray! - Refactor: Don't have requestAnimationFrame looping in background for Live Mode. -
3a26e36
#1092 Thanks @YunFeng0817! - Fix: regression of issue: ShadowHost can't be a string (issue 941) -
07d22e7
#1111 Thanks @YunFeng0817! - Feat: enable to customize logger in the replayer. -
0627d4d
#1109 Thanks @YunFeng0817! - Feat: add option to record on DOMContentLoaded event. -
174b9ac
#1112 Thanks @YunFeng0817! - Fix: mutation Failed to execute 'insertBefore' on 'Node': Only one doctype on document allowed. -
5a1e5e9
#1119 Thanks @Juice10! - Feat: Automate NPM package releases.
-