Introduction
Use these guides to add Yjs-based CRDT to your project with Velt. Pick the React Hook wrapper for the fastest integration in React apps, or the core library for other frameworks and custom implementations.Setup
Step 1: Install Dependencies
- React / Next.js
- Other Frameworks
npm:yarn:
Step 2: Initialize Velt in your app
Initialize the Velt client by following the Velt Setup Docs. This is required for the collaboration engine to work.Step 3: Initialize a CRDT store
- React / Next.js
- Other Frameworks
Step 4: Set or update the store value
Set or update local changes to the store.- React / Next.js
- Other Frameworks
Step 5: Listen for changes
Listen and subscribe for updates from local and remote peers.- React / Next.js
- Other Frameworks
Step 6: Save and restore versions
Create checkpoints and roll back when needed.- React / Next.js
- Other Frameworks
APIs
Custom Encryption
Encrypt CRDT data before it’s stored in Velt by registering a custom encryption provider. For CRDT methods, input data is of typeUint8Array | number[].
- React / Next.js
- Other Frameworks
Core
Initialization
- React / Next.js
- Other Frameworks
useVeltCrdtStore
React hook to create and sync a collaborative CRDT store.- Params: useveltcrdtstore
id: Unique identifier for the store.type: Type of Yjs data structure ('text'|'array'|'map'|'xml').initialValue: Optional initial value for the store.debounceMs: Optional debounce time for update propagation (ms).enablePresence: Optional boolean to enable realtime presence tracking (default:true).
- Returns: Store properties and methods
update
Update the store value and sync to peers.- Params:
newValue: T - Returns:
void
getValue
Access the current store value.Get one-time current value
- React / Next.js
- Other Frameworks
Subscribe to value changes
Listen for updates from local and remote peers.- React / Next.js
- Other Frameworks
Use
useEffect with the reactive value property for automatic updates, or use store.subscribe() for manual subscriptions.store
Access the underlying Velt Store instance for advanced operations.- React / Next.js
- Other Frameworks
The underlying store instance returned by the hook.
- Type:
Store<T> | null
destroy
Clean up resources when done with the store.- React / Next.js
- Other Frameworks
Cleanup is handled automatically by the hook when the component unmounts. No manual cleanup is required.
Versions
saveVersion
Save a snapshot of the current state as a named version.- Params:
versionName: string - Returns:
Promise<string>
- React / Next.js
- Other Frameworks
getVersions
Fetch all saved versions.- Returns:
Promise<Version[]>
- React / Next.js
- Other Frameworks
Reactive property:Async method:
getVersionById
Fetch a specific version by ID.- Params:
versionId: string - Returns:
Promise<Version | null>
- React / Next.js
- Other Frameworks
setStateFromVersion
Restore the store state from a specific version object.- Params:
version: Version - Returns:
Promise<void>
- React / Next.js
- Other Frameworks
restoreVersion
Restore the store to a specific version using its ID.- React / Next.js
- Other Frameworks
Convenience method that fetches and restores a version in one call.
- Params:
versionId: string - Returns:
Promise<boolean>
Yjs
getDoc
Get the underlying Yjs document.- Returns:
Y.Doc
getProvider
Get the provider instance for the store.- Returns:
Provider
getText
Get the Y.Text instance if store type is ‘text’.- Returns:
Y.Text | null
getXml
Get the Y.XmlFragment instance if store type is ‘xml’.- Returns:
Y.XmlFragment | null
Debugging
Use the Velt Chrome Extension or thewindow.VeltCrdtStoreMap debugging interface to inspect and monitor your CRDT stores.
window.VeltCrdtStoreMap
window.VeltCrdtStoreMap is a global debugging interface that exposes all active CRDT stores in your application. It’s automatically created and maintained by the Velt CRDT library, allowing you to inspect, monitor, and debug CRDT stores from the browser console or developer tools.
get()
Get a store by its ID.- Params:
id(optional): Store ID. If omitted, returns the first registered store.
- Returns:
VeltCrdtStore | undefined- Store instance or undefined if not found- Store object methods:
getValue(): Get the current value from the storesubscribe(callback: (value: any) => void): Subscribe to changes in the store. Returns an unsubscribe function.
- Store object methods:
- Basic Usage
- Inspect Store
getAll()
Get all registered stores as an object.- Returns:
{ [id: string]: VeltCrdtStore }- Object mapping store IDs to store instances- Each store object provides:
getValue(): Get the current value from the storesubscribe(callback: (value: any) => void): Subscribe to changes in the store. Returns an unsubscribe function.
- Each store object provides:
- Basic Usage
- Find Stores
- Monitor All Stores
Events
The library dispatches custom events when stores are registered or unregistered.veltCrdtStoreRegister
Fired when a new store is registered.- Event Detail:
{ id: string }- Store ID
veltCrdtStoreUnregister
Fired when a store is unregistered (destroyed).- Event Detail:
{ id: string }- Store ID

