Commit Graph

1312 Commits

Author SHA1 Message Date
xugp
d508aabb53 Fix local rrweb playback flow and add demo page 2026-04-01 12:00:00 +08:00
Justin Halsall
ae1ba2a277 ci: restore bundle size badges (#1805) 2026-04-01 12:00:00 +08:00
Justin Halsall
c8b9a522d1 Fix release changeset package names (#1807) 2026-04-01 12:00:00 +08:00
Justin Halsall
62d2f8504c Fix security vulnerability in workflows (#1804)
* Fix a security hole in #1787 found by Arun Murugesan:

"The workflow .github/workflows/eslint-check.yml contained a critical "pwn request" vulnerability that allows any GitHub user to execute arbitrary code with access to repository secrets by opening a pull request."

See https://github.com/preactjs/compressed-size-action/issues/54 for why that action shouldn't be used with pull_request_target

This change in this PR drops compressed-size-action in favour of executing the steps ourselves in two workflows, one which produces the size artifact, and the other which reads the artifact has the permissions to write the message back to the original PR (which is in a third party repo)

* The annotate action also needed pull-requests: write permission (fixes failing run 'ESLint Annotation')

* ci(bundle-size): extract bundle size scripts and simplify workflow

- Add `.github/scripts/measure-bundle-sizes.js` and
  `render-bundle-size-comment.js` to replace inline node scripts
  embedded in workflow YAML, improving readability and reusability
- Refactor `eslint-check.yml` to use the new script files and fix
  checkout steps to handle both PR and non-PR triggers correctly
- Refactor `pr-checks-privileged.yml` to replace the large
  `github-script` block with `render-bundle-size-comment.js` and
  the `marocchino/sticky-pull-request-comment` action; remove the
  now-unnecessary `pr_number.txt` artifact by reading the PR number
  directly from the workflow_run event
- Pin `ataylorme/eslint-annotate-action` to a specific commit SHA
- Add `actions: read` permission where needed for artifact downloads

* ci: add fork PR support and harden workflow

- Look up PR number via API when workflow_run.pull_requests is empty
  (GitHub leaves it empty for fork PRs), falling back gracefully
- Use head SHA instead of branch name for PR checkout to avoid TOCTOU
- Fix formatSignedSize to produce +0 instead of -0 for zero values
- Gate comment steps on successful PR number lookup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:00:00 +08:00
Justin Halsall
aab4c553cb docs: revamp installation docs for esm and umd (#1788)
* docs: revamp installation docs for esm and umd

Document recommended install paths across the main guides and package
READMEs for rrweb, @rrweb/all, @rrweb/record, @rrweb/replay, and
rrweb-player.

Clarify three usage modes: bundler/npm, browser no-build with
import maps and +esm, and legacy UMD fallback.

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply formatting changes

* Apply suggestion from @eoghanmurray

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>

* Apply formatting changes

* docs(all): streamline README usage section

Move the guide link next to the import example and remove the
duplicated Usage section to keep docs concise and easier to scan.

* docs(readme): update gzip size badges in zh-cn readme

* docs(plugins): update readme imports to scoped esm packages

Replace `rrweb` default imports and `rrweb.Replayer` usage with
`@rrweb/record` `record` and `@rrweb/replay` `Replayer` in plugin
usage examples.

Also update canvas WebRTC plugin imports to scoped `@rrweb/*`
package names to keep docs aligned with current package structure.

* docs: update docs to prefer scoped esm packages

replace `rrweb` default import examples with `@rrweb/record` and
`@rrweb/replay` across recipes and guides in en/zh-CN.

clarify package selection for new integrations, add `@rrweb/all`
convenience guidance, and refresh CDN/style import snippets for ESM and legacy UMD compatibility.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Justin Halsall
1b6a8be870 Fix typo in turbo.json 2026-04-01 12:00:00 +08:00
Eoghan Murray
2305946aed Umd folder (#1704)
* Don't allow video autoplay to automatically unfreeze page. If it's a 'real' playback, there should be a mount or a keyboard event which will serve to unfreeze the page. Also add other non-user events to the list (we really should have an `isUserEvent` function)

* Apply formatting changes

* Create a new `umd` folder alongside `dist` for output of UMD files with a plain `.js` instead of `.cjs` extension, as the latter won't be served with the correct mime type by jsdelivr

 - #1687 (just rename `.cjs` to `.js`) was rejected due to the the 'dual package hazard' [1], and produces a warning when run through publint.dev (which was the original motivation for changing to \.cjs)
 - jsdelivr won't be serving `.cjs` with the correct mime type: https://github.com/jsdelivr/jsdelivr/issues/18584

[1] https://nodejs.org/en/learn/modules/publishing-a-package#the-dual-package-hazard

* Update to point to alpha.19 as presumably that's when the umd folder will be available after the changes in this PR

* Apply formatting changes

* Don't try to create the same directory twice (was failing on packages/packer/umd)

* Create thirty-shirts-grow.md

* Revert something that shouldn't have gotten into the UMD branch folder

* Apply formatting changes

* Update vite.config.default.ts

* Apply formatting changes

* build: include umd builds in published packages

Add umd directory to the files array in package.json for all packages to include UMD builds in npm publications. Also update .gitignore to exclude
umd folders from version control.

* Docs: point to correct file

* Remove unused code

* docs: update rrweb cdn urls to umd bundles

Align README and guide examples with published UMD file locations for
rrweb, @rrweb/record, and @rrweb/replay.

Update versioned rrweb script examples from 2.0.0-alpha.19 to
2.0.0-alpha.21 in both English and Chinese guides.

* build(all): include umd folder in package files

---------

Co-authored-by: eoghanmurray <eoghanmurray@users.noreply.github.com>
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Eoghan Murray
5f1ff35ece Update filesize badges (might need further evolution before 2.0.0) (#1787)
* Update filesize badges (might need further evolution before 2.0.0)

* Don't run full CI/CD when only .md docs have changed in the PR

 - move eslint checks into their own file so they can also ignore .md changes
 - prettier checks don't need the same perms as eslint, so we can demote pull_request_target -> pull_request

* Add empty changeset

* Implement the bundle size change originally originally added in #1784 - adding here also to show how the conflicts would resolve

* Update .github/workflows/eslint-check.yml

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Justin Halsall
e4e73596ec Migrates to vite@6 to drop base64 inlined worker source from all bundles (#1762)
* chore: maintain CSS output file name in vite@6.0.1

Without this change, build would fail because the produced stylesheet assumes
the `package.json['name']` i.e., `styles/rrweb.css`. To maintain the existing
behavior, these changes are required.

See https://vite.dev/guide/migration.html#customize-css-output-file-name-in-library-mode
* build(rrvideo): upgrade playwright from 1.32.1 to 1.56.1

Update playwright dependency to latest version and refactor test execution options to use a shared configuration with increased timeout for stability.

* debug(rrvideo): add comprehensive logging to video transformation process

Add detailed console.log statements throughout the transformToVideo function to track execution flow and debug potential issues. Logging covers browser launch, context creation, page navigation, replay progress, and video file operations.

* ci(rrvideo): install playwright browsers and improve test output visibility

- Add Playwright Chromium installation step to CI workflow
- Change test execution stdio from 'pipe' to 'inherit' for better debugging

* fix(rrvideo): prevent autoplay and manually start playback after event listeners

Set autoPlay to false in replayer configuration and manually call play() after all event listeners are attached. This ensures event handlers are properly registered before playback begins, preventing potential race conditions.

Also refactor test execution options to separate stdio configuration from timeout settings for better control over test output visibility.

* fix(rrvideo): add timeout and error handling to replay process

Add comprehensive error handling to prevent hanging during video transformation:
- Add 2-minute timeout for replay finish event
- Add console and error listeners for better debugging
- Improve promise chain with proper error catching
- Clear timeout on successful completion or error

This prevents the process from hanging indefinitely when the replay finish event never fires.

* fix(rrvideo): add error handling and restructure replayer initialization

Wrap replayer initialization in try-catch block to handle potential errors gracefully. Restructure Player instantiation to use rrwebPlayer directly instead of rrwebPlayer.Player, and move width/height into props object for correct API usage. On error, log to console and trigger onReplayFinish callback to prevent hanging state.

* build(umd): rename record and replay globals

Update UMD build globals for recorder and replayer and
refresh documentation accordingly.

BREAKING CHANGE: UMD global names changed to rrwebRecord
and rrwebReplay.

* fix(rrvideo): adjust replay timeout to duration

* docs: update rrweb-player CDN script path

* Update vite.config.default.ts

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>

---------

Co-authored-by: Rui <rui@conti.sh>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Alailson
360ed54d2d fix: ensure empty string replace/replaceSync clears stylesheets (#1774)
* fix: ensure empty string replace/replaceSync clears stylesheets

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Alailson
d5e0443926 fix: improve nested CSS rule handling and add related tests (#1775)
* fix: improve nested CSS rule handling and add related tests
* fix: enhance null safety for nested CSS rules and add related tests
* Improve nested CSS rule handling and replayer handling

Updated the fix message to include replayer handling of missing rules.

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Christopher Arredondo
8df3133af5 fix: Validate if WebGLRenderingContext exists before capturing it (#1777)
* Update webgl.ts

---------

Co-authored-by: Paul D'Ambra <paul.dambra@gmail.com>
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Justin Halsall
42c203d24f Add Reddit community link to project documentation (#1782)
* docs: add r/rrweb subreddit badge to README files

Add Reddit community badge linking to https://www.reddit.com/r/rrweb
to the main README.md, Chinese README.zh_CN.md, and the
rrweb-snapshot package README.md to promote community engagement.

https://claude.ai/code/session_01RUhZVWQGCVhsh5NAzv5C6X

* Add empty changeset

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-01 12:00:00 +08:00
github-actions[bot]
3d05380752 Version Packages (alpha) (#1780)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Justin Halsall
e75ba06572 Add permissions for contents and pull-requests for release workflow (#1779) 2026-04-01 12:00:00 +08:00
fukang wang
6a6d036ee3 fix: wujie shadow root (#1763)
* Fix wujie monkeypatches ownerDocument

---------

Co-authored-by: wfk007 <wfk007@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Justin Halsall
d70bcf45d7 build(rrvideo): upgrade playwright from 1.32.1 to 1.56.1 (#1761)
* build(rrvideo): upgrade playwright from 1.32.1 to 1.56.1

Update playwright dependency to latest version and refactor test execution options to use a shared configuration with increased timeout for stability.
2026-04-01 12:00:00 +08:00
github-actions[bot]
e5af2106d7 Version Packages (alpha) (#1605)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Copilot
ec69594887 Fix Vitest hanging indefinitely with Vite 6 by using forks pool (#1760)
* Fix vitest hanging by using forks instead of threads pool

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Juice10 <4106+Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Eoghan Murray
aa1abaf200 Slim dom defaults refactor (#1758)
* Prefer `includes` formulation for brevity and as it composes better (easier to understand) in longer boolean expressions with &&

* Noticed two different interpretations of `headMetaAuthorship` under slimDOMOptions; take the opportunity to cleanup and merge code
2026-04-01 12:00:00 +08:00
Eoghan Murray
3c1989a5f7 Fix missing import after #1705 (#1731)
* Fix missing import after #1705; probably was there before I requested changes
2026-04-01 12:00:00 +08:00
Meg Boehlert
87ff67b978 Use node.baseURI for stringifying stylesheet hrefs (#1705) 2026-04-01 12:00:00 +08:00
Rotem Reiss
dda4736d33 Create SECURITY.md (#1719)
* Create SECURITY.md

* Format fix

* Update SECURITY.md

* Update SECURITY.md

* Update SECURITY.md

Co-authored-by: Paul D'Ambra <paul.dambra@gmail.com>

* Update SECURITY.md

mention the google group is private

* Update SECURITY.md

* Update SECURITY.md

formatting

---------

Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
Co-authored-by: Paul D'Ambra <paul.dambra@gmail.com>
Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Yun Feng
40b8cda391 fix: rrweb recorder may throw error when stopping recording after an iframe becomes cross-origin (#1695)
* fix: rrweb recorder may throw error when stopping recording after an iframe becomes cross-origin

* add change set

* add failure message check

* Update packages/rrweb/src/record/index.ts

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>

* remove settimeout

---------

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Yun Feng
5055db8fd0 fix: CI hangs forever in the yarn [4/4] Building fresh packages... (#1696)
* fix: CI hang forever in the yarn [4/4] Building fresh packages...
2026-04-01 12:00:00 +08:00
Eoghan Murray
241ca72f0e Testing: disable puppeteer/chrome sandbox in Github Actions for Ubuntu 24.04 (#1657)
--disable-setuid-sandbox deemed acceptable by Yun as it's for Github Actions only
2026-04-01 12:00:00 +08:00
Billy Vong
955aa8ced0 <link> fixes re. modulepreload and fetch logic (#1614)
* `link[rel="modulepreload"]` doesn't require `as="script"` which is tied to rel="preload" only
* extract file extension properly when examining `rel="prefetch"` to disregard URL parameters correctly

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Adnan Khan
ae96fefdd4 fix: address security risks in GitHub Actions workflows (#1651)
* Remove cache consumption in release workflow.

* Tighten style-check.yml permissions

* Tighten permissions in test workflow that consumes cache.

* Use stricter permissions where possible

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Paul D'Ambra
bd367c2a73 fix: move patch function into utils to improve bundling (#1631)
* fix: move patch function into utils to improve bundling

---------

Co-authored-by: pauldambra <pauldambra@users.noreply.github.com>
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Eoghan Murray
636b02780e Fix splitCssText again (#1640)
Fixes a browser 'lock up' at record time due to a presence of large amounts of css in <style> elements, which are split over multiple text nodes, which triggers the new code added in #1437 (see that PR for full explanation of why this all exists).  #1437 was not written with performance in mind as it was believed to be an edge case, but things like Grammarly browser extension (#1603) among other scenarios were triggering pathological behavior, some of which was solved in #1615.
See also https://github.com/rrweb-io/rrweb/pull/1640#issuecomment-2633505804 for further discussion.

* Fix the case when there are multiple matches and we end up not finding a unique one - just go with the best guess when there are many splits by looking at the previous chunk's size
* Also add '0px' -> '0' stylesheet normalization, which also fixes the sample problem in a different way
* Add new test and modify it so that it can trigger a failure in the absence of the '0px' normalization; there may be other unknown ways of triggering a similar bug, so ensure that the primary 'best guess' method doesn't suffer a regression
* Leverage the 'best guess' method so that we can quit after 100 iterations trying to find a unique substring; hopefully this bit along with the `iterLimit` already added will prevent any future pathological cases.

Failing example extracted from large files identified by Paul D'Ambra (Posthog) ... see comment from MartinWorkfully: https://github.com/PostHog/posthog-js/issues/1668
2026-04-01 12:00:00 +08:00
John Henry Gunther
041a2e237f Warn instead of fail on exceptions thrown from postcss (#1580)
* postcss was introduced in #1458 for use within adaptCssForReplay
* #1600 fixes the main case where invalid css could be introduced when if valid css from the output of `sheet.cssRules` was split according to how it was split across text nodes of the <style>
* the guard introduced here is still useful as we likely in future will switch to capturing the raw stylesheet contents (both <style> and <link>), at which point we will be much less confident of getting valid css
2026-04-01 12:00:00 +08:00
Eoghan Murray
ea3c555b49 Fix adapt css with split (#1600)
Fix for #1575 where postcss was raising an exception

* adapt the entire CSS as a whole in one pass with postcss, rather than adapting each split part separately
* break up the postcss output again and assign to individual text nodes (kind of inverse of splitCssText at record side)
* impose an upper bound of 30 iterations on the substring searches to preempt possible pathological behavior
* add tests to demonstrate the scenario and prevent regression

More technical details:
* Fix algorithm; checks against `ix_end` within loop were incorrect when `ix_start` was bigger than zero.  
* Fix that length check against wrong array was causing 'should record style mutations with multiple child nodes and replay them correctly' test to fail. 
Note on last point: I haven't looked into things more deeply than that the test was complaining about missing .length after `replayer.pause(1000);`
2026-04-01 12:00:00 +08:00
Paul D'Ambra
16ef32ef1c chore(ci): track bundle size (#1630)
* chore(ci): track bundle size

---------

Co-authored-by: pauldambra <pauldambra@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Eoghan Murray
6cf00f77b5 Fix env puppeteer error in cross-origin-iframes.test.ts (#1629) 2026-04-01 12:00:00 +08:00
Justin Halsall
cd68189faa [chore] Cache yarn packages for CI (#1646)
* [chore] Cache yarn packages for CI

* Cache yarn in release.yml

* [chore] Update deprecated download artifact on CI (#1647)

* I'm merging even though ESLint is stlll failing in Github Actions as I believe it's running actions _without_ this PR applied yet
2026-04-01 12:00:00 +08:00
Eoghan Murray
c144c71810 Fix a code path where masking could be skipped on textareas (#1599)
* Fixes #1596
2026-04-01 12:00:00 +08:00
Kevin Townsend
ecac346b4c [chore]: Update actions/upload-artifact to v4 (#1643)
* update actions/upload-artifact to v4

---------

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Eoghan Murray
2f707a16da Fix up the 'should replace the existing DOM nodes on iframe navigation with isAttachIframe' test (#1636)
- it was working for me when the test was run in isolation (`-t` option), but when the entire cross-origin-iframes test was run, the change of iframe contents didn't seem to happen in time
2026-04-01 12:00:00 +08:00
Eoghan Murray
965445f7c3 Eslint camelCase (#1625)
* Add eslint rule to flag up me forgetting to camelCase - I'd say I introduced all the snake_cases that are fixed here
* Allow some dubious snake cases for now; we could examine again whether they can be converted to `camelCase['snake_var']` if we need to maintain backwards compatibility of output
* add ESLINT_USE_FLAT_CONFIG against eslint v8.57.0 in order to continue using the deprecated .eslintrc.js method
2026-04-01 12:00:00 +08:00
Yun Feng
3e5533b568 refactor: improved tab recording to improve stability (#1632)
* refactor: improved tab recording to improve stability

* feat: enable to import session

* improve stability

* feat: enable to edit session name

* prevent duplicate rrweb player in the dev mode
2026-04-01 12:00:00 +08:00
Billy Vong
07d43ec4e9 fix: remote CSS does not get rebuilt properly (#1618)
* fix: remote CSS does not get rebuilt properly

This fixes an issue where inlined CSS from a remotely loaded `<link>` does not get applied properly due to object reference mutation.

* add changeset

* ci-cd on ubuntu-22.04 instead of latest

* keep mirror meta synced
2026-04-01 12:00:00 +08:00
Eoghan Murray
65eb7c80aa Fix performance of splitCssText (#1615)
- Fix bug where the right split point was not being picked for the 3rd section onwards
- Fix that it wasn't able to find a split when both halves were identical
- Add test to put splitCssText through it's paces with a large file
- Introduce a limit on the iteration which causes the 'efficiently' test to fail
- Fix poor 'crawling' performance in the 'matching' algorithm for large css texts - e.g. for a (doubled) benchmark.css, we were running `normalizeCssText` 9480 times before `k` got to the right place
- Further algorithm efficiency: need to take larger jumps; use the scaling factor to make better guess at how big a jump to make
2026-04-01 12:00:00 +08:00
Eoghan Murray
4c8dfb0440 Temporarily freeze Ubuntu version in CI/Github Actions (#1621) 2026-04-01 12:00:00 +08:00
Yun Feng
3211ded262 feat: add CI for publishing chrome extension (#1568)
* fix: remove the permission not needed and update the player style link

* fix: change the way of importing worker script

* improve the extension version

* build: add process env to disable inline worker import

* improve style file

* upgrade svelte2tsx

* disable eslint check for that line

* merge the extension-release action into release action

---------

Co-authored-by: YunFeng0817 <YunFeng0817@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
github-actions[bot]
f993bb5c88 Version Packages (alpha) (#1554)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
David Newell
8d634cba97 chore: abstract types to shared package (#1593)
* chore: update types

* small typing change

* fix typing issue

* typed node

* add extra lint skip

* add changeset

---------

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Paul D'Ambra
97c93a171d fix: angular wrapped mutationobserver detection (#1597)
* fix: angular wrapped mutationobserver detection

* add change set

* fix

* prettier

* following posthog prod

* manually prettier

* Update .changeset/moody-experts-build.md

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Jonas
464554039d ref: isParentRemoved to cache subtree (#1543)
* ref: isParentRemoved to cache subtree
* ref: cache at insertion too
* ref: remove wrapper function

---------

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
Billy Vong
f664e6478b fix(snapshot): dimensions for blocked element not being applied (#1331)
fix for replay of a blocked element when using 'fast forward' (rrdom)

 - Dimensions were not being properly applied when you seek to a position in the replay. Need to use `setProperty` rather than trying to set the width/height directly
2026-04-01 12:00:00 +08:00
Billy Vong
dee8d684fd fix(rrdom): Ignore invalid DOM attributes when diffing (#1561)
* fix(rrdom): Ignore invalid DOM attributes when diffing (#213)

We encountered an issue where replays with invalid attributes (e.g.
`@click`) would break rendering the replay after seeking. The exception
bubbles up to
[here](62093d4385/packages/rrweb/src/replay/index.ts (L270-L279)),
which means the replay will continue to play, but the replay mirror will
be incomplete.

Closes https://github.com/getsentry/team-replay/issues/458

* add changeset
2026-04-01 12:00:00 +08:00