Skip to content

Canvas recording enabled, but rrweb emits zero canvas mutations (posthog-js 1.428.6) #4968

Description

@artur-hakobyan

Bug Description

Project 268554 (EU Cloud), posthog-js 1.428.6, site: hookscreener.com

"Capture canvas elements" is ON and the remote config confirms it in the page:
{"recordCanvas": true, "canvasFps": 3, "canvasQuality": "0.4",
"recorderVersion": "v2", "scriptConfig": {"script": "posthog-recorder"}}

But every replay shows canvas areas blank.

Running rrweb directly on the page with recordCanvas:true gives ZERO canvas
mutations (type:3, source:9) while DOM mutations are captured normally:

{ total: 48, canvas: 0, bySource: { "0": 18 } }

At the same time the canvases are in the DOM, visible, and non-empty —
toDataURL("image/webp",0.4) returns 15,000–27,000 bytes for each of 11
.bkv__canvas elements.

CONTROL TEST: a brand-new plain 2D canvas, appended to the DOM and drawn to
40 times WHILE recording was running, also produced zero canvas events:

{ total: 34, canvasEvents: 0 }

So this is not specific to our rendering.

Already ruled out: SDK version (1.428.6 >> 1.105.7), project setting, a stale
config cache on our proxy (now no-store, verified), WebGL (we use 2d only),
recording being off (DOM events arrive, "[SessionRecording] starting" logs).

Is this PR PostHog/posthog#93133 ("apply later attribute mutations to the canvas replacement
image")? Its description matches our symptom exactly — "content can stay
invisible for a whole replay, even though the pixels were captured". Our
canvases do mutate width/height after creation on resize/zoom.

If so, is there an ETA for EU Cloud? Note PostHog/posthog#93133 explains blank PLAYBACK but
not the control test above, where no canvas events were emitted at RECORDING
time — possibly two separate issues.

Debug info

- [ ] PostHog Cloud, region and project ID: [please provide, you can find both at https://app.posthog.com/settings/project-details#variables]
- [ ] PostHog Hobby self-hosted with `docker compose`, version/commit: [please provide]
- [ ] PostHog self-hosted with Kubernetes (deprecated, see [`Sunsetting Kubernetes support`](https://posthog.com/blog/sunsetting-helm-support-posthog)), version/commit: [please provide]

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfeature/replayjavascriptPull requests that update javascript code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions