Skip to content

fix: remove postcss from @posthog/rrweb-record bundle#166

Open
pauldambra wants to merge 3 commits intomainfrom
remove-postcss-from-record-bundle
Open

fix: remove postcss from @posthog/rrweb-record bundle#166
pauldambra wants to merge 3 commits intomainfrom
remove-postcss-from-record-bundle

Conversation

@pauldambra
Copy link
Copy Markdown
Member

@pauldambra pauldambra commented Apr 2, 2026

Summary

PostCSS (~250KB) was bundled into @posthog/rrweb-record because the record package consumed pre-built workspace dependencies, preventing Rollup from tree-shaking unused modules like rebuild.ts.

  • Add a resolveId vite plugin to packages/record/vite.config.ts that redirects @posthog/rrweb, @posthog/rrweb-snapshot, and @posthog/rrdom to their source entry points so Rollup can see individual modules and drop the replay/postcss code
  • Add slimDOMDefaults and resetMaxDepthState to rrweb-snapshot's record sub-entry (needed by the record chain)
  • Re-export wasMaxDepthReached and resetMaxDepthState from rrweb's record entry
  • Fix CI bundle size reporting: add pull-requests: write permission and strip-hash for content-hashed filenames

Result: @posthog/rrweb-record bundle 420KB → 170KB, zero postcss references.

Test plan

  • pnpm build:all succeeds
  • grep -c "postcss" packages/record/dist/rrweb-record.js returns 0
  • pnpm --filter @posthog/rrweb-record test passes
  • CI bundle size check shows reduction

🤖 Generated with Claude Code

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

Size Change: -810 kB (-6.95%) ✅

Total Size: 10.8 MB

