An open source library of creative, framework-agnostic components drawn on canvas.
Fluid simulations, shader effects, and 3D scenes that run over your live, fully interactive interface. WebGL or WebGPU via vgpu, your choice.
What makes it different
Most components use the experimental
Where it is not supported, components fall back to GPU overlays, so every visitor gets a working page.
Quick start
Add a component with the shadcn CLI (run npx shadcn@latest init first if you have not):
Swap liquid for any component, react for solid, preact, vue, svelte, or vanilla. Source lands in components/canvasui/, yours to edit.
Most components wrap your content. The subtree stays live and interactive; the effect runs on top.
See the
WebGL and WebGPU
Every effect ships in two renderer builds. The WebGL build is the default: raw WebGL2 and GLSL, zero dependencies except three for the object effects. The WebGPU build renders through -webgpu registry suffix:
WebGPU builds ship for all six frameworks. They need a browser with WebGPU, Chrome/Edge 113+, Safari 26+ / iOS 26, or Firefox 141+. If WebGPU is missing, the wrapped content renders unchanged. Details in the
Components
Every component ships for all six frameworks in both renderer builds. Compare them in the
๐ Fluid & motion
๐ฅ Fire & energy
๐ Glass & optics
๐ผ Retro & glitch
โจ Particles & structure
๐ง 3D effects: no flag needed, these work everywhere
Point these at a GLB/glTF model, SVG, or image to render it as a 3D scene.
Browser support
Html-in-canvas needs Chrome with the chrome://flags/#canvas-draw-element flag. An
Use with AI
The registry is
Works with Claude Code, Cursor, VS Code, Codex, and OpenCode. Then just ask: "add the Liquid component from Canvas UI".
Development
This repo holds the library source, the docs site (Next.js 16, Tailwind v4, on Cloudflare Workers), and the registry build.
Each component is plain TypeScript with thin framework wrappers. WebGL builds use raw WebGL2 and GLSL. WebGPU builds use vgpu and WGSL. Nothing depends on another Canvas UI component, and each engine defines its own props.
Contributing
Issues and pull requests welcome. See CONTRIBUTING.md [blocked].
License
MIT + Commons Clause [blocked]. Free in your own projects, commercial or not. The Commons Clause only restricts selling the library itself.
Built by