Skip to content

Conversation

@pauldambra
Copy link
Member

@pauldambra pauldambra commented Dec 26, 2025

Problem

with posthog-rrweb
we have to publish npm packages first
then test them in posthog-js
then release that

Changes

silly
now we've converted it to pnpm
we can move it into the mono-repo
and we only need to publish npm packages because we use them in the posthog-app

Release info Sub-libraries affected

Libraries affected

  • All of them
  • posthog-js (web)
  • posthog-js-lite (web lite)
  • posthog-node
  • posthog-react-native
  • @posthog/react
  • @posthog/ai
  • @posthog/nextjs-config
  • @posthog/nuxt
  • @posthog/rollup-plugin
  • @posthog/webpack-plugin

Checklist

  • Tests for new code
  • Accounted for the impact of any changes across different platforms
  • Accounted for backwards compatibility of any changes (no breaking changes!)
  • Took care not to unnecessarily increase the bundle size

If releasing new changes

  • Ran pnpm changeset to generate a changeset file
  • Added the "release" label to the PR to indicate we're publishing new versions for the affected packages

@vercel
Copy link

vercel bot commented Dec 26, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
posthog-js Ready Ready Preview Jan 7, 2026 2:17pm
posthog-nextjs-config Ready Ready Preview Jan 7, 2026 2:17pm

@github-actions
Copy link
Contributor

github-actions bot commented Dec 26, 2025

📝 No Changeset Found

This PR doesn't include a changeset. A changeset (and the release label) is required to release a new version.

How to add a changeset

Run this command and follow the prompts:

pnpm changeset

Remember: Never use major version bumps for posthog-js as it's autoloaded by clients.

Copy link
Member Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 26, 2025

Skipped: This PR changes more files than the configured file change limit: (404 files found, 100 file limit)

return customHref
}
// note: using `new URL` is slower. See #1434 or https://jsbench.me/uqlud17rxo/1
a.setAttribute('href', customHref)

Check failure

Code scanning / CodeQL

DOM text reinterpreted as HTML High

DOM text
is reinterpreted as HTML without escaping meta-characters.

Copilot Autofix

AI 13 days ago

In general, to fix “DOM text reinterpreted as HTML” issues, you prevent raw, untrusted DOM text from being fed directly into DOM APIs that interpret it as HTML/URLs, or you sanitize/validate it first. Here, the problematic operation is using an attacker-controllable string as the href attribute on a DOM anchor to normalize URLs. The best fix that does not change current functionality materially is to (1) keep using the anchor for URL resolution, but (2) reject or neutralize obviously dangerous URL schemes such as javascript:, vbscript:, and data:/blob: where appropriate before calling setAttribute, and return a safe placeholder (e.g. empty string or about:blank) instead. This keeps snapshotting functional for normal URLs but avoids treating hostile input as a navigable URL.

Concretely, we can introduce a small helper to check whether a URL has an allowed scheme, and use it in getHref right before a.setAttribute('href', customHref). We should:

  • Add a SAFE_HREF_PATTERN or similar that matches allowed URL schemes (e.g. http, https, mailto, maybe ftp) or relative URLs without a scheme.
  • Normalize customHref (trim it), and if it is non-empty and fails the safe pattern, return a benign, non-navigating URL string such as 'about:blank' (or '') instead of setting it on the anchor.
  • Keep existing early returns for blob: and data: if they are intentionally supported; or, if we want to be stricter, we can remove/exclude them from allowed schemes. To minimally affect behavior, we will keep those short-circuits but ensure any other unrecognized or scripting schemes are filtered.
  • Make no changes to how transformAttribute and absoluteToDoc are called, so the external API remains the same.

All changes are localized to packages/rrweb/rrweb-snapshot/src/snapshot.ts, around the getHref function and just above it for new constants/helpers.

Suggested changeset 1
packages/rrweb/rrweb-snapshot/src/snapshot.ts

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/packages/rrweb/rrweb-snapshot/src/snapshot.ts b/packages/rrweb/rrweb-snapshot/src/snapshot.ts
--- a/packages/rrweb/rrweb-snapshot/src/snapshot.ts
+++ b/packages/rrweb/rrweb-snapshot/src/snapshot.ts
@@ -156,6 +156,8 @@
     return Boolean(el.tagName === 'svg' || (el as SVGElement).ownerSVGElement)
 }
 
+const SAFE_HREF_PATTERN = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?\/\/|^(?![a-zA-Z][a-zA-Z0-9+.-]*:)/ // absolute http(s)-style or relative URL
+
 function getHref(doc: Document, customHref?: string) {
     let a = cachedDocument.get(doc)
     if (!a) {
@@ -167,8 +169,13 @@
     } else if (customHref.startsWith('blob:') || customHref.startsWith('data:')) {
         return customHref
     }
+    const trimmedHref = customHref.trim()
+    if (trimmedHref && !SAFE_HREF_PATTERN.test(trimmedHref)) {
+        // Disallow potentially dangerous schemes such as javascript:, vbscript:, etc.
+        return 'about:blank'
+    }
     // note: using `new URL` is slower. See #1434 or https://jsbench.me/uqlud17rxo/1
-    a.setAttribute('href', customHref)
+    a.setAttribute('href', trimmedHref)
     return a.href
 }
 
