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.

