# Chrome’s experimental HTML-in-Canvas API changes again — early adopters must migrate

Chrome 155 revises the experimental HTML-in-Canvas API: WebGL/WebGPU method names, canvas attributes and hit-testing behaviour change, and WebGL callers must pre-allocate texture storage. The origin trial continues through Chrome 160, but the API is not a stable cross-browser standard.

Early HTML-in-Canvas adopters need Chrome-version compatibility checks and a migration for renamed WebGL/WebGPU methods, drawable DOM markup and accessibility geometry; the feature remains an origin trial.

- Status: Active
- Published: 2026-10-13T16:37:35+13:00
- Updated: 2026-10-13T16:37:35+13:00
- Categories: Web Development, JavaScript, Browsers & Web Standards
- Tags: accessibility, Chrome, HTML-in-Canvas, web standards, WebGL, WebGPU
- Canonical HTML: https://beyondthe.news/dossiers/chrome-html-in-canvas-155-origin-trial-api-migration

## What changed

In September 2026, Chrome's HTML-in-Canvas team documented breaking refinements spanning Chrome 150 and 155. In Chrome 150, WebGL texElementImage2D shed redundant arguments and WebGPU copyElementImageToTexture adopted structured dictionaries. In Chrome 155, WebGL changes to texElementSubImage2D and requires explicit destination texture allocation; WebGPU changes to drawElementImageToTexture. The canvas layoutsubtree attribute becomes content="drawable" and independently drawn nested descendants use drawable. For 2D canvases drawElementImage now returns void while hit-testing/focus geometry synchronizes automatically; 3D canvases must use updateElementGeometry explicitly. The origin trial was extended through Chrome 160.

## Why it matters

Developers prototyping accessible game interfaces, charts, creative editors and HTML-in-WebGL/WebGPU overlays face real code breakage between experimental Chrome versions. The revised model aims to keep semantic HTML and accessibility while drawing it into 2D or GPU canvases, but shipping a production dependency on an origin trial carries browser and version risk. Teams should isolate feature detection and preserve conventional DOM or rendering fallbacks.

## Breaking API signatures

Chrome 150 simplifies WebGL texElementImage2D and structures WebGPU copyElementImageToTexture arguments. Chrome 155 replaces those paths with texElementSubImage2D and drawElementImageToTexture respectively. WebGL now requires allocating texture backing storage before uploading DOM-rendered content.

## Markup and nested drawing change

The previous canvas layoutsubtree flag becomes content="drawable". A drawable attribute on descendants marks independently painted subtrees; nested drawable descendants are excluded from their parent snapshot and may be positioned separately.

## Accessibility and pointer geometry

2D drawElementImage no longer returns a transform to be manually copied into element.style.transform; the browser synchronizes DOM hit-testing and accessibility geometry. WebGL/WebGPU cannot infer scene placement and therefore require explicit canvas.updateElementGeometry transforms.

## Trial, compatibility and standards status

Google says the origin trial is extended through Chrome 160 and advises renewing trial tokens. The WICG living explainer documents the new primitives and privacy exclusions. It remains an experimental Chromium implementation, not a generally available interoperable API.

## Key details

- Chrome 150 and 155 introduce distinct incompatible experimental API signatures.
- WebGL: texElementImage2D -> texElementSubImage2D with pre-allocated texture backing.
- WebGPU: copyElementImageToTexture -> drawElementImageToTexture with changed source/destination dictionaries.
- Canvas layoutsubtree becomes content="drawable"; nested drawable descendants are supported.
- 2D hit-testing/focus geometry is automatic; WebGL/WebGPU use updateElementGeometry.
- Origin trial extended through Chrome 160; implementation may change.

## Builder takeaways

- Feature-detect API methods and canvas attributes when supporting multiple Chrome versions.
- Pre-allocate WebGL texture memory before uploading DOM snapshots under the new API.
- Remove legacy 2D transform piping and update 3D hit-testing geometry explicitly.
- Renew origin-trial tokens and maintain fallback paths for other browsers.
- Do not market the experimental feature as a stable cross-browser standard.

## What to watch

- Changes to WICG proposal and Chrome origin-trial milestones through Chrome 160.
- Cross-browser implementation interest, security/privacy review and accessibility test results.
- Further compatibility changes before stable release.

## Uncertainties

- Chrome's experimental API may change again before standardisation or stable release.
- No independently verified broad adoption or production reliability metrics.
- Cross-browser support and stable release dates are not established.

## Sources

- [HTML-in-Canvas updates: Iterating toward a better Web API](https://developer.chrome.com/blog/html-in-canvas-ot-changes) — Chrome for Developers · primary documentation · 2026-09-29T00:00:00+13:00. Official migration matrix, signatures, markup changes, geometry and Chrome 160 origin-trial extension.
- [HTML-in-Canvas WICG living explainer](https://github.com/WICG/html-in-canvas) — Web Incubator Community Group · primary standards proposal. Proposed API, accessibility model, read-back privacy constraints, demos and experimental status.
- [Rename layoutsubtree — WICG issue #169](https://github.com/WICG/html-in-canvas/issues/169) — Web Incubator Community Group · primary standards discussion. Public standards discussion of the canvas attribute rename.