EOF
@@ -156,6 +156,8 @@
return Boolean(el.tagName === 'svg' || (el as SVGElement).ownerSVGElement)
}

const SAFE_HREF_PATTERN = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?\/\/|^(?![a-zA-Z][a-zA-Z0-9+.-]*:)/ // absolute http(s)-style or relative URL

function getHref(doc: Document, customHref?: string) {
let a = cachedDocument.get(doc)
if (!a) {
@@ -167,8 +169,13 @@
} else if (customHref.startsWith('blob:') || customHref.startsWith('data:')) {
return customHref
}
const trimmedHref = customHref.trim()
if (trimmedHref && !SAFE_HREF_PATTERN.test(trimmedHref)) {
// Disallow potentially dangerous schemes such as javascript:, vbscript:, etc.
return 'about:blank'
}
// note: using `new URL` is slower. See #1434 or https://jsbench.me/uqlud17rxo/1
a.setAttribute('href', customHref)
a.setAttribute('href', trimmedHref)
return a.href
}

Copilot is powered by AI and may make mistakes. Always verify output.
(!preserveWhiteSpace &&
_serializedNode.type === NodeType.Text &&
!_serializedNode.isStyle &&
!_serializedNode.textContent.replace(/^\s+|\s+$/gm, '').length)

Check failure

Code scanning / CodeQL

Polynomial regular expression used on uncontrolled data High

