Skip to content

[Replay] Manual snapshot results in blank or missing frames in ReplayCanvas #17330

@kerenkhatiwada

Description

@kerenkhatiwada

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/browser

SDK Version

10.1.0

Framework Version

Vanilla JS, Mapbox GL JS WebGL canvas

Link to Sentry event

No response

Reproduction Example/SDK Setup

Snapshot on render

map.on('render', () => {
  const replayIntegration = Sentry.getClient()?.getIntegrationByName('ReplayCanvas');
  if (!replayIntegration) return;
  replayIntegration.snapshot(map.getCanvas());
});

Snapshot on interval

setInterval(() => takeSentryScreenshot(), 1000);

function takeSentryScreenshot() {
  console.log('ask screenshot');
  map.once('render', () => {
    const replayIntegration = Sentry.getClient()?.getIntegrationByName('ReplayCanvas');
    if (!replayIntegration) return;
    replayIntegration.snapshot(map.getCanvas());
  });
  map.triggerRepaint();
}

Steps to Reproduce

Reported via ZD ticket: a user is having trouble using manual snapshots with ReplayCanvas on a WebGL canvas. They've tested two approaches, snapshot on render and snapshot on an interval. The render version results in no visible canvas in the replay, and the interval method results in flickering / missing frames.

Expected Result

Snapshots should capture canvas frames and appear in the replay.

Actual Result

With render: canvas is blank or missing entirely in the replay. With interval: canvas flickers / renders intermittently.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions