Files
zeekay 043ac58d3c chore: sweep upstream brand from ALL files; restore LICENSE/NOTICE attribution
Extends the sweep beyond packages/ to the whole repo (178 files): workflows,
.eslintrc, playground, examples, tooling, root docs. Zero upstream-brand refs and
zero such filenames outside the exemptions.

REVERTS A LICENSING ERROR (from earlier rebrand e43ab1af, not this sweep):
- LICENSE had its copyright holder rewritten to 'Insights'. Restored to the real
  holder: 'Copyright 2020 Posthog / Hiberly, Inc.' (+ Mixpanel, Inc.).
- NOTICE credited a non-existent upstream (github.com/getinsights/insights-js).
  Restored to the real one: github.com/PostHog/posthog-js.
Apache-2.0 4(c) requires retaining upstream attribution; rewriting a third
party's copyright line falsifies ownership. Both files are now excluded from the
guard and documented as exempt in LLM.md.

Also:
- Deleted junk: AGENTS.md~upstream_main (merge leftover), the now-obsolete
  rebrand script; renamed upload-*-s3.ts tooling (still used by cli.ts).
- Removed 42 stale playground/example pnpm-lock.yaml files: they pinned upstream
  packages the package.json no longer references. Regenerated on install —
  sed-ing a lockfile would corrupt its integrity hashes.
- Guard renamed no-posthog.yml -> brand-guard.yml and now assembles the pattern
  at runtime, so no filename or file content carries the string (the previous
  guard was swept by its own rule, inverting it to forbid 'insights').
2026-07-16 09:54:05 -07:00

20 KiB

rrweb-snapshot

0.0.65

Patch Changes

  • #3678 add2fae Thanks @ksvat! - fix(replay): keep ph-no-capture placeholders in normal flow during replay. Blocked elements were rebuilt with position: absolute + recorded left/top regardless of how they were originally positioned, pulling in-flow elements (flex/grid children, inline spans) out of flow and collapsing sibling layout. Snapshot now captures the element's computed position, transform, and display; rebuild only forces absolute positioning when the original was non-static or contributed a transform, and promotes inline placeholders to inline-block so the redacted slot is preserved. Old recordings without the new attributes keep the legacy absolute behavior. (2026-05-27)

0.0.64

Patch Changes

  • #3667 cafa9cc Thanks @pauldambra! - fix(replay): stop polling preload-as-style <link> elements forever. Session recorder treated <link rel="preload" as="style" href="*.css"> as if it were a stylesheet and waited for link.sheet to populate. Per spec preload links never instantiate a CSSStyleSheet, so the wait timed out, re-serialized the link, scheduled another wait, and leaked a load listener on every cycle — multiplying further on every real load event. Pages with Next.js-style CSS preloads accumulated thousands of active polling chains, saturating the main thread and freezing the tab on refocus (2026-05-26)

0.0.63

Patch Changes

  • #3635 5fb74b6 Thanks @TueHaulund! - Capture <link rel="stylesheet"> URLs from link.sheet.href and try link.sheet directly for inlining, so recordings survive SPA history.pushState navigations between routes of different path depths (where link.href re-resolves against a new baseURI but link.sheet.href preserves the URL the browser actually fetched). (2026-05-21)

0.0.62

Patch Changes

  • #3542 94a5ba0 Thanks @TueHaulund! - Preserve <style> textContent when the browser's CSSOM serialization would emit empty longhands from var() inside a shorthand. When a stylesheet has e.g. padding: var(--p); padding-bottom: var(--pb);, browsers store the shorthand's longhands with empty token lists per the CSS Custom Properties spec, and CSSStyleRule.cssText re-emits them as padding-top: ; padding-right: ; padding-left: ;. The previous behavior replaced the <style> text with that corrupted output, silently dropping layout rules on replay. We now detect the empty-longhand pattern and keep the original textContent in that case. Affects users of any CSS-in-JS framework that combines var() with shorthands (Chakra UI v3, Panda CSS, Emotion, etc.). Same class of bug as rrweb-io/rrweb#1667. (2026-05-07)

0.0.61

Patch Changes

  • #3510 a5d86c9 Thanks @arnaudhillen! - Move insights-rrweb sources into the insights-js monorepo under packages/rrweb/. The seven packages we publish (@insights/rrweb, @insights/rrweb-types, @insights/rrweb-utils, @insights/rrdom, @insights/rrweb-snapshot, @insights/rrweb-record, @insights/rrweb-plugin-console-record) now release from this repo via the existing changesets pipeline. No runtime behavior changes. (2026-05-05)

2.0.0-alpha.18

Major Changes

  • #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 and DataURLOptions

Patch Changes

2.0.0-alpha.17

Minor Changes

  • #1503 335639a Thanks @Juice10! - Record dialog's modal status for replay in rrweb. (Currently triggering dialog.showModal() is not supported in rrweb-snapshot's rebuild)

Patch Changes

  • #1417 40bbc25 Thanks @YunFeng0817! - fix: duplicate textContent for style elements cause incremental style mutations to be invalid

  • #1533 d350da8 Thanks @jeffdnguyen! - Fix url() rewrite for nested stylesheets by rewriting during stringification instead of after

  • #1509 be6bf52 Thanks @Juice10! - Reverse monkey patch built in methods to support LWC (and other frameworks like angular which monkey patch built in methods).

2.0.0-alpha.16

Patch Changes

  • #1386 a2c8a1a Thanks @ababik! - Fix that the optional maskInputFn was being accidentally ignored during the creation of the full snapshot

  • #1512 d08624c Thanks @eoghanmurray! - optimisation: skip mask check on leaf elements

2.0.0-alpha.15

Major 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 from rrweb/typings/... or rrdom/es. However you run import rrweb from '@insights/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 in package.json and if you need specific types they might be exported from new packages (for example PlayerMachineState and SpeedMachineState are now exported from @rrweb/replay). Check the package.json's main and exports field for the available files.

Patch Changes

  • #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)

  • #1493 82f6fec Thanks @eoghanmurray! - Replay: Replace negative lookbehind in regexes from css parser as it causes issues with Safari 16

  • #1482 f3cf092 Thanks @AlfieJones! - (when recordCanvas: true): ensure we use doc.createElement instead of document.createElement to allow use in non-browser e.g. jsdom environments

  • #760 e08706a Thanks @eoghanmurray! - Add slimDOM option to block animation on