posthog-js icon indicating copy to clipboard operation
posthog-js copied to clipboard

chore: upgrade rrweb to alpha.16

Open daibhin opened this issue 1 year ago â€ĸ 6 comments

Changes

rrweb moved to vite bundling so the patch file will look different this time around

Previous patch file: https://github.com/PostHog/posthog-js/blob/v1.141.4/patches/rrweb%402.0.0-alpha.13.patch


I skipped the patch replacing the inline worker with the base64 worker https://github.com/PostHog/posthog-js/blob/27b044c616efc8adeb6b3d1766ea5a1f25cd4708/patches/rrweb%402.0.0-alpha.13.patch#L5-L164

It looks like the migration to Vite means that the base64 worker is back. From the built rrweb.js file in the /node_modules you can see:

const encodedJs = "KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=";
const decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));
const blob = typeof window !== "undefined" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" });
function WorkerWrapper(options) {
  let objURL;
  try {
    objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
    if (!objURL) throw "";
    const worker = new Worker(objURL, {
      name: options == null ? void 0 : options.name
    });
    worker.addEventListener("error", () => {
      (window.URL || window.webkitURL).revokeObjectURL(objURL);
    });
    return worker;
  } catch (e2) {
    return new Worker(
      "data:text/javascript;base64," + encodedJs,
      {
        name: options == null ? void 0 : options.name
      }
    );
  } finally {
    objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
  }
}

This doesn't make total sense to me because the changes made in https://github.com/rrweb-io/rrweb/pull/1309 have not been undone but I'm happy to proceed here and see if it's needed


All other patches have been replaced with comments inline

daibhin avatar Jun 26 '24 12:06 daibhin

The latest updates on your projects. Learn more about Vercel for Git â†—ī¸Ž

Name Status Preview Updated (UTC)
posthog-js ✅ Ready (Inspect) Visit Preview Oct 22, 2024 10:23am

vercel[bot] avatar Jun 26 '24 12:06 vercel[bot]

Size Change: +68.6 kB (+2.43%)

Total Size: 2.89 MB

Filename Size Change
dist/all-external-dependencies.js 182 kB +9.79 kB (+5.7%) 🔍
dist/array.full.js 334 kB +9.79 kB (+3.02%)
dist/array.full.no-external.js 333 kB +9.79 kB (+3.03%)
dist/module.full.js 334 kB +9.81 kB (+3.02%)
dist/module.full.no-external.js 333 kB +9.81 kB (+3.03%)
dist/recorder-v2.js 102 kB +9.81 kB (+10.59%) âš ī¸
dist/recorder.js 103 kB +9.81 kB (+10.58%) âš ī¸
â„šī¸ View Unchanged
Filename Size
dist/array.full.es5.js 248 kB
dist/array.js 155 kB
dist/array.no-external.js 154 kB
dist/exception-autocapture.js 8.75 kB
dist/external-scripts-loader.js 2.19 kB
dist/main.js 156 kB
dist/module.js 155 kB
dist/module.no-external.js 154 kB
dist/surveys-preview.js 56.7 kB
dist/surveys.js 62.1 kB
dist/tracing-headers.js 1.33 kB
dist/web-vitals.js 10.3 kB

compressed-size-action

github-actions[bot] avatar Jun 26 '24 12:06 github-actions[bot]

Size Change: -268 kB (-25.73%) 🎉

Total Size: 775 kB

Filename Size Change dist/array.full.js 157 kB -88.8 kB (-36.07%) 🎉 dist/recorder-v2.js 18.9 kB -89.8 kB (-82.63%) 🏆 dist/recorder.js 18.9 kB -89.8 kB (-82.63%) 🏆 â„šī¸ View Unchanged compressed-size-action

damn... i like it

marandaneto avatar Jun 26 '24 13:06 marandaneto

that's such a big change it makes you worry it's broken đŸ¤Ŗ đŸ¤Ŗ

pauldambra avatar Jun 26 '24 13:06 pauldambra

I believe the size gains were over reported... things in fact did not work

@pauldambra this might need another 👀 because I had do do some weird build fangling to get things working again

daibhin avatar Jun 27 '24 12:06 daibhin

dist/recorder-v2.js 122 kB +11.5 kB (+10.45%) âš ī¸ dist/recorder.js 122 kB +11.5 kB (+10.45%) âš ī¸

Not good :/ Seems to be pulling in more of rrweb. @pauldambra any ideas what might be causing this?

daibhin avatar Jul 04 '24 13:07 daibhin

hmmm, the array.js now has Array.from in it, which isn't in IE11 🤔

pauldambra avatar Jul 08 '24 08:07 pauldambra

hmmm, main has that too

pauldambra avatar Jul 08 '24 08:07 pauldambra

@pauldambra I recalled something about Array.from and thought rrweb had a custom implementation. It's actually just a redeclaration that very much relies on it existing already

daibhin avatar Jul 08 '24 08:07 daibhin

This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, post a comment or remove the stale label – otherwise this will be closed in another week.

posthog-bot avatar Jul 16 '24 09:07 posthog-bot

This PR was closed due to lack of activity. Feel free to reopen if it's still relevant.

posthog-bot avatar Jul 24 '24 09:07 posthog-bot

This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, post a comment or remove the stale label – otherwise this will be closed in another week.

posthog-bot avatar Aug 08 '24 09:08 posthog-bot

This PR was closed due to lack of activity. Feel free to reopen if it's still relevant.

posthog-bot avatar Aug 16 '24 09:08 posthog-bot

Tested and confirmed that alpha.16 was running:

Screenshot 2024-10-14 at 18 23 20

Recordings seemed to work and specifically checked canvas elements canvas

daibhin avatar Oct 14 '24 17:10 daibhin

tested this locally and got

Screenshot 2024-10-17 at 22 00 13

pauldambra avatar Oct 17 '24 21:10 pauldambra

@pauldambra after many rounds of the Yalc dance I think I've managed to fix this (tldr patches are haard, one small mistake and the whole things blows up). Might be worth running it again so that you're happy with things.

Could ship today if everything looks good :)

daibhin avatar Oct 22 '24 10:10 daibhin