Files
rrweb/packages/rrweb-snapshot
Eoghan Murray 33e01f5f00 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-02-13 15:03:23 +01:00
..
2025-11-19 16:39:27 +01:00
2026-02-03 14:20:05 +01:00
2024-06-07 11:07:36 +02:00
2026-02-13 15:03:23 +01:00

rrweb-snapshot

Build Status Join the chat at slack Reddit

Snapshot the DOM into a stateful and serializable data structure. Also, provide the ability to rebuild the DOM via snapshot.

API

This module export following methods:

snapshot

snapshot will traverse the DOM and return a stateful and serializable data structure which can represent the current DOM view.

There are several things will be done during snapshot:

  1. Inline some DOM states into HTML attributes, e.g, HTMLInputElement's value.
  2. Turn script tags into noscript tags to avoid scripts being executed.
  3. Try to inline stylesheets to make sure local stylesheets can be used.
  4. Make relative paths in href, src, CSS to be absolute paths.
  5. Give an id to each Node, and return the id node map when snapshot finished.

rebuild

rebuild will build the DOM according to the taken snapshot.

There are several things will be done during rebuild:

  1. Add data-rrid attribute if the Node is an Element.
  2. Create some extra DOM node like text node to place inline CSS and some states.
  3. Add data-extra-child-index attribute if Node has some extra child DOM.

serializeNodeWithId

serializeNodeWithId can serialize a node into snapshot format with id.

buildNodeWithSN

buildNodeWithSN will build DOM from serialized node and store serialized information in the mirror.getMeta(node).

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site.

Gold Sponsors 🥇

sponsor sponsor sponsor sponsor sponsor sponsor sponsor

Silver Sponsors 🥈

sponsor sponsor sponsor sponsor sponsor sponsor sponsor

Bronze Sponsors 🥉

sponsor sponsor sponsor sponsor sponsor sponsor sponsor sponsor sponsor

Backers

Core Team Members


Yuyz0112


Yun Feng


eoghanmurray


Juice10
open for rrweb consulting

Who's using rrweb?

Smart screen recording for SaaS
The first ever UX automation tool Remote Access & Co-Browsing The open source, fullstack Monitoring Platform. Comprehensive data analytics platform that empowers businesses to gain valuable insights and make data-driven decisions.
Intercept, Modify, Record & Replay HTTP Requests. In-app bug reporting & customer feedback platform. Self-hosted website analytics with heatmaps and session recordings. Interactive product demos for small marketing teams