Programmatic Control

Event handling

Control every interaction, react to every change.

  • Lifecycle hooks

    Capture create, update, and delete operations before or after they run. Register handlers for specific record types with full state access for optimized decisions.

  • Change prevention

    Stop unwanted operations in their tracks (or transform them into different actions).

  • Automatic reactions

    Trigger cascading actions when records change. Automatically clean up empty containers or sync changes to external systems while preserving history.

  • Source awareness

    Apply different validation rules for local operations or collaborative updates.


Trusted by these companies

  • bigpi
  • Google
  • Replit
  • CADChat
  • Google Stitch
  • Shopify
  • ClickUp
  • Aries
  • Genio
  • Pollination
  • JAM
  • Autodesk
  • Craft
  • Legendkeeper
  • Mobbin
  • Matilda workspace
  • Runway
  • SchoolAI
  • Luma
  • Brisk
  • Padlet
  • AlAI
  • Dirac

Enforce logic, keep flexibility

Guide canvas users with permissions and validations.


Starter kits

Production ready starter kit to build a workflow canvas. Building something different? See all starter kits

Workflow starter kit

Build visual tools where users drag, connect and execute nodes to build automation pipelines within a canvas interface. Set up your first workflow builder in minutes, then customize nodes and behaviors for your specific use case. Drag-and-drop nodes, automatic connection routing, and execution management out of the box.


Zach Blodgett,Staff Product Managerat

"tldraw’s technology enabled us to deliver a high-quality foundation and also develop native functionality ourselves. The technology and team have been great to work with."

ClickUp modernized its whiteboard for millions of users, replacing legacy infrastructure with the tldraw SDK.


Solid engineering

Our team spent years to get all the details right, so you don’t have to.

  • Complete lifecycle management system

    The StoreSideEffects API is the central system for registering handlers that respond to record changes. You can register handlers for create, update, and delete operations on any record type. Each registration returns a cleanup function so you can properly dispose of handlers when no longer needed. The API provides seven distinct handler types to cover every aspect of the record lifecycle.

  • Record type targeting

    Handlers target specific record types like shapes, pages, or bindings with full type safety. When your handler runs, it receives both the record data and source information indicating whether the change came from a local user action, remote multiplayer update, or programmatic API call. This lets you apply different logic based on the context of the change.

  • Operation batching

    Side effects automatically batch into atomic transactions that integrate seamlessly with undo/redo. When multiple changes happen together, they're treated as a single operation from the user's perspective. This handles complex scenarios like cascade deletions and relationship maintenance while preserving the expected undo/redo behaviour users rely on.


examples

See for yourself

Have a look at our examples on how to implement layout management features.

  • Shape constraints

    Build constraints that prevent shapes from moving outside bounds.

  • Time-based permissions

    Implement permissions that change based on shape age or user roles.

  • Auto-cleanup system

    Build systems that automatically clean up empty containers.

Flexible by design

Set rules, trigger reactions, and validations that keep your canvas in check without slowing it down.