mrkeyoor.com_
Mon 07 Sept 07:14 UTC
Dev Toolsevaluationupdated 07 Sept 2026

tldraw review

tldraw is a source-available React SDK for putting an infinite drawing canvas inside a web application. It supplies the editor, default whiteboard interface, data model, multiplayer sync, and extension points needed to build diagramming, annotation, workflow, or visual AI products.

Verdict

Our tldraw install pulled 3,204 packages and occupied 3,364 MB, then the full build hit 900 seconds and the test run ended with 4 failed files. Use the SDK when its finished editor behavior can save a React team months of canvas work and the production license fits the budget. Choose a smaller or permissively licensed library when you need only node graphs, basic canvas primitives, or a dependency your team can ship without a vendor agreement.

We ran it

Lab card: what happened when we ran tldrawScreenshot of tldraw (tldraw.dev)
Install✓ · 183s3204 packages · 3364 MB
Build✗ timed out · 900s
Tests✗ · 442sran, no count parsed
Repo4510 files~504,337 lines of source · 63.3 MB · 35 CI workflows

Answers from our run

Does tldraw build from source?

Dependencies installed in 183 seconds (3204 packages), and the build failed. We cloned commit e8f61ac into a clean Debian container with 3 CPUs and no project-specific setup.

Do tldraw's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use tldraw?

Organizations that require an OSI-approved dependency or free production rights: the repository license prohibits production use without a trial or separate commercial agreement.

What are the alternatives to tldraw?

Excalidraw, React Flow, Konva. Our tldraw install pulled 3,204 packages and occupied 3,364 MB, then the full build hit 900 seconds and the test run ended with 4 failed files.

Setup2/5Install passed; full build timed out and 4 test files failed
Docs5/5Quick start, SDK references, examples, kits, and release notes
Community4/550,180 stars and current activity, but outside PRs are closed
Maturity4/5v5.4.0 has broad scope; our checkout did not pass all checks

Who it’s for

React teams that need a proven canvas editor instead of writing selection, drawing, camera, and history behavior themselves.
Product developers who need custom shapes, tools, bindings, or interface components around a whiteboard core.
Teams prepared to buy a production license and operate the services their multiplayer design needs.
Builders who want starter kits for collaborative boards, visual workflows, or agents that can modify canvas content.

Who it’s NOT for

Organizations that require an OSI-approved dependency or free production rights: the repository license prohibits production use without a trial or separate commercial agreement.
Vue, Svelte, or server-rendered teams unwilling to carry React in the canvas boundary: the published SDK and quick start are React-based.
Outside developers who expect fixes to land through pull requests: the contributing guide says contributions are not accepted and pull requests are turned off for the public.
Small projects with tight install or CI budgets: our checkout pulled 3,204 packages, used 3,364 MB, timed out during a 900-second build, and ended tests with 4 failed files.
Sync products that cannot tolerate the reported hidden-tab loss case without their own verification: open issue 10679 says queued edits can remain unsent and disappear if the tab unloads.

Setup reality

Our sandbox installed 3,204 packages in 183 seconds and used 3,364 MB. The full build timed out at 900 seconds, although the log tail showed the dotcom client target finishing. Tests exited 1 after 442 seconds: 4 files failed, 472 passed, and 19 were skipped; 8,946 tests passed, 40 were skipped, and 53 remained todo.

A basic React embed needs the package and its CSS, with no hosted credential named in the quick start. Production use requires a tldraw license key. The documented multiplayer starter uses @tldraw/sync with Cloudflare Durable Objects, so deploying that path also means configuring its backend and Cloudflare services.

Repository development requires Node.js ^20.0.0, Corepack, and Yarn. This is a workspace monorepo with 4,510 files, about 504,337 source lines, 35 CI workflow files, no Dockerfile, and no top-level tests directory. The npm quick start is much smaller than building the whole checkout.

One React component contains a full canvas editor

The quick start adds the tldraw package, imports its CSS, and mounts <Tldraw /> inside a sized container. That gives an application pressure-sensitive drawing, text, arrows, snapping, media, zooming, selection, export, undo history, and a finished toolbar. The DOM-based canvas can also display browser content such as videos and embedded sites. For a product team, the appeal is straightforward: the awkward interaction work already exists, and the editor API can drive it from application code.

This is a substantial foundation. Our checkout contained 4,510 files and about 504,337 lines of source before dependencies, spread across monorepo workspaces. tldraw also exposes its own reactive state, records, geometry, store, schema, and user interface packages. That depth supports products well beyond a whiteboard, but it raises the cost of understanding bugs that cross selection, persistence, rendering, and sync. Teams needing only draggable boxes may be happier with React Flow or a lower-level canvas library.

Production use requires a separate license

