July 30, 20269 min read

We Evaluated Every Open-Source Design Canvas. Here Is What We Found.

Free spatial notes

Put this workflow on an infinite canvas instead of another linear doc.

Start in the browser with no account. Create an account only when you want to sync what you made.

Why We Were Looking

We wanted to add a design mode to OmniCanvas — artboards, layers, an inspector, precise vector editing. The kind of thing Figma does.

Building that from scratch is a multi-year project. So the first question was whether an existing open-source canvas engine could be embedded inside our React application to provide it.

We evaluated the serious candidates. Here is the summary, then the detail.

ProjectBest useVerdict
OpenPencilDesign modeBest candidate
ExcalidrawNotes, Whiteboard, SlidesKeep as the existing engine
PenpotA complete standalone design platformToo heavy to embed
tldrawGeneral canvas SDKNot truly open source for production
Apple FreeformWhiteboard UX benchmarkClosed source; study, do not reuse

OpenPencil

The strongest candidate, and it was not close.

What makes it unusually well suited to embedding:

  • MIT licensed, which is the license you want when the thing is going inside a commercial product
  • A framework-independent core package, so the editing engine is not welded to a specific UI framework
  • An SDK explicitly designed for embedding custom editing surfaces, rather than an application that happens to have an API
  • Genuinely deep feature coverage: frames, pages, layers, vector paths, auto layout, components, variables, export, and a degree of Figma file compatibility
  • CanvasKit/Skia rendering with Yoga for layout — a serious, performant foundation

The catch, and it is a real one: the supplied UI SDK is Vue, and OmniCanvas is React. That leaves two options. Mount a small Vue surface inside React, which works but means shipping a second framework and owning the boundary between them. Or build a React adapter over the framework-independent core, which is more work up front and much cleaner afterward.

The second catch: OpenPencil's own roadmap is candid that prototyping, comments, shared libraries, and full Figma fidelity are incomplete. Presentation and whiteboard-style features are not first-class. If you need those, you are building them.

For a design mode specifically — artboards, vectors, layers, precise editing — it is the right foundation. For a general canvas, it is aimed at a different problem than ours.

Penpot

Penpot is more mature than OpenPencil as a complete collaborative design platform. If you want a self-hosted Figma alternative, it is the obvious answer and it is good.

It is also not an embeddable component, and this is an architectural fact rather than a criticism.

Penpot is a ClojureScript frontend backed by a Clojure server, PostgreSQL, WebSockets, and supporting services. Adopting it does not mean adding a dependency. It means operating a second application alongside your own — a different language runtime, a different database, a different deployment and upgrade path, a different on-call surface.

For a small team, that is the decisive consideration. The question is never just "is this software good." It is "what am I now responsible for keeping running at 3am."

Penpot is excellent at what it is. It is not a library.

tldraw

Technically outstanding. Genuinely one of the best canvas engines available, with excellent developer ergonomics and a team that clearly cares about the details.

The blocker is licensing. tldraw's SDK is source-available, not permissively open source. You can read it, you can experiment with it, and commercial production use requires a license.

This is a completely legitimate business model and we have no complaint about it. But "open source" gets used loosely enough that plenty of teams adopt tldraw assuming MIT-style terms and discover otherwise at an inconvenient moment. If you are evaluating canvas libraries, read the license before you read the API docs. It is the faster way to shorten the list.

We had picked up some tldraw dependencies during earlier experimentation. Part of this work was removing the remaining runtime and lockfile references.

Excalidraw

Already our engine, and we kept it.

Excalidraw is the right foundation for Note, Whiteboard, and Slides modes: fast, familiar, permissively licensed, with an element model simple enough to extend and a hand-drawn aesthetic that makes a blank canvas feel inviting rather than intimidating.

What it is not is a precision design tool. No real layer system, no components, no constraints, no auto-layout. That is a deliberate scope choice on their part and the right one for what Excalidraw is for.

We upgraded to 0.18.1 as part of this work.

Apple Freeform

Closed source, so it cannot be a technical candidate. We include it because it is the most useful UX benchmark in the category, and the lesson is worth more than a library would have been.

Freeform supports a boundless canvas with photos, audio, video, PDFs, files, links, drawings, shapes, and stickies. Touch and Apple Pencil first. Real-time collaboration. Effortless device sync.

Its strength is not depth. Figma has vastly more capability. Freeform's strength is approachability — you open it and immediately understand what to do, with no tutorial and no wall of tools.

That distinction shaped our own design. Our Whiteboard mode should feel closer to Freeform than to Figma. The advanced capability belongs in Design mode, where someone has explicitly opted into complexity.

What We Decided

We kept Excalidraw as the single underlying engine for all four modes rather than embedding a second canvas.

The reasoning is about the object model, not the technology. Excalidraw elements and a design tool's document model are structurally different. Any attempt to silently convert content between them produces fidelity loss, and fidelity loss that happens automatically is the worst kind — the user did not ask for it, cannot predict it, and discovers it after the fact.

The right pattern is explicit and user-initiated. A "send to design" action that converts selected material, where the person chose to do it and can see the result. Never an automatic background conversion when someone switches views.

If You Are Making the Same Decision

Four questions, in the order that eliminates candidates fastest:

  1. What is the license, exactly? Source-available is not open source. Check first.
  2. Is it a library or an application? If it brings its own database and services, you are adopting an operational burden, not a dependency.
  3. Does the framework match yours? A framework mismatch is survivable but never free, and the cost is permanent.
  4. Is its roadmap aimed at your problem? A project can be excellent and still be heading somewhere other than where you need to go.

Our answers pointed at OpenPencil as the eventual design foundation and Excalidraw as the everyday engine. Yours may differ. The questions should not.

Try the canvas we actually built — no account required.

30 days free. No credit card required.

Try the Brainstorm Web template in OmniCanvas

Open a local canvas with the Brainstorm Web layout ready to go — no setup or account needed.

Use the Brainstorm Web Template

Start locally, then sign up only to sync — or explore the interactive demo first.