TLRecord

See source code

Union type representing all possible record types in a tldraw store. This includes both persistent records (documents, pages, shapes, assets, bindings) and session/presence records (cameras, instances, pointers, page states), as well as any custom record types added via TLGlobalRecordPropsMap augmentation.

Records are organized by scope: - document: Persisted across sessions (shapes, pages, assets, bindings, documents) - session: Local to current session (cameras, instances, page states) - presence: Ephemeral user presence data (pointers, instance presence)

type TLRecord = TLCustomRecord | TLDefaultRecord;

Example

// Function that works with any record type
function processRecord(record: TLRecord) {
  switch (record.typeName) {
    case "shape":
      console.log(`Shape: ${record.type} at (${record.x}, ${record.y})`);
      break;
    case "page":
      console.log(`Page: ${record.name}`);
      break;
    case "asset":
      console.log(`Asset: ${record.type}`);
      break;
    case "camera":
      console.log(`Camera at (${record.x}, ${record.y}) zoom: ${record.z}`);
      break;
    // ... handle other record types
  }
}

// Get all records from store
const allRecords: TLRecord[] = store.allRecords();

// Filter by record type using type guards
import { isShape, isPage, isAsset } from "@tldraw/tlschema";
const shapes = allRecords.filter(isShape);
const pages = allRecords.filter(isPage);
const assets = allRecords.filter(isAsset);
Prev
TLPresenceStateInfo
Next
TLRichText