The code is visible and can be modified, yet the repository license does not grant general production use. It permits internal development, testing, and staging. A deployment serving end users needs a trial key or a separate commercial agreement. The terms also prohibit disabling the key checks and distributing the software as a standalone product. Buyers should send the actual agreement through procurement and legal review before making tldraw central to a product.

What happened when we ran it

Our sandbox installed the Yarn workspace in 183 seconds. It added 3,204 packages and left 3,364 MB on disk, which is far removed from the tiny consumer example in the README. The full repository build did not finish within the 900-second limit. Its final lines showed apps/dotcom/client reporting asset totals and completing one target in 72.45 seconds, followed by a manifest path. That proves one target finished, not that the root build succeeded.

Tests ran for 442 seconds and exited with code 1. The summary listed 4 failed files, 472 passed files, and 19 skipped files out of 495. At test level it reported 8,946 passed, 40 skipped, and 53 todo out of 9,039. The log tail named two mcp-app files that each ran for about 61 seconds, but it did not include the four failure messages. We cannot assign a cause from that excerpt.

The measured checkout at commit e8f61ac was 63.3 MB before installation. It had 35 CI workflow files, workspace metadata, no Dockerfile, and no top-level tests directory. Node 22 in our 3-CPU, 8 GB unprivileged Debian container satisfies the README's Node ^20.0.0 requirement. These results describe full-repository development. A normal application importing the published component has a different job, and our run did not measure that consumer bundle.

Multiplayer is self-hostable through a separate sync stack

tldraw includes @tldraw/sync for real-time collaboration, while the multiplayer starter kit uses Cloudflare Durable Objects, the same broad stack named for tldraw.com. Self-hostable means the application can operate its collaboration service; it does not mean a multiplayer backend appears with the React component. Authentication, room authorization, asset storage, service limits, and recovery policy still belong to the product around it. The README does not claim those application decisions are automatic.

Open issue 10679 is worth reproducing before shipping collaborative work. The report says edits queued while a browser tab is hidden can remain unsent because the client schedules its send through animation frames. If the tab unloads first, the edits can be lost. It was opened on September 4, 2026 and had current discussion when checked. An open report is not a verdict on the whole sync system, but hidden tabs, mobile eviction, and delayed uploads belong in an acceptance test.

Custom shapes and tools are the reason to accept the weight

The SDK lets developers replace or add shapes, tools, bindings, side effects, event hooks, and interface components. The runtime Editor API can select, create, move, or inspect canvas content. Starter kits apply those points to agent-controlled canvases, node workflows, image pipelines, and branching visual chats. This is where tldraw separates itself from a finished whiteboard app: the default UI can be the starting surface rather than the product boundary.

That freedom creates a large compatibility surface. Release v5.4.0 included more than 100 fixes across history, selection, tools, cropping, arrows, sync, persistence, state, and store behavior. The release also deprecated an API and added editor and state methods. Pin the package, read its generated version-specific release notes, and test custom shape migrations before upgrading. The README says packages from 5.1.x onward include DOCS.md and RELEASE_NOTES.md, which is useful when installed code differs from the latest website.

September activity is high while public contributions are closed

The repository was pushed on September 4, 2026, two days after v5.4.0. GitHub listed 459 open issues and 252 open pull requests, a combined queue consistent with a large, busy codebase rather than a bug count. The latest release contains fixes tied to many merged pull requests, and the repository has 35 workflow files. Maintenance is visibly active. The number of moving parts still calls for careful version review, especially when a product extends internal editor behavior.

Community participation has a firm limit. The README and contributing guide say outside contributions are not being accepted, public pull requests are turned off, and users should open issues or link to a fork. That may be fine for a vendor-maintained SDK. It is a poor fit for an engineering team whose adoption policy depends on upstreaming its fixes. tldraw is easiest to recommend when you want its exact editor, accept the commercial boundary, and can isolate it behind your own product tests.

Alternatives

ProjectWhat it isPick it when
Excalidraw gh↗A hand-drawn whiteboard app with an embeddable React component and MIT-licensed code.pick this instead when the sketch aesthetic and permissive licensing matter more than tldraw's lower-level editor APIs.
React FlowA React library focused on node graphs, handles, and connection-based interfaces.pick this instead when the product is a workflow or node editor rather than a general drawing canvas.
KonvaA lower-level 2D canvas framework with bindings for React and other front ends.pick this instead when you want to design the editor behavior yourself and keep the rendering primitive smaller.

What people are saying

  1. [velocity-scout] tldraw/tldraw

Sources

  1. tldraw README
  2. tldraw license
  3. tldraw v5.4.0 release
  4. tldraw contributing guide
  5. Issue 10679: hidden-tab edits can be lost

More dev tools reviews

PowerToys · spacemacs · tabler-icons · darwin-vm · Seelen-UI · sofka · the whole board →