Commit Graph

704 Commits

Author SHA1 Message Date
Yanzhen Yu
3a08be5594 Release 0.7.20 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
Filip Slatinac
1467f97f43 Added srcset support (#18)
* added src set as a parsed attribute

* added tests

* changed to /a

* added multiple attribute handling

* added better comment

* made snapshot ignore invalid input as if it is invalid input in the original DOM, it should stay invalid in the recreated DOM

* added extra absolute test case

* code style

* addressed comments
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
Yanzhen Yu
26e1e8748b Release 0.7.19 2026-04-01 12:00:00 +08:00
zzq0826
b98f054eaa update guide (#483) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
a860cf9ed5 export add hover class method 2026-04-01 12:00:00 +08:00
Yanzhen Yu
25d23bdc35 read __rrMutationObserver from window 2026-04-01 12:00:00 +08:00
Yanzhen Yu
5ad3936953 Release 0.7.18 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
Yanzhen Yu
1fc66ffcc5 fix data url regexp 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
f981bacbd2 Release 0.7.17 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
yz-yu
cbe23963a0 add the HACK_CSS flag to bypass css parsing (#16) 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
e4063e82b7 Release 0.7.16 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
2ba72c3a29 pass mask all input option recursively 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
a489ce6246 Release 0.7.15 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
dphuang2
939eddcca5 Ignore broken CSS (#15)
Broken CSS inside a page will throw an error on our behalf. This should
be ignored because we are not in control of the CSS on the page we are
recording.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
bc6e6101d3 clean addList when meet a corner case 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ef0b4b403c Release 0.7.14 2026-04-01 12:00:00 +08:00
Yanzhen Yu
d79ad0b8c3 let mouse tail duration respect timer speed 2026-04-01 12:00:00 +08:00
Yanzhen Yu
fbfdafae34 remove child node before set default value 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e6bb01c328 Release 0.9.13 2026-04-01 12:00:00 +08:00
Yanzhen Yu
0a502e83ed update typings 2026-04-01 12:00:00 +08:00
Yanzhen Yu
175c98d1ae fix #452 check isBlocked on add mutation's target 2026-04-01 12:00:00 +08:00
Yanzhen Yu
daacbb1d07 Release 0.7.13 2026-04-01 12:00:00 +08:00
Eoghan Murray
efa806a81b Protect against generation of no-change viewport resize events. (#454)
I noticed 8 or 10 of these events being generated in a multi-tab browsing session on Chrome 87.0 on Win10.  I'm speculating they were generated as a side effect of changing tabs but I can't recreate
2026-04-01 12:00:00 +08:00
Yanzhen Yu
6457f9ff62 fix #14 fix innerText cap issue 2026-04-01 12:00:00 +08:00
Yanzhen Yu
fbe75532f4 Release 0.9.12 2026-04-01 12:00:00 +08:00
Yanzhen Yu
21e8affa2b Use css parser to add hover class name to selectors.
Previously we use a regexp to match all the CSS selectors and add
our hover class name to it, which has been proved not solid and
may be very slow in some situation.
Using a production ready css parser can handle this better and also
provide ability's to do more accurate things to the recorded
stylesheets.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
4dea29333a upgrade snapshot 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c5b0f985da Release 0.7.12 2026-04-01 12:00:00 +08:00
Jarosław Salwa
ac25796753 Scroll replayer iframe on firstFullsnapshot (#451) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
6ecaaa2560 add mask all inputs option to snapshot 2026-04-01 12:00:00 +08:00
101arrowz
30026bb8f5 Update to fflate (#448)
* Update to fflate

* Update docs, bundler config
2026-04-01 12:00:00 +08:00
Yanzhen Yu
06f1a28a0a Release 0.7.11 2026-04-01 12:00:00 +08:00
Lucky Feng
79623734a1 Merge pull request #449 from fanixk/patch-1
Fix broken link to design docs
2026-04-01 12:00:00 +08:00
Yanzhen Yu
1a3b17bae4 format code 2026-04-01 12:00:00 +08:00
Lucky Feng
bc36b505df fix: sometimes currentTime is smaller than the totalTime when player is finished (#445)
plus: fix the problem that sometimes return value of getCurrentTime() is negative
2026-04-01 12:00:00 +08:00
Fanis Katsimpas
266425d5ac Fix broken link to design docs 2026-04-01 12:00:00 +08:00
Razvan Sandu
149c78802a Allow rendering image tags inside svgs during replay (#13) 2026-04-01 12:00:00 +08:00
dependabot[bot]
b0db4395ae Bump ini from 1.3.5 to 1.3.8 (#441)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Benoît Zugmeyer
ad816f7b7f reuse serialized nodes ids (#12)
* reuse serialized nodes ids

With this patch, each DOM node keeps its id during its existence. This
allows to apply RRWeb events to previous snapshots if needed.

`resetId` has been removed because it loses its meaning: calling it
would not reset the existing nodes ids anymore, only the new ones.

Since we don't reset the id anymore, we may exhaust the available ids
quicker, but Number.MAX_SAFE_INTEGER (2 ** 53 - 1) is pretty large, so I
doubt this'll cause any problem.

* improv TS typing

The `nAsINode` variable was not very elegant.  Simplify this by removing
the cast, and make the INode interface compatible with Node.

* update typings
2026-04-01 12:00:00 +08:00
Aaditya S
464432e194 docs: fix typo (#440) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
2c5bb90b2f Release 0.7.10 2026-04-01 12:00:00 +08:00