TLRecord
See source codeUnion 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).
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 =
| TLAsset
| TLBinding
| TLCamera
| TLDocument
| TLInstance
| TLInstancePageState
| TLInstancePresence
| TLPage
| TLPointer
| TLShape
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 { isAsset, isPage, isShape } from '@tldraw/tlschema'
const shapes = allRecords.filter(isShape)
const pages = allRecords.filter(isPage)
const assets = allRecords.filter(isAsset)
Prev
TLPresenceStateInfoNext
TLRichText