This
regular expression
that depends on
library input
may run slow on strings with many repetitions of ' '.
This
regular expression
that depends on
library input
may run slow on strings with many repetitions of ' '.
Comment on lines +380 to +411
return (cssText || '').replace(
URL_IN_CSS_REF,
(origin: string, quote1: string, path1: string, quote2: string, path2: string, path3: string) => {
const filePath = path1 || path2 || path3
const maybeQuote = quote1 || quote2 || ''
if (!filePath) {
return origin
}
if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {
return `url(${maybeQuote}${filePath}${maybeQuote})`
}
if (DATA_URI.test(filePath)) {
return `url(${maybeQuote}${filePath}${maybeQuote})`
}
if (filePath[0] === '/') {
return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`
}
const stack = href.split('/')
const parts = filePath.split('/')
stack.pop()
for (const part of parts) {
if (part === '.') {
continue
} else if (part === '..') {
stack.pop()
} else {
stack.push(part)
}
}
return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`
}
)

Check failure

Code scanning / CodeQL

Polynomial regular expression used on uncontrolled data High

This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url("' and with many repetitions of 'url("a'.
This
regular expression
that depends on
library input
may run slow on strings starting with 'url(' and with many repetitions of 'url(('.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from bd97789 to bf9cb65 Compare December 26, 2025 22:34
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from bf9cb65 to 93281db Compare December 26, 2025 23:20
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 93281db to 006e570 Compare December 27, 2025 00:01
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 006e570 to 06be442 Compare December 27, 2025 00:42
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 06be442 to edc5e72 Compare December 27, 2025 15:49
@github-actions
Copy link
Contributor

github-actions bot commented Dec 27, 2025

@github-actions
Copy link
Contributor

github-actions bot commented Dec 27, 2025

Size Change: +1.19 kB (+0.01%)

Total Size: 14.9 MB

Filename Size Change
packages/browser/dist/posthog-recorder.js 249 kB +1.19 kB (+0.48%)
ℹ️ View Unchanged
Filename Size Change
packages/ai/dist/anthropic/index.cjs 18 kB 0 B
packages/ai/dist/anthropic/index.mjs 17.6 kB 0 B
packages/ai/dist/gemini/index.cjs 23.4 kB 0 B
packages/ai/dist/gemini/index.mjs 23.2 kB 0 B
packages/ai/dist/index.cjs 146 kB 0 B
packages/ai/dist/index.mjs 145 kB 0 B
packages/ai/dist/langchain/index.cjs 44.3 kB 0 B
packages/ai/dist/langchain/index.mjs 43.8 kB 0 B
packages/ai/dist/openai/index.cjs 42.8 kB 0 B
packages/ai/dist/openai/index.mjs 42.4 kB 0 B
packages/ai/dist/vercel/index.cjs 30.5 kB 0 B
packages/ai/dist/vercel/index.mjs 30.4 kB 0 B
packages/browser/dist/all-external-dependencies.js 229 kB 0 B
packages/browser/dist/array.full.es5.js 310 kB 0 B
packages/browser/dist/array.full.js 377 kB 0 B
packages/browser/dist/array.full.no-external.js 393 kB 0 B
packages/browser/dist/array.js 171 kB 0 B
packages/browser/dist/array.no-external.js 185 kB 0 B
packages/browser/dist/conversations.js 38.4 kB 0 B
packages/browser/dist/crisp-chat-integration.js 2.11 kB 0 B
packages/browser/dist/customizations.full.js 18 kB 0 B
packages/browser/dist/dead-clicks-autocapture.js 13.1 kB 0 B
packages/browser/dist/exception-autocapture.js 11.8 kB 0 B
packages/browser/dist/external-scripts-loader.js 2.95 kB 0 B
packages/browser/dist/intercom-integration.js 2.16 kB 0 B
packages/browser/dist/lazy-recorder.js 150 kB 0 B
packages/browser/dist/main.js 172 kB 0 B
packages/browser/dist/module.full.js 378 kB 0 B
packages/browser/dist/module.full.no-external.js 394 kB 0 B
packages/browser/dist/module.js 172 kB 0 B
packages/browser/dist/module.no-external.js 186 kB 0 B
packages/browser/dist/product-tours-preview.js 45.1 kB 0 B
packages/browser/dist/product-tours.js 69.9 kB 0 B
packages/browser/dist/recorder-v2.js 113 kB 0 B
packages/browser/dist/recorder.js 113 kB 0 B
packages/browser/dist/surveys-preview.js 73.1 kB 0 B
packages/browser/dist/surveys.js 85.4 kB 0 B
packages/browser/dist/tracing-headers.js 1.93 kB 0 B
packages/browser/dist/web-vitals.js 10.5 kB 0 B
packages/browser/react/dist/esm/index.js 19.3 kB 0 B
packages/browser/react/dist/umd/index.js 22.4 kB 0 B
packages/core/dist/error-tracking/chunk-ids.js 2.54 kB 0 B
packages/core/dist/error-tracking/chunk-ids.mjs 1.31 kB 0 B
packages/core/dist/error-tracking/coercers/dom-exception-coercer.js 2.3 kB 0 B
packages/core/dist/error-tracking/coercers/dom-exception-coercer.mjs 993 B 0 B
packages/core/dist/error-tracking/coercers/error-coercer.js 2.02 kB 0 B
packages/core/dist/error-tracking/coercers/error-coercer.mjs 794 B 0 B
packages/core/dist/error-tracking/coercers/error-event-coercer.js 1.76 kB 0 B
packages/core/dist/error-tracking/coercers/error-event-coercer.mjs 513 B 0 B
packages/core/dist/error-tracking/coercers/event-coercer.js 1.82 kB 0 B
packages/core/dist/error-tracking/coercers/event-coercer.mjs 548 B 0 B
packages/core/dist/error-tracking/coercers/index.js 6.79 kB 0 B
packages/core/dist/error-tracking/coercers/index.mjs 326 B 0 B
packages/core/dist/error-tracking/coercers/object-coercer.js 3.46 kB 0 B
packages/core/dist/error-tracking/coercers/object-coercer.mjs 2.07 kB 0 B
packages/core/dist/error-tracking/coercers/primitive-coercer.js 1.67 kB 0 B
packages/core/dist/error-tracking/coercers/primitive-coercer.mjs 419 B 0 B
packages/core/dist/error-tracking/coercers/promise-rejection-event.js 2.25 kB 0 B
packages/core/dist/error-tracking/coercers/promise-rejection-event.mjs 904 B 0 B
packages/core/dist/error-tracking/coercers/string-coercer.js 2.01 kB 0 B
packages/core/dist/error-tracking/coercers/string-coercer.mjs 820 B 0 B
packages/core/dist/error-tracking/coercers/utils.js 2.06 kB 0 B
packages/core/dist/error-tracking/coercers/utils.mjs 716 B 0 B
packages/core/dist/error-tracking/error-properties-builder.js 5.49 kB 0 B
packages/core/dist/error-tracking/error-properties-builder.mjs 4.15 kB 0 B
packages/core/dist/error-tracking/index.js 4.11 kB 0 B
packages/core/dist/error-tracking/index.mjs 152 B 0 B
packages/core/dist/error-tracking/parsers/base.js 1.83 kB 0 B
packages/core/dist/error-tracking/parsers/base.mjs 464 B 0 B
packages/core/dist/error-tracking/parsers/chrome.js 2.73 kB 0 B
packages/core/dist/error-tracking/parsers/chrome.mjs 1.32 kB 0 B
packages/core/dist/error-tracking/parsers/gecko.js 2.47 kB 0 B
packages/core/dist/error-tracking/parsers/gecko.mjs 1.13 kB 0 B
packages/core/dist/error-tracking/parsers/index.js 4.38 kB 0 B
packages/core/dist/error-tracking/parsers/index.mjs 1.94 kB 0 B
packages/core/dist/error-tracking/parsers/node.js 3.94 kB 0 B
packages/core/dist/error-tracking/parsers/node.mjs 2.68 kB 0 B
packages/core/dist/error-tracking/parsers/opera.js 2.26 kB 0 B
packages/core/dist/error-tracking/parsers/opera.mjs 746 B 0 B
packages/core/dist/error-tracking/parsers/safari.js 1.88 kB 0 B
packages/core/dist/error-tracking/parsers/safari.mjs 574 B 0 B
packages/core/dist/error-tracking/parsers/winjs.js 1.72 kB 0 B
packages/core/dist/error-tracking/parsers/winjs.mjs 426 B 0 B
packages/core/dist/error-tracking/types.js 1.33 kB 0 B
packages/core/dist/error-tracking/types.mjs 131 B 0 B
packages/core/dist/error-tracking/utils.js 1.8 kB 0 B
packages/core/dist/error-tracking/utils.mjs 604 B 0 B
packages/core/dist/eventemitter.js 1.78 kB 0 B
packages/core/dist/eventemitter.mjs 571 B 0 B
packages/core/dist/featureFlagUtils.js 6.5 kB 0 B
packages/core/dist/featureFlagUtils.mjs 4.28 kB 0 B
packages/core/dist/gzip.js 1.88 kB 0 B
packages/core/dist/gzip.mjs 577 B 0 B
packages/core/dist/index.js 5.7 kB 0 B
packages/core/dist/index.mjs 485 B 0 B
packages/core/dist/posthog-core-stateless.js 29.7 kB 0 B
packages/core/dist/posthog-core-stateless.mjs 27.2 kB 0 B
packages/core/dist/posthog-core.js 28.2 kB 0 B
packages/core/dist/posthog-core.mjs 24 kB 0 B
packages/core/dist/process/index.js 2.77 kB 0 B
packages/core/dist/process/index.mjs 114 B 0 B
packages/core/dist/process/spawn-local.js 1.82 kB 0 B
packages/core/dist/process/spawn-local.mjs 568 B 0 B
packages/core/dist/process/utils.js 3.12 kB 0 B
packages/core/dist/process/utils.mjs 1.15 kB 0 B
packages/core/dist/testing/index.js 2.93 kB 0 B
packages/core/dist/testing/index.mjs 79 B 0 B
packages/core/dist/testing/PostHogCoreTestClient.js 3.15 kB 0 B
packages/core/dist/testing/PostHogCoreTestClient.mjs 1.74 kB 0 B
packages/core/dist/testing/test-utils.js 2.77 kB 0 B
packages/core/dist/testing/test-utils.mjs 1.09 kB 0 B
packages/core/dist/types.js 8.2 kB 0 B
packages/core/dist/types.mjs 5.93 kB 0 B
packages/core/dist/utils/bot-detection.js 3.28 kB 0 B
packages/core/dist/utils/bot-detection.mjs 1.95 kB 0 B
packages/core/dist/utils/bucketed-rate-limiter.js 3 kB 0 B
packages/core/dist/utils/bucketed-rate-limiter.mjs 1.62 kB 0 B
packages/core/dist/utils/index.js 11.9 kB 0 B
packages/core/dist/utils/index.mjs 1.98 kB 0 B
packages/core/dist/utils/logger.js 2.5 kB 0 B
packages/core/dist/utils/logger.mjs 1.22 kB 0 B
packages/core/dist/utils/number-utils.js 2 kB 0 B
packages/core/dist/utils/number-utils.mjs 735 B 0 B
packages/core/dist/utils/promise-queue.js 2 kB 0 B
packages/core/dist/utils/promise-queue.mjs 768 B 0 B
packages/core/dist/utils/string-utils.js 1.91 kB 0 B
packages/core/dist/utils/string-utils.mjs 414 B 0 B
packages/core/dist/utils/type-utils.js 6.93 kB 0 B
packages/core/dist/utils/type-utils.mjs 3.03 kB 0 B
packages/core/dist/utils/user-agent-utils.js 14.9 kB 0 B
packages/core/dist/utils/user-agent-utils.mjs 11.9 kB 0 B
packages/core/dist/vendor/uuidv7.js 8.29 kB 0 B
packages/core/dist/vendor/uuidv7.mjs 6.72 kB 0 B
packages/nextjs-config/dist/config.js 4.97 kB 0 B
packages/nextjs-config/dist/config.mjs 3.48 kB 0 B
packages/nextjs-config/dist/index.js 2.24 kB 0 B
packages/nextjs-config/dist/index.mjs 30 B 0 B
packages/nextjs-config/dist/utils.js 3.96 kB 0 B
packages/nextjs-config/dist/utils.mjs 1.85 kB 0 B
packages/node/dist/client.js 27.7 kB 0 B
packages/node/dist/client.mjs 25.7 kB 0 B
packages/node/dist/entrypoints/index.edge.js 4.25 kB 0 B
packages/node/dist/entrypoints/index.edge.mjs 723 B 0 B
packages/node/dist/entrypoints/index.node.js 5.55 kB 0 B
packages/node/dist/entrypoints/index.node.mjs 1.08 kB 0 B
packages/node/dist/experimental.js 603 B 0 B
packages/node/dist/experimental.mjs 0 B 0 B 🆕
packages/node/dist/exports.js 3.6 kB 0 B
packages/node/dist/exports.mjs 124 B 0 B
packages/node/dist/extensions/context/context.js 2.12 kB 0 B
packages/node/dist/extensions/context/context.mjs 862 B 0 B
packages/node/dist/extensions/context/types.js 603 B 0 B
packages/node/dist/extensions/context/types.mjs 0 B 0 B 🆕
packages/node/dist/extensions/error-tracking/autocapture.js 2.66 kB 0 B
packages/node/dist/extensions/error-tracking/autocapture.mjs 1.24 kB 0 B
packages/node/dist/extensions/error-tracking/index.js 3.88 kB 0 B
packages/node/dist/extensions/error-tracking/index.mjs 2.61 kB 0 B
packages/node/dist/extensions/error-tracking/modifiers/context-lines.node.js 8.81 kB 0 B
packages/node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs 7.15 kB 0 B
packages/node/dist/extensions/error-tracking/modifiers/module.node.js 2.78 kB 0 B
packages/node/dist/extensions/error-tracking/modifiers/module.node.mjs 1.45 kB 0 B
packages/node/dist/extensions/express.js 2.75 kB 0 B
packages/node/dist/extensions/express.mjs 1.16 kB 0 B
packages/node/dist/extensions/feature-flags/cache.js 603 B 0 B
packages/node/dist/extensions/feature-flags/cache.mjs 0 B 0 B 🆕
packages/node/dist/extensions/feature-flags/crypto.js 1.57 kB 0 B
packages/node/dist/extensions/feature-flags/crypto.mjs 395 B 0 B
packages/node/dist/extensions/feature-flags/feature-flags.js 31.1 kB 0 B
packages/node/dist/extensions/feature-flags/feature-flags.mjs 29.1 kB 0 B
packages/node/dist/extensions/sentry-integration.js 4.66 kB 0 B
packages/node/dist/extensions/sentry-integration.mjs 3.17 kB 0 B
packages/node/dist/storage-memory.js 1.52 kB 0 B
packages/node/dist/storage-memory.mjs 297 B 0 B
packages/node/dist/types.js 1.43 kB 0 B
packages/node/dist/types.mjs 224 B 0 B
packages/node/dist/version.js 1.21 kB 0 B
packages/node/dist/version.mjs 46 B 0 B
packages/nuxt/dist/module.mjs 4.39 kB 0 B
packages/nuxt/dist/runtime/composables/useFeatureFlagEnabled.js 566 B 0 B
packages/nuxt/dist/runtime/composables/useFeatureFlagPayload.js 597 B 0 B
packages/nuxt/dist/runtime/composables/useFeatureFlagVariantKey.js 591 B 0 B
packages/nuxt/dist/runtime/composables/usePostHog.js 128 B 0 B
packages/nuxt/dist/runtime/nitro-plugin.js 1.08 kB 0 B
packages/nuxt/dist/runtime/vue-plugin.js 1.14 kB 0 B
packages/react-native/dist/autocapture.js 5.05 kB 0 B
packages/react-native/dist/error-tracking/index.js 6.77 kB 0 B
packages/react-native/dist/error-tracking/utils.js 2.58 kB 0 B
packages/react-native/dist/frameworks/wix-navigation.js 1.3 kB 0 B
packages/react-native/dist/hooks/useFeatureFlag.js 1.49 kB 0 B
packages/react-native/dist/hooks/useFeatureFlags.js 821 B 0 B
packages/react-native/dist/hooks/useNavigationTracker.js 2.46 kB 0 B
packages/react-native/dist/hooks/usePostHog.js 467 B 0 B
packages/react-native/dist/index.js 3.12 kB 0 B
packages/react-native/dist/native-deps.js 8.16 kB 0 B
packages/react-native/dist/optional/OptionalAsyncStorage.js 299 B 0 B
packages/react-native/dist/optional/OptionalExpoApplication.js 377 B 0 B
packages/react-native/dist/optional/OptionalExpoDevice.js 347 B 0 B
packages/react-native/dist/optional/OptionalExpoFileSystem.js 386 B 0 B
packages/react-native/dist/optional/OptionalExpoFileSystemLegacy.js 423 B 0 B
packages/react-native/dist/optional/OptionalExpoLocalization.js 383 B 0 B
packages/react-native/dist/optional/OptionalReactNativeDeviceInfo.js 415 B 0 B
packages/react-native/dist/optional/OptionalReactNativeLocalize.js 303 B 0 B
packages/react-native/dist/optional/OptionalReactNativeNavigation.js 415 B 0 B
packages/react-native/dist/optional/OptionalReactNativeNavigationWix.js 443 B 0 B
packages/react-native/dist/optional/OptionalReactNativeSafeArea.js 644 B 0 B
packages/react-native/dist/optional/OptionalSessionReplay.js 455 B 0 B
packages/react-native/dist/posthog-rn.js 30.5 kB 0 B
packages/react-native/dist/PostHogContext.js 329 B 0 B
packages/react-native/dist/PostHogProvider.js 4.77 kB 0 B
packages/react-native/dist/storage.js 3.39 kB 0 B
packages/react-native/dist/surveys/components/BottomSection.js 1.34 kB 0 B
packages/react-native/dist/surveys/components/Cancel.js 909 B 0 B
packages/react-native/dist/surveys/components/ConfirmationMessage.js 1.65 kB 0 B
packages/react-native/dist/surveys/components/QuestionHeader.js 1.37 kB 0 B
packages/react-native/dist/surveys/components/QuestionTypes.js 11.3 kB 0 B
packages/react-native/dist/surveys/components/SurveyModal.js 4.01 kB 0 B
packages/react-native/dist/surveys/components/Surveys.js 7.22 kB 0 B
packages/react-native/dist/surveys/getActiveMatchingSurveys.js 2.64 kB 0 B
packages/react-native/dist/surveys/icons.js 7.76 kB 0 B
packages/react-native/dist/surveys/index.js 600 B 0 B
packages/react-native/dist/surveys/PostHogSurveyProvider.js 5.71 kB 0 B
packages/react-native/dist/surveys/surveys-utils.js 12.7 kB 0 B
packages/react-native/dist/surveys/useActivatedSurveys.js 3.67 kB 0 B
packages/react-native/dist/surveys/useSurveyStorage.js 2.16 kB 0 B
packages/react-native/dist/tooling/expoconfig.js 2.63 kB 0 B
packages/react-native/dist/tooling/metroconfig.js 2.2 kB 0 B
packages/react-native/dist/tooling/posthogMetroSerializer.js 4.78 kB 0 B
packages/react-native/dist/tooling/utils.js 4.05 kB 0 B
packages/react-native/dist/tooling/vendor/expo/expoconfig.js 70 B 0 B
packages/react-native/dist/tooling/vendor/metro/countLines.js 237 B 0 B
packages/react-native/dist/tooling/vendor/metro/utils.js 3.35 kB 0 B
packages/react-native/dist/types.js 70 B 0 B
packages/react-native/dist/utils.js 719 B 0 B
packages/react-native/dist/version.js 130 B 0 B
packages/react/dist/esm/index.js 19.3 kB 0 B
packages/react/dist/umd/index.js 22.4 kB 0 B
packages/rollup-plugin/dist/index.js 3.62 kB 0 B
packages/rrweb/all/dist/rrweb-all.cjs 589 kB 0 B
packages/rrweb/all/dist/rrweb-all.js 589 kB 0 B
packages/rrweb/all/dist/rrweb-all.umd.cjs 592 kB 0 B
packages/rrweb/all/dist/rrweb-all.umd.min.cjs 282 kB 0 B
packages/rrweb/packer/dist/base-BHkG_thH.js 18.2 kB 0 B
packages/rrweb/packer/dist/base-glTuDzdO.cjs 18.3 kB 0 B
packages/rrweb/packer/dist/base-glTuDzdO.umd.cjs 18.7 kB 0 B
packages/rrweb/packer/dist/base-glTuDzdO.umd.min.cjs 9.5 kB 0 B
packages/rrweb/packer/dist/pack.cjs 347 B 0 B
packages/rrweb/packer/dist/pack.js 285 B 0 B
packages/rrweb/packer/dist/pack.umd.cjs 1.63 kB 0 B
packages/rrweb/packer/dist/pack.umd.min.cjs 1.11 kB 0 B
packages/rrweb/packer/dist/packer.cjs 257 B 0 B
packages/rrweb/packer/dist/packer.js 136 B 0 B
packages/rrweb/packer/dist/packer.umd.cjs 662 B 0 B
packages/rrweb/packer/dist/packer.umd.min.cjs 626 B 0 B
packages/rrweb/packer/dist/unpack.cjs 769 B 0 B
packages/rrweb/packer/dist/unpack.js 702 B 0 B
packages/rrweb/packer/dist/unpack.umd.cjs 1.17 kB 0 B
packages/rrweb/packer/dist/unpack.umd.min.cjs 955 B 0 B
packages/rrweb/plugins/canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.cjs 37.6 kB 0 B
packages/rrweb/plugins/canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.js 37.4 kB 0 B
packages/rrweb/plugins/canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.umd.cjs 38 kB 0 B
packages/rrweb/plugins/canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.umd.min.cjs 22.2 kB 0 B
packages/rrweb/plugins/canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.cjs 34.3 kB 0 B
packages/rrweb/plugins/canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.js 34.2 kB 0 B
packages/rrweb/plugins/canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.umd.cjs 34.7 kB 0 B
packages/rrweb/plugins/canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.umd.min.cjs 20.5 kB 0 B
packages/rrweb/plugins/console-record/dist/rrweb-plugin-console-record.cjs 14.5 kB 0 B
packages/rrweb/plugins/console-record/dist/rrweb-plugin-console-record.js 14.3 kB 0 B
packages/rrweb/plugins/console-record/dist/rrweb-plugin-console-record.umd.cjs 14.9 kB 0 B
packages/rrweb/plugins/console-record/dist/rrweb-plugin-console-record.umd.min.cjs 7.33 kB 0 B
packages/rrweb/plugins/console-replay/dist/rrweb-plugin-console-replay.cjs 4.94 kB 0 B
packages/rrweb/plugins/console-replay/dist/rrweb-plugin-console-replay.js 4.83 kB 0 B
packages/rrweb/plugins/console-replay/dist/rrweb-plugin-console-replay.umd.cjs 5.37 kB 0 B
packages/rrweb/plugins/console-replay/dist/rrweb-plugin-console-replay.umd.min.cjs 2.64 kB 0 B
packages/rrweb/plugins/sequential-id-record/dist/rrweb-plugin-sequential-id-record.cjs 681 B 0 B
packages/rrweb/plugins/sequential-id-record/dist/rrweb-plugin-sequential-id-record.js 548 B 0 B
packages/rrweb/plugins/sequential-id-record/dist/rrweb-plugin-sequential-id-record.umd.cjs 1.12 kB 0 B
packages/rrweb/plugins/sequential-id-record/dist/rrweb-plugin-sequential-id-record.umd.min.cjs 829 B 0 B
packages/rrweb/plugins/sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.cjs 913 B 0 B
packages/rrweb/plugins/sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.js 800 B 0 B
packages/rrweb/plugins/sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.umd.cjs 1.35 kB 0 B
packages/rrweb/plugins/sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.umd.min.cjs 968 B 0 B
packages/rrweb/record/dist/rrweb-record.cjs 412 kB 0 B
packages/rrweb/record/dist/rrweb-record.js 412 kB 0 B
packages/rrweb/record/dist/rrweb-record.umd.cjs 414 kB 0 B
packages/rrweb/record/dist/rrweb-record.umd.min.cjs 192 kB 0 B
packages/rrweb/replay/dist/rrweb-replay.cjs 422 kB 0 B
packages/rrweb/replay/dist/rrweb-replay.js 422 kB 0 B
packages/rrweb/replay/dist/rrweb-replay.umd.cjs 424 kB 0 B
packages/rrweb/replay/dist/rrweb-replay.umd.min.cjs 202 kB 0 B
packages/rrweb/rrdom-nodejs/dist/rrdom-nodejs.cjs 150 kB 0 B
packages/rrweb/rrdom-nodejs/dist/rrdom-nodejs.js 149 kB 0 B
packages/rrweb/rrdom-nodejs/dist/rrdom-nodejs.umd.cjs 151 kB 0 B
packages/rrweb/rrdom-nodejs/dist/rrdom-nodejs.umd.min.cjs 70.8 kB 0 B
packages/rrweb/rrdom/dist/rrdom.cjs 168 kB 0 B
packages/rrweb/rrdom/dist/rrdom.js 167 kB 0 B
packages/rrweb/rrdom/dist/rrdom.umd.cjs 169 kB 0 B
packages/rrweb/rrdom/dist/rrdom.umd.min.cjs 77.9 kB 0 B
packages/rrweb/rrweb-snapshot/dist/record.cjs 30.3 kB 0 B
packages/rrweb/rrweb-snapshot/dist/record.js 29.4 kB 0 B
packages/rrweb/rrweb-snapshot/dist/record.umd.cjs 50.9 kB 0 B
packages/rrweb/rrweb-snapshot/dist/record.umd.min.cjs 24.7 kB 0 B
packages/rrweb/rrweb-snapshot/dist/replay.cjs 136 kB 0 B
packages/rrweb/rrweb-snapshot/dist/replay.js 135 kB 0 B
packages/rrweb/rrweb-snapshot/dist/replay.umd.cjs 158 kB 0 B
packages/rrweb/rrweb-snapshot/dist/replay.umd.min.cjs 72.9 kB 0 B
packages/rrweb/rrweb-snapshot/dist/rrweb-snapshot.cjs 1.91 kB 0 B
packages/rrweb/rrweb-snapshot/dist/rrweb-snapshot.js 1.16 kB 0 B
packages/rrweb/rrweb-snapshot/dist/rrweb-snapshot.umd.cjs 211 kB 0 B
packages/rrweb/rrweb-snapshot/dist/rrweb-snapshot.umd.min.cjs 89.8 kB 0 B
packages/rrweb/rrweb-snapshot/dist/types-BdUkHCtN.cjs 17.7 kB 0 B
packages/rrweb/rrweb-snapshot/dist/types-BdUkHCtN.umd.cjs 18.2 kB 0 B
packages/rrweb/rrweb-snapshot/dist/types-BdUkHCtN.umd.min.cjs 9.03 kB 0 B
packages/rrweb/rrweb-snapshot/dist/types-C0urgpJk.js 17.3 kB 0 B
packages/rrweb/rrweb/dist/rrweb.cjs 572 kB 0 B
packages/rrweb/rrweb/dist/rrweb.js 572 kB 0 B
packages/rrweb/rrweb/dist/rrweb.umd.cjs 573 kB 0 B
packages/rrweb/rrweb/dist/rrweb.umd.min.cjs 272 kB 0 B
packages/rrweb/types/dist/rrweb-types.cjs 5.64 kB 0 B
packages/rrweb/types/dist/rrweb-types.js 5.38 kB 0 B
packages/rrweb/types/dist/rrweb-types.umd.cjs 6.04 kB 0 B
packages/rrweb/types/dist/rrweb-types.umd.min.cjs 2.8 kB 0 B
packages/rrweb/utils/dist/rrweb-utils.cjs 6.32 kB 0 B
packages/rrweb/utils/dist/rrweb-utils.js 5.86 kB 0 B
packages/rrweb/utils/dist/rrweb-utils.umd.cjs 6.73 kB 0 B
packages/rrweb/utils/dist/rrweb-utils.umd.min.cjs 3.49 kB 0 B
packages/types/dist/capture.js 603 B 0 B
packages/types/dist/capture.mjs 0 B 0 B 🆕
packages/types/dist/common.js 603 B 0 B
packages/types/dist/common.mjs 0 B 0 B 🆕
packages/types/dist/feature-flags.js 603 B 0 B
packages/types/dist/feature-flags.mjs 0 B 0 B 🆕
packages/types/dist/index.js 603 B 0 B
packages/types/dist/index.mjs 0 B 0 B 🆕
packages/types/dist/posthog-config.js 603 B 0 B
packages/types/dist/posthog-config.mjs 0 B 0 B 🆕
packages/types/dist/posthog.js 603 B 0 B
packages/types/dist/posthog.mjs 0 B 0 B 🆕
packages/types/dist/request.js 603 B 0 B
packages/types/dist/request.mjs 0 B 0 B 🆕
packages/types/dist/segment.js 603 B 0 B
packages/types/dist/segment.mjs 0 B 0 B 🆕
packages/types/dist/session-recording.js 603 B 0 B
packages/types/dist/session-recording.mjs 0 B 0 B 🆕
packages/web/dist/index.cjs 13.8 kB 0 B
packages/web/dist/index.mjs 13.7 kB 0 B
packages/webpack-plugin/dist/config.js 2.69 kB 0 B
packages/webpack-plugin/dist/config.mjs 1.69 kB 0 B
packages/webpack-plugin/dist/index.js 6.47 kB 0 B
packages/webpack-plugin/dist/index.mjs 3.05 kB 0 B
tooling/changelog/dist/index.js 3.31 kB 0 B
tooling/rollup-utils/dist/index.js 1.17 kB 0 B

compressed-size-action

@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 9da3f90 to e95d759 Compare December 28, 2025 21:59
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from e95d759 to 435af99 Compare December 29, 2025 08:35
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 435af99 to a07cc5c Compare December 29, 2025 09:41
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from a07cc5c to 999c8c7 Compare December 29, 2025 10:24
@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 999c8c7 to 13f31b5 Compare December 29, 2025 10:35
Copy link
Member

@rafaeelaudibert rafaeelaudibert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obviously didn't review the code, but it's not obvious to me how the release process is gonna work here

"updateInternalDependencies": "patch",
"bumpVersionsWithWorkspaceProtocolOnly": true,
"ignore": []
"ignore": [
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not use changesets for it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the release workflow will work well if we're not using changesets :thinking_face:

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah! so, we don't need (i don't think) to release all these packages because we don't use them

we only ever import these in posthog for replay and for that we're using the main rrweb package.

so, we should get a subset of the total number of rrweb packages released and then be able to import those in the main posthog app

(i'm assuming this won't work the way i expect and will need a few tries to get right)

(TL;DR rrweb publishes tonnes of packages but we don't need to release them all i believe)

Comment on lines +69 to +72
"@posthog/rrweb-plugin-console-record": "workspace:*",
"@posthog/rrweb-record": "workspace:*",
"@posthog/rrweb-types": "workspace:*",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This probably deserves a patch bump?

Comment on lines +20 to +25
## Hello internal PostHog folk

We build this and publish it to NPM so that we can use it in posthog-js

If you want to contribute a change back to upstream rrweb
then you need to open a person fork and contribute from there
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe explain why do we need to do this versus just using the upstream? mention they're slow to take upstreams, etc, etc. etc.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Too many files changed for review.

@pauldambra pauldambra force-pushed the feat/pd/move-rrweb-into-this-workspace branch from 8c34cfb to edf29e6 Compare January 7, 2026 14:09
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Too many files changed for review.

1 similar comment
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Too many files changed for review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants