/claim #6775

Description

This PR fixes the performance issue where canvas snapshotting on Safari takes >20ms, leading to significant frame drops in session recordings.

Technical Implementation

The core issue is that Safari 16.x has a blocking/poorly performing implementation of createImageBitmap when the resizeWidth/Height parameters are used.

To solve this, I’ve implemented a manual resizing pipeline in CanvasManager:

  1. Instead of using resizeWidth/Height in createImageBitmap, we now use a temporary OffscreenCanvas (or a standard canvas as a fallback).
  2. We draw the source canvas into the target-sized temporary canvas using drawImage with imageSmoothingEnabled: true.
  3. We then call createImageBitmap on the already-resized temporary canvas without any resizing parameters.

This bypasses the blocking behavior in WebKit and restores performance to <1ms levels, matching Chrome’s behavior.

Files Modified

  • rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.ts: Source logic for the rrweb submodule.
  • __generated/rr/rrweb/rr.js: Updated the bundled JS to ensure the fix is immediately active in the highlight frontend.

Claim

Total prize pool $300
Total paid $0
Status Pending
Submitted February 20, 2026
Last updated February 20, 2026

Contributors

I2

i2you

@i2you

100%

Sponsors

HI

Highlight (YC W23)

@highlight

$300