Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Writing examples for the tldraw SDK examples app. Use when creating new examples, adding SDK demonstrations, or writing example code in apps/examples.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 60% | 0% |
The examples project (apps/examples) contains minimal demonstrations of how to use the tldraw SDK. Examples are embedded on the docs site and deployed to examples.tldraw.com.
Standards for examples in apps/examples/src/examples.
Each example lives in its own folder:
apps/examples/src/examples/
└── my-example/
├── README.md # Required metadata
├── MyExampleExample.tsx # Main example file
└── my-example.css # Optional stylescustom-canvas, button-demo, magical-wandRequired frontmatter format:
md--- title: Example title component: ./ExampleFile.tsx category: category-id priority: 1 keywords: [keyword1, keyword2] --- One-line summary of what this example demonstrates. --- Detailed explanation of the example. Include code snippets here if they help explain concepts not obvious from the example code itself.
| Field | Description | | --------- | ------------------------------------------------ | | title | Sentence case, corresponds to folder name | | component | Relative path to example file | | category | One of the valid category IDs (see below) | | priority | Display order within category (lower = higher) | | keywords | Search terms (avoid obvious terms like "tldraw") |
getting-started, configuration, editor-api, ui, layout, events, shapes/tools, collaboration, data/assets, use-cases
CustomCanvasExample.tsx, ButtonExample.tsxtsximport { Tldraw } from 'tldraw' import 'tldraw/tldraw.css' export default function MyExampleExample() { return ( <div className="tldraw__editor"> <Tldraw /> </div> ) }
Requirements:
tldraw__editor class for full-page examplestldraw/tldraw.css for styles<div className="tldraw__editor">my-example.cssimport './my-example.css'style propFor examples that need buttons or controls, use the TopPanel component slot with TldrawUiButton:
tsximport { Tldraw, TldrawUiButton, useEditor } from 'tldraw' import 'tldraw/tldraw.css' import './my-example.css' function MyControls() { const editor = useEditor() return ( <div className="tlui-menu my-controls"> <TldrawUiButton type="normal" onClick={() => editor.zoomIn()}> Zoom in </TldrawUiButton> <TldrawUiButton type="normal" onClick={() => editor.zoomOut()}> Zoom out </TldrawUiButton> </div> ) } export default function MyExampleExample() { return ( <div className="tldraw__editor"> <Tldraw components={{ TopPanel: MyControls }} /> </div> ) }
CSS for control panels:
css.my-controls { display: flex; flex-wrap: wrap; margin: 8px; }
Use footnote format with numbered references:
tsximport { Tldraw, type TLComponents } from 'tldraw' import 'tldraw/tldraw.css' // [1] const components: TLComponents = { PageMenu: null, } export default function CustomComponentsExample() { return ( <div className="tldraw__editor"> {/* [2] */} <Tldraw components={components} /> </div> ) } /* [1] Define component overrides outside the React component so they're static. If defined inside, use useMemo to prevent recreation on every render. [2] Pass component overrides via the components prop. */
use-casesInput.tsxOther measured skills in the registry, with their headline benchmark lift.