Commit Graph

425 Commits

Author SHA1 Message Date
dependabot[bot]
e66b5d9af6 Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
bdb269b138 fix #524 polyfill Node.prototype.contains 2026-04-01 12:00:00 +08:00
Lucky Feng
b30b37c889 fix: #542 wrong results of splitting log stacks (#547)
fix bug of stack parcer and increase compatibility for different browser vendors
2026-04-01 12:00:00 +08:00
Lucky Feng
424044ede3 fix: issue #548 (#550)
1. Do not use virtual parent optimization if the mutation targets have iframe elements as children. This will cause some performance regression but will be easy to add and ship.
2. If an iframe element has already been a child of a virtual parent, add the virtual parent back to the dom.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
f0c2258371 check events cursor before comparing timestamp 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e339ebb90b update typings file 2026-04-01 12:00:00 +08:00
re-fort
b1b25447ff Add options to mask texts (#540)
* feat: add options to mask texts

* feat: add the default mask function

* refactor: rename options to identify the difference between  mask text and mask input

* test: add tests about masking

* doc: add options about masking

* chore: bump up rrweb-snapshot version
2026-04-01 12:00:00 +08:00
Yanzhen Yu
861fac54ea fix #535 add play-back event to reset mirror and replayer 2026-04-01 12:00:00 +08:00
Yanzhen Yu
fdfb160e76 call sort after unpack 2026-04-01 12:00:00 +08:00
Eoghan Murray
cfe59cb4b4 Sort events upon creation, and keep ordered (#411)
* Sort events at start, as otherwise we risk misidentifying the last event

* Keep inserted events in the correct order, ensuring we don't misidentify the last event

 - e.g. network conditions mean that 'live' events come in non-sequentially
 - or so that adding custom events to an existing event works

* Ensure we maintain original ordering while inserting a new event which has an identical timestamp to an existing event. This came up with a series of mutations which had the same timestamp but needed to be applied in the correct order

* Fast track the common case of a new event being added which occurs after all prior events
2026-04-01 12:00:00 +08:00
Eoghan Murray
d4a5284bb1 Don't perform newly added actions if player is paused (#539) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
0223ff1c08 fix first play check 2026-04-01 12:00:00 +08:00
Yanzhen Yu
66fc50b3d9 update storyteller link 2026-04-01 12:00:00 +08:00
Yanzhen Yu
0ea615327c add storyteller link 2026-04-01 12:00:00 +08:00
Yanzhen Yu
f555baa4ac impl #530, observe drag event and replay as mousemove 2026-04-01 12:00:00 +08:00
John Pham
a295f72ed0 Don't rebuildFullSnapshot if it's the first run (#532)
* Don't rebuildFullSnapshot if it's the first run

* Fix typo
2026-04-01 12:00:00 +08:00
Yanzhen Yu
3e8cacbb95 fix #531 use getRootNode with precheck 2026-04-01 12:00:00 +08:00
Justin Halsall
83045059f9 Fix docs to point to correct event format (#523)
* Fix docs to point to correct event attribute

* Update customize-replayer.zh_CN.md

* correct event object in guide

* Update guide.zh_CN.md
2026-04-01 12:00:00 +08:00
Yanzhen Yu
0e688bba0c impl shadow DOM manager
part of #38
1. observe DOM mutations in shadow DOM
2. rebuild DOM mutations in shadow DOM
2026-04-01 12:00:00 +08:00
Lucky Feng
66c7c8f028 fix: inaccurate mouse position (#522)
1. Position of mouse was inaccurate when replaying and this PR will fix it.
2. Fix the bug that if one nested iframe has a scale transform and the position of mouse was inaccurate as well.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
e9d915b3d6 rename node_modules in es bundle to ext 2026-04-01 12:00:00 +08:00
Lucky Feng
016a5020fc fix: errors of replaying iframe records (#520)
* fix: errors of replaying iframe records

error1:
HierarchyRequestError: Failed to execute 'appendChild' on 'Node': Nodes of type '#document' may not be inserted inside nodes of type '#document-fragment'.
code: parent.appendChild(target)

error2:
Uncaught DOMException: Failed to execute 'appendChild' on 'Node': Only one element on document allowed.
code: parent.appendChild(target);

* improve the comment for bugfix
2026-04-01 12:00:00 +08:00
Yakko Majuri
fcbc0e4b43 Handle event undefined in initMoveObserver (#515) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
b621011c56 add an experiment config to set max speed in fast forward 2026-04-01 12:00:00 +08:00
arshabh-copods
909b5b8b6b Update observer.md (#504)
Fixed some grammatical errors
2026-04-01 12:00:00 +08:00
Yanzhen Yu
5e42ddc1cb impl #507 export takeFullSnapshot as a public API 2026-04-01 12:00:00 +08:00
Yanzhen Yu
4a2eae6a44 add hiring link 2026-04-01 12:00:00 +08:00
Yanzhen Yu
2ee3926f25 fix lint errors 2026-04-01 12:00:00 +08:00
Yanzhen Yu
5745afa622 update test snapshot 2026-04-01 12:00:00 +08:00
Yanzhen Yu
4ed82274ae close #491 check whether link node is head 2026-04-01 12:00:00 +08:00
Yanzhen Yu
36d52f8faf close #501 do not count attach iframe event in checkout 2026-04-01 12:00:00 +08:00
Season
4e9e64cc5c update guide 2026-04-01 12:00:00 +08:00
Justin Halsall
e6102bd02f Add yarn support for installing unreleased rrweb as a dependency (#497)
* Use prepack instead of prepare for yarn support

* add prepare and prepack

for yarn v1 & v2 compatibility

* Create .npmignore
2026-04-01 12:00:00 +08:00
Province Innovation
eeac998959 Added mousemoveCallback threshold option to sampling config. (#492)
* Added mousemoveCallback threshold option to sampling config.

* Added mousemoveCallback to definitions file.
2026-04-01 12:00:00 +08:00
Filip Slatinac
d2f18fa03d Adding prepare npm statement (#490)
* added prepare statement

* using master rrweb snapshot

Co-authored-by: filip slatinac <filipslatinac@MacBook-Pro-2.local>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
64b1c44b3a upgrade rrweb-snapshot to 1.0.7 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ab819bf338 start impl rrdom 2026-04-01 12:00:00 +08:00
Moji Izadmehr
2906b0cb22 Add prettier as a dependency (#487) 2026-04-01 12:00:00 +08:00
Eoghan Murray
27bc40ac03 remove debugging warning (#486)
I can't see a reason for the warning here so believe it's a debugging statement that crept in?
2026-04-01 12:00:00 +08:00
yz-yu
33f0ac5cfe Impl record iframe (#481)
* Impl record iframe

* iframe observe

* temp: add bundle file to git

* update bundle

* update with pick

* update bundle

* fix fragment map remove

* feat: add an option to determine whether to pause CSS animation when playback is paused (#428)

set pauseAnimation to true by default

* fix: elements would lose some states like scroll position because of "virtual parent" optimization (#427)

* fix: elements would lose some state like scroll position because of "virtual parent" optimization

* refactor: the bugfix code

bug: elements would lose some state like scroll position because of "virtual parent" optimization

* fix: an error occured at applyMutation(remove nodes part)

error message:
Uncaught (in promise) DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node

* pick fixes

* revert ignore file

* re-impl iframe record

* re-impl iframe replay

* code housekeeping

* move multi layer dimension calculation to replay side

* update test cases

* teardown test server

* upgrade rrweb-snapshot with iframe load timeout

Co-authored-by: Lucky Feng <yun.feng@smartx.com>
2026-04-01 12:00:00 +08:00
Karl-Aksel Puulmann
b99e843e2a Fix RangeError: Maximum call stack size exceeded (#479)
Saw this line cause issues in production, causing the following error:

```
RangeError Maximum call stack size exceeded
```

I believe this is caused by javascript engine max argument length - see note from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#using_apply_and_built-in_functions

> The consequences of applying a function with too many arguments (that is, more than tens of thousands of arguments) varies across engines. (The JavaScriptCore engine has hard-coded argument limit of 65536.
2026-04-01 12:00:00 +08:00
zzq0826
b98f054eaa update guide (#483) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
25d23bdc35 read __rrMutationObserver from window 2026-04-01 12:00:00 +08:00
Eoghan Murray
168382f5fe Don't remove the style attributes altogether from tests; they are an important part of the mutations (#468)
These were removed in 8ed1c999cf in order to smooth over differences in test environments
so have maintained that by converting pixel values to 'Npx' (could also try rounding, but didn't attempt that)
2026-04-01 12:00:00 +08:00
Eoghan Murray
9f3f4d15f2 Discovered that the common case of mouse movement or scrolling happening during takeFullSnapshot was causing mutations to be immediately emitted, contrary to the goal of https://github.com/rrweb-io/rrweb/pull/385 (#470) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
faa2ec79fa fix #469 try to get original MutationObserver
We found Angular's zone module will patch MutationObserver which
make the browser hang in some scenarios.
Reference: angular/angular#26948
2026-04-01 12:00:00 +08:00
Eoghan Murray
a8ad8d1c58 Tweaks to timings to get tests passing on my dev laptop (#466)
* Tweaks to timings to get tests passing on my dev laptop - hopefully this makes tests more deterministic

* Okay understand what's going on now that the test has run in the travis environment
2026-04-01 12:00:00 +08:00
Yanzhen Yu
bbae1dc397 Release 0.9.14 2026-04-01 12:00:00 +08:00
Yanzhen Yu
af699bad4b upgrade 0.9.14 2026-04-01 12:00:00 +08:00
Yanzhen Yu
57f15ddc02 fix #460 ignore added node that are not in document anymore 2026-04-01 12:00:00 +08:00