{"id":907587,"date":"2026-09-24T07:50:10","date_gmt":"2026-09-24T07:50:10","guid":{"rendered":"https:\/\/www.newsbeep.com\/ca\/907587\/"},"modified":"2026-09-24T07:50:10","modified_gmt":"2026-09-24T07:50:10","slug":"canvas-ui-ships-35-html-in-canvas-components-that-run-webgl-and-webgpu-effects-over-live-dom","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/ca\/907587\/","title":{"rendered":"Canvas UI Ships 35 HTML-in-Canvas Components That Run WebGL and WebGPU Effects Over Live DOM"},"content":{"rendered":"<p><a href=\"https:\/\/canvasui.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">Canvas UI<\/a>, an open source component library from <a href=\"https:\/\/www.reactbits.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">React Bits<\/a> creator David Haz, has launched as the first library built on the experimental <a href=\"https:\/\/developer.chrome.com\/blog\/html-in-canvas-origin-trial\" rel=\"nofollow noopener\" target=\"_blank\">HTML-in-Canvas API<\/a>, running GPU effects over real, interactive page content.<\/p>\n<p>The library ships <a href=\"https:\/\/canvasui.dev\/components\" rel=\"nofollow noopener\" target=\"_blank\">35 components<\/a>, including pointer-driven fluid, fire, glass lenses, ASCII filters, VHS grain and particle reveals. Every effect has a WebGL build using GLSL and a <a href=\"https:\/\/canvasui.dev\/docs\/rendering\" rel=\"nofollow noopener\" target=\"_blank\">WebGPU build<\/a> using WGSL through <a href=\"https:\/\/vgpu.sh\/\" rel=\"nofollow noopener\" target=\"_blank\">vgpu<\/a>, with wrappers for React, Solid, Preact, Vue, Svelte and dependency-free vanilla TypeScript.<\/p>\n<p>Rather than painting a dead bitmap, most components use Chrome&#8217;s html-in-canvas API to lay out live DOM inside a canvas, capture it with drawElementImage, upload it as a texture and distort it in a shader. Text stays selectable, links stay clickable, and the content stays in the <a href=\"https:\/\/github.com\/WICG\/html-in-canvas\" rel=\"nofollow noopener\" target=\"_blank\">accessibility tree<\/a>. Components are distributed as source through a shadcn-compatible registry rather than as a package:<\/p>\n<p>&#13;<br \/>\nnpx shadcn@latest add @canvas-ui\/liquid-react&#13;<\/p>\n<p>The full experience needs Chrome with the canvas-draw-element flag, or an <a href=\"https:\/\/canvasui.dev\/docs\/installation\" rel=\"nofollow noopener\" target=\"_blank\">origin trial<\/a> token, which runs from Chrome 148 through 150 and is bound to a single domain. Elsewhere, html-in-canvas effects fall back to a plain GPU overlay or render the wrapped content unchanged, and the 3D object components work everywhere.<\/p>\n<p>Because code is copied into the repository, upgrades mean re-running the install command and reconciling local edits. Switching renderers is mostly replacing the installed file with the -webgpu registry item, which adds vgpu and @webgpu\/types. The project also <a href=\"https:\/\/github.com\/DavidHDev\/canvas-ui\/blob\/main\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">documents<\/a> that Chrome 150&#8217;s changes to texElementImage2D and copyElementImageToTexture require no migration, since capture happens through the 2D API and uploads use standard texImage2D or copyExternalImageToTexture.<\/p>\n<p>shadcn called it <a href=\"https:\/\/x.com\/shadcn\/status\/2080259921816220118?s=20\" rel=\"nofollow\">one of the most impressive registries<\/a> they have seen, and the <a href=\"https:\/\/x.com\/ChromiumDev\/status\/2080344080085577968?s=20\" rel=\"nofollow\">Chrome for Developers<\/a> account said it was good to see html-in-canvas empowering new frameworks. Writing a <a href=\"https:\/\/flaviocopes.com\/canvas-ui\/\" rel=\"nofollow noopener\" target=\"_blank\">detailed teardown<\/a>, Flavio Copes praised the unglamorous engineering: the Liquid component stops its loop with IntersectionObserver when off-screen, honours prefers-reduced-motion, and releases textures, programs and listeners on unmount. His advice was to use one strong effect rather than six, and to avoid dashboards, checkout flows and documentation sites.<\/p>\n<p>On <a href=\"https:\/\/news.ycombinator.com\/item?id=48201222\" rel=\"nofollow noopener\" target=\"_blank\">Hacker News<\/a>, one commenter responded to a demo&#8217;s banner with scepticism about a Google-only capability:<\/p>\n<p>&#13;<\/p>\n<p>Use Chrome&#8230; and aren&#8217;t we supposed to reject these technologies that allow Google to Embrace, Extend, Extinguish?<br \/>&#13;<br \/>\nKudos to the artist in spite of this unfortunately esoteric (wish it weren&#8217;t) concern<\/p>\n<p>&#13;<\/p>\n<p>Another user replied:<\/p>\n<p>&#13;<\/p>\n<p>The standardization process requires implementations before standardization. And the most recent comments on the WHATWG issue are from Jake Archibald (Mozilla) and Anne van Kesteren (Apple). This isn&#8217;t a unilateral Google project.<\/p>\n<p>&#13;<\/p>\n<p>Accessibility discussion in the <a href=\"https:\/\/github.com\/WICG\/html-in-canvas\/issues\/11\" rel=\"nofollow noopener\" target=\"_blank\">WICG explainer<\/a> is still open, including how drawable subtrees without updated geometry are exposed.<\/p>\n<p><a href=\"https:\/\/github.com\/paper-design\/shaders\" rel=\"nofollow noopener\" target=\"_blank\">Paper Shaders<\/a> offers zero-dependency canvas shaders installed from npm, but they sit behind or around content as texture. React Bits, from the same author, animates DOM directly. Canvas UI is the only option using the page itself as shader input, which is also why it depends on a feature that Safari and Firefox do not implement.<\/p>\n<p>Licensing is MIT plus the Commons Clause, so commercial use is allowed but reselling the components is not. The <a href=\"https:\/\/github.com\/DavidHDev\/canvas-ui\" rel=\"nofollow noopener\" target=\"_blank\">repository<\/a> has passed 4,600 stars, and the registry is <a href=\"https:\/\/canvasui.dev\/docs\/mcp\" rel=\"nofollow noopener\" target=\"_blank\">MCP-ready<\/a>, letting assistants browse and install components through the shadcn MCP server.<\/p>\n","protected":false},"excerpt":{"rendered":"Canvas UI, an open source component library from React Bits creator David Haz, has launched as the first&hellip;\n","protected":false},"author":2,"featured_media":907588,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[49,48,313568,4113,17541,31277,61,31278,313569],"class_list":["post-907587","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology","tag-ca","tag-canada","tag-canvas-ui-webgl","tag-development","tag-html","tag-javascript","tag-technology","tag-web-development","tag-webgl"],"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/907587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/comments?post=907587"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/907587\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media\/907588"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media?parent=907587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/categories?post=907587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/tags?post=907587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}