|
|
||
|---|---|---|
| .. | ||
| AutomergeToTLStore.ts | ||
| CloudflareAdapter.ts | ||
| MinimalSanitization.ts | ||
| README.md | ||
| TLStoreToAutomerge.ts | ||
| default_store.ts | ||
| index.ts | ||
| useAutomergeStoreV2.ts | ||
| useAutomergeSync.ts | ||
| useAutomergeSyncRepo.ts | ||
README.md
Automerge Integration for TLdraw
This directory contains the Automerge-based sync implementation that replaces the TLdraw sync system.
Files
AutomergeToTLStore.ts- Converts Automerge patches to TLdraw store updatesTLStoreToAutomerge.ts- Converts TLdraw store changes to Automerge document updatesuseAutomergeStoreV2.ts- Core React hook for managing Automerge document state with TLdrawuseAutomergeSync.ts- Main sync hook that replacesuseSyncfrom TLdraw (uses V2 internally)CloudflareAdapter.ts- Adapter for Cloudflare Durable Objects and R2 storagedefault_store.ts- Default TLdraw store structure for new documentsindex.ts- Main exports
Benefits over TLdraw Sync
- Better Conflict Resolution: Automerge's CRDT nature handles concurrent edits more elegantly
- Offline-First: Works seamlessly offline and syncs when reconnected
- Smaller Sync Payloads: Only sends changes (patches) rather than full state
- Cross-Session Persistence: Better handling of data across different devices/sessions
- Automatic Merging: No manual conflict resolution needed
Usage
Replace the TLdraw sync import:
// Old
import { useSync } from "@tldraw/sync"
// New
import { useAutomergeSync } from "@/automerge/useAutomergeSync"
The API is identical, so no other changes are needed in your components.
Cloudflare Integration
The system uses:
- Durable Objects: For real-time WebSocket connections and document state management
- R2 Storage: For persistent document storage
- Automerge Network Adapter: Custom adapter for Cloudflare's infrastructure
Migration
To switch from TLdraw sync to Automerge sync:
- Update the Board component to use
useAutomergeSync - Deploy the new worker with Automerge Durable Object
- Update the URI to use
/automerge/connect/instead of/connect/
The migration is backward compatible - existing TLdraw sync will continue to work while you test the new system.