Open Questions & Issues

Auto-synced from WICG/html-in-canvas issues on 2026-04-11 via scripts/sync-spec-docs.mjs.

There are currently 16 open issues on the spec repository. Each heading below links to the upstream discussion — follow the link to read the full thread and leave a comment.

#108: Demos are broken

Author: @joshpoll

Hey! This seems like a really cool project. I’m excited to try it out. However, all the demos linked in the readme are broken with some variation of this error: Uncaught TypeError: canvas.requestPaint is not a function

#107: CSS-in-Canvas: Flexbox layout of canvas renderables

Author: @ShaMan123

I am interested in using CSS abilities as part of canvas rendering. Using CSS flexbox to layout canvas renderables is a need I have encountered a number of times in canvas products (a daunting task). The most common use case is the group object, grouping a number of canvas renderables, acting as the canvas counterpart of a div. Another common use case is …

#96: Need some way to access all canvas elements in a worker

Author: @jakearchibald

If I call requestPaint() on an offscreen canvas, the changedElements on the paint event is going to be empty, which means I can’t update the rendering. Maybe, instead of changedElements, it should just be elements, and a property on them could indicate if they’ve changed or not. This would also allow non-2d cases to avoid updating textures that do…

#95: changedElements should be a map?

Author: @jakearchibald

From the demo: ```js onmessage = ({data}) => {

#94: Hit testing and layer ordering

Author: @jakearchibald

The current API has a somewhat high-level model for resolving hit testing, by giving you a transform that you can apply to your elements that puts them in the correct place. However, this doesn’t cater for layer order, which is obviously an important part of getting hit-testing right. It feels like the high-level model should cater for this somehow.

#88: Lifetime of ElementImage objects

Author: @foolip

@Kaiido asked in https://github.com/WICG/html-in-canvas/pull/84#discussion_r2934398521 about the lifetime of ElementImage objects. For the ElementImage objects themselves, the options are to create new objects every time the “paint” event is fired, or to maintain one ElementImage object for every Element and make it “live”, so that it’s updated in…

#85: Feature request: add removedElements to the paint event

Author: @progers

When granular invalidation is used to only re-draw the parts of the canvas that have changed, it would be convenient to provide a list of removed elements, in addition to the current list of changed elements. Here is an example that works with the current changedElements, but would be much simpler if we added removedElements:

#82: Enumerate new fingeprinting vectors

Author: @Kaiido

There is already a section about privacy, which focuses on the new read-back capabilities. However, the onpaint event also brings new fingerprinting vectors, even without readback, for instance it is now possible to determine the rate of the cursor blinking by appending an <input> element, focus it and then measure at what frequency the onpaint even…

#81: Use case: DOM capture / screenshot library (snapdom)

Author: @tinchox5

I’m the author of snapdom a DOM capture library similar to html2canvas. The library converts DOM elements into images (PNG, JPEG, etc.) for things like screenshots, exports, and thumbnails. Right now snapdom renders through SVG + <foreignObject>, but we’re experimenting with a different path using **`drawElemen…

#79: Feature request: allow effects like backdrop-filter, using the current canvas content as the backdrop root

Author: @progers

Maybe this should work? ```

#77: Surface when cross-origin content has been omitted

Author: @progers

With privacy-preserving painting, we do not draw cross-origin content. It would be helpful to surface when this happens to developers. An exception is too disruptive, and a console warning might be too noisy, but reporting this via the devtools “Issues” tab could be a useful middle ground.

#71: Replace webGL demo with one that is interactive

Author: @progers

The current webGL demo draws the html content multiple times (once for each face of a cube), which cannot support interactivity. We should replace this demo with one that supports interactivity, such as a liquid glass effect.

#48: DOM trees that start with an element of “display: contents” fail to be drawn into the canvas

Author: @itsdouges

Take HTML that looks like this: ```

#47: Blending effects aren’t correctly reflected in the canvas

Author: @itsdouges

From my explorations I’ve noticed that these styles don’t get correctly reflected in the canvas: - mix-blend-mode (seems to be applied twice, something’s going on) - backdrop-filter (not applied at all)

#33: texHTMLElement should be texSubImage2D like, not texImage2D like or both should exist

Author: @greggman

texImage2D both allocates a mip level of a texture AND, optionally copies data into mip level. texSubImage2D only copies data. texSubImage2D is usable with immutable textures (textures created with texStorage2D). texImage2D is not. texStorage2D created textures can use less memory and be more efficient than texImage2D created textures.

#31: Support for animated images or videos?

Author: @MaksymPylypenko

How hard would it be to support animated stuff (eg. gifs, webp, webm, mp4) in the future?