Filename Size Change
packages/record/dist/rrweb-record.cjs 170 kB -250 kB (-59.58%) 🏆
packages/record/dist/rrweb-record.js 170 kB -250 kB (-59.6%) 🏆
packages/record/dist/rrweb-record.umd.cjs 171 kB -252 kB (-59.54%) 🏆
packages/record/dist/rrweb-record.umd.min.cjs 82.8 kB -113 kB (-57.7%) 🏆
packages/rrweb-snapshot/dist/record.js 30.3 kB +29.2 kB (+2793.79%) 🆘
packages/rrweb-snapshot/dist/record.cjs 31.3 kB +29.5 kB (+1636.28%) 🆘
packages/rrweb-snapshot/dist/record.umd.cjs 53 kB -4.92 kB (-8.5%)
packages/rrweb-snapshot/dist/record.umd.min.cjs 25.8 kB -463 B (-1.76%)
packages/rrweb-snapshot/dist/rrweb.cjs 2.13 kB -9 B (-0.42%)
packages/rrweb-snapshot/dist/rrweb.js 1.32 kB +42 B (+3.28%)
packages/rrweb-snapshot/dist/rrweb.umd.cjs 215 kB +1.17 kB (+0.55%)
packages/rrweb-snapshot/dist/rrweb.umd.min.cjs 91.1 kB +785 B (+0.87%)
ℹ️ View Unchanged
Filename Size
packages/all/dist/rrweb-all.cjs 607 kB
packages/all/dist/rrweb-all.js 607 kB
packages/all/dist/rrweb-all.umd.cjs 610 kB
packages/all/dist/rrweb-all.umd.min.cjs 289 kB
packages/packer/dist/base.js 18.2 kB
packages/packer/dist/base.cjs 18.3 kB
packages/packer/dist/base.umd.cjs 19.4 kB
packages/packer/dist/base.umd.min.cjs 10.1 kB
packages/packer/dist/pack.cjs 347 B
packages/packer/dist/pack.js 285 B
packages/packer/dist/pack.umd.cjs 2.28 kB
packages/packer/dist/pack.umd.min.cjs 1.76 kB
packages/packer/dist/packer.cjs 257 B
packages/packer/dist/packer.js 136 B
packages/packer/dist/packer.umd.cjs 1.31 kB
packages/packer/dist/packer.umd.min.cjs 1.27 kB
packages/packer/dist/unpack.cjs 769 B
packages/packer/dist/unpack.js 702 B
packages/packer/dist/unpack.umd.cjs 1.82 kB
packages/packer/dist/unpack.umd.min.cjs 1.6 kB
packages/plugins/rrweb-plugin-canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.cjs 37.6 kB
packages/plugins/rrweb-plugin-canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.js 37.5 kB
packages/plugins/rrweb-plugin-canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.umd.cjs 38.7 kB
packages/plugins/rrweb-plugin-canvas-webrtc-record/dist/rrweb-plugin-canvas-webrtc-record.umd.min.cjs 22.9 kB
packages/plugins/rrweb-plugin-canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.cjs 34.3 kB
packages/plugins/rrweb-plugin-canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.js 34.2 kB
packages/plugins/rrweb-plugin-canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.umd.cjs 35.4 kB
packages/plugins/rrweb-plugin-canvas-webrtc-replay/dist/rrweb-plugin-canvas-webrtc-replay.umd.min.cjs 21.2 kB
packages/plugins/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.cjs 14.9 kB
packages/plugins/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.js 14.8 kB
packages/plugins/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.umd.cjs 16 kB
packages/plugins/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.umd.min.cjs 8 kB
packages/plugins/rrweb-plugin-console-replay/dist/rrweb-plugin-console-replay.cjs 5.01 kB
packages/plugins/rrweb-plugin-console-replay/dist/rrweb-plugin-console-replay.js 4.9 kB
packages/plugins/rrweb-plugin-console-replay/dist/rrweb-plugin-console-replay.umd.cjs 6.1 kB
packages/plugins/rrweb-plugin-console-replay/dist/rrweb-plugin-console-replay.umd.min.cjs 3.3 kB
packages/plugins/rrweb-plugin-sequential-id-record/dist/rrweb-plugin-sequential-id-record.cjs 681 B
packages/plugins/rrweb-plugin-sequential-id-record/dist/rrweb-plugin-sequential-id-record.js 548 B
packages/plugins/rrweb-plugin-sequential-id-record/dist/rrweb-plugin-sequential-id-record.umd.cjs 1.79 kB
packages/plugins/rrweb-plugin-sequential-id-record/dist/rrweb-plugin-sequential-id-record.umd.min.cjs 1.5 kB
packages/plugins/rrweb-plugin-sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.cjs 933 B
packages/plugins/rrweb-plugin-sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.js 820 B
packages/plugins/rrweb-plugin-sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.umd.cjs 2.04 kB
packages/plugins/rrweb-plugin-sequential-id-replay/dist/rrweb-plugin-sequential-id-replay.umd.min.cjs 1.64 kB
packages/replay/dist/rrweb-replay.cjs 439 kB
packages/replay/dist/rrweb-replay.js 439 kB
packages/replay/dist/rrweb-replay.umd.cjs 442 kB
packages/replay/dist/rrweb-replay.umd.min.cjs 210 kB
packages/replay/dist/style.css 2.45 kB
packages/replay/dist/style.min.css 1.97 kB
packages/rrdom-nodejs/dist/rrdom-nodejs.cjs 150 kB
packages/rrdom-nodejs/dist/rrdom-nodejs.js 149 kB
packages/rrdom-nodejs/dist/rrdom-nodejs.umd.cjs 152 kB
packages/rrdom-nodejs/dist/rrdom-nodejs.umd.min.cjs 71.4 kB
packages/rrdom/dist/rrdom.cjs 174 kB
packages/rrdom/dist/rrdom.js 173 kB
packages/rrdom/dist/rrdom.umd.cjs 176 kB
packages/rrdom/dist/rrdom.umd.min.cjs 81.4 kB
packages/rrweb-player/dist/events.js 159 kB
packages/rrweb-player/dist/global.css 240 B
packages/rrweb-player/dist/rrweb-player.cjs 510 kB
packages/rrweb-player/dist/rrweb-player.js 510 kB
packages/rrweb-player/dist/rrweb-player.umd.cjs 513 kB
packages/rrweb-player/dist/rrweb-player.umd.min.cjs 239 kB
packages/rrweb-player/dist/style.css 5.57 kB
packages/rrweb-player/dist/style.min.css 5 kB
packages/rrweb-snapshot/dist/replay.cjs 136 kB
packages/rrweb-snapshot/dist/replay.js 136 kB
packages/rrweb-snapshot/dist/replay.umd.cjs 159 kB
packages/rrweb-snapshot/dist/replay.umd.min.cjs 73.7 kB
packages/rrweb-snapshot/dist/types.cjs 18.1 kB
packages/rrweb-snapshot/dist/types.umd.cjs 19.3 kB
packages/rrweb-snapshot/dist/types.umd.min.cjs 9.85 kB
packages/rrweb-snapshot/dist/types.js 17.7 kB
packages/rrweb/dist/rrweb.cjs 590 kB
packages/rrweb/dist/rrweb.js 589 kB
packages/rrweb/dist/rrweb.umd.cjs 591 kB
packages/rrweb/dist/rrweb.umd.min.cjs 280 kB
packages/rrweb/dist/style.css 2.45 kB
packages/rrweb/dist/style.min.css 1.97 kB
packages/types/dist/rrweb-types.cjs 5.64 kB
packages/types/dist/rrweb-types.js 5.38 kB
packages/types/dist/rrweb-types.umd.cjs 6.69 kB
packages/types/dist/rrweb-types.umd.min.cjs 3.44 kB
packages/utils/dist/rrweb-utils.cjs 6.41 kB
packages/utils/dist/rrweb-utils.js 5.95 kB
packages/utils/dist/rrweb-utils.umd.cjs 7.47 kB
packages/utils/dist/rrweb-utils.umd.min.cjs 4.16 kB

compressed-size-action

pauldambra and others added 2 commits April 2, 2026 19:04
PostCSS (~250KB) was bundled into the record entry because the record
package consumed pre-built workspace dependencies, preventing Rollup
from tree-shaking unused modules like rebuild.ts.

Add a resolveId plugin to the record package's vite config that
redirects @posthog/rrweb, @posthog/rrweb-snapshot, and @posthog/rrdom
to their source entry points so Rollup can see individual modules and
drop the replay/postcss code.

Also add slimDOMDefaults, resetMaxDepthState, and wasMaxDepthReached
to the record-only sub-entries so the record chain doesn't need the
full barrel exports.

Result: 420KB → 170KB, zero postcss references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add pull-requests: write permission so compressed-size-action can
  post comments
- Add strip-hash to normalize content-hashed filenames across builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@pauldambra pauldambra force-pushed the remove-postcss-from-record-bundle branch from 91ffcc2 to 6f10930 Compare April 2, 2026 18:04
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@pauldambra pauldambra requested review from a team, TueHaulund, fasyy612, ksvat and nicowaltz and removed request for a team April 2, 2026 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant