I kept hitting the same wall. React Flow is headless and styleless (great) — but it renders to the DOM and gets sluggish past a couple thousand nodes. tldraw and Excalidraw render to a canvas and stay fast, but you take their UI and their look, or you fight it.
canvas-harness is the missing corner: a canvas-rendered node-graph library for React that's also headless and styleless. 10k nodes pan at ~80fps on an M1, and it ships no UI and no styles — every color, font, and node type is yours.
It's the engine I pulled out of dim0.net (an AI thinking canvas), so it's already running a real product. Comes with undo/redo, a spatial index, an AI context export, and a typed op log for collab — out of the box.
MIT, TypeScript-first.
Built with