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.
Enforce logic, keep flexibility
Guide canvas users with permissions and validations.
Production ready starter kit to build a workflow canvas. Building something different?
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.

