> ## Documentation Index
> Fetch the complete documentation index at: https://velt.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Core CRDT Library

> Release Notes of Changes Affecting All CRDT Libraries

### Libraries

* `@veltdev/crdt`
* `@veltdev/crdt-react`

**4.5.9-beta.3**

December 10, 2025

### Improvements

* \[**Core**]: Improved CRDT store initialization by replacing user-based detection with `veltInitState`. Streamlines internal store creation logic.

**4.5.9-beta.1**

December 9, 2025

### Bug Fixes

* \[**Core**]: Fixed multi-tab synchronization for same user. When the same user edits content in multiple tabs, all tabs now sync correctly.

**4.5.8**

November 15, 2025

### Improvements

* \[**Core**]: Released stable version 4.5.8 of all CRDT packages (except BlockNote packages). This version includes Tiptap v3 support and resolves the initialContent issue in tiptap-crdt-react.

**4.5.8-beta.2**

November 11, 2025

### New Features

* \[**Developer Tools**]: Added `window.VeltCrdtStoreMap` global interface to inspect and monitor CRDT stores during development. Access store values directly in the browser console using `VeltCrdtStoreMap.get(id)` or `VeltCrdtStoreMap.getAll()`. Subscribe to store updates and monitor registration events for debugging collaborative data synchronization. [Learn more](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#veltcrdtstoremap)

> [tab] React / Next.js
>
> ```jsx theme={null}
> // Get a specific store
> const storeInstance = window.VeltCrdtStoreMap.get('my-store-id');
> if (storeInstance) {
>   const currentValue = storeInstance.getValue();
>   console.log('Current store value:', currentValue);
>
>   // Subscribe to store changes
>   const unsubscribe = storeInstance.subscribe((newValue) => {
>     console.log('Store updated:', newValue);
>   });
> }
>
> // Get all registered stores
> const allStores = window.VeltCrdtStoreMap.getAll();
> console.log('All stores:', allStores);
>
> // Access the stores map directly
> const storesMap = window.VeltCrdtStoreMap.stores;
> console.log('Stores map:', storesMap);
>
> // Listen for store registration events
> window.addEventListener('veltCrdtStoreRegister', (event) => {
>   console.log('Store registered:', event.detail);
> });
>
> // Listen for store unregistration events
> window.addEventListener('veltCrdtStoreUnregister', (event) => {
>   console.log('Store unregistered:', event.detail);
> });
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <script>
> // Get a specific store
> const storeInstance = window.VeltCrdtStoreMap.get('my-store-id');
> if (storeInstance) {
>   const currentValue = storeInstance.getValue();
>   console.log('Current store value:', currentValue);
>
>   // Subscribe to store changes
>   const unsubscribe = storeInstance.subscribe((newValue) => {
>     console.log('Store updated:', newValue);
>   });
> }
>
> // Get all registered stores
> const allStores = window.VeltCrdtStoreMap.getAll();
> console.log('All stores:', allStores);
>
> // Access the stores map directly
> const storesMap = window.VeltCrdtStoreMap.stores;
> console.log('Stores map:', storesMap);
>
> // Listen for store registration events
> window.addEventListener('veltCrdtStoreRegister', (event) => {
>   console.log('Store registered:', event.detail);
> });
>
> // Listen for store unregistration events
> window.addEventListener('veltCrdtStoreUnregister', (event) => {
>   console.log('Store unregistered:', event.detail);
> });
> </script>
> ```

**4.5.7**

October 31, 2025

### Bug Fixes

* \[**Core**]: Fixed `initialContent` not being applied when no server-side data exists. You can now set initial content in CRDT libraries, and it will be used when the document is empty.

**4.5.1-beta.1**

October 28, 2025

### Bug Fixes

* \[**Core**]: Fixed CRDT synchronization issue affecting document changes in Velt CRDT SDK.

**4.5.0-beta.9**

September 2, 2025

### Bug Fixes

* \[**Core**]: Fixed an issue with where versions were not being saved correctly in some cases.

**4.5.0-beta.8**

August 28, 2025

### Bug Fixes

* \[**Core**]: Fixed an issue where last keystroke was not synced in some cases. Also fixed synchronization issues with React Flow nodes and edges.

**4.5.0-beta.6**

August 8, 2025

### New Features

* \[**Security**]: Enhanced security for CRDTs with a new `encryptionProvider`. This allows you to provide custom encryption and decryption methods to secure your collaborative data.
* See [Custom Encryption](https://velt.dev/docs/realtime-collaboration/crdt/setup/core.md#custom-encryption) for setup instructions.

**4.5.0-beta.4**

July 22, 2025

### New Features

* \[**Core**]: Introduced versioning support for CRDT stores. You can now save snapshots of your collaborative data, list previously saved versions, and restore the store to a specific version. This feature is currently supported for `text` and `array` data types.

**4.5.0-beta.3**

July 16, 2025

### New Features

* \[**Core**]: Introduced our latest CRDT Libraries based on Yjs:
  * `@veltdev/crdt`: Framework-agnostic CRDT stores (array, map, text, xml), versioning, subscriptions, and syncing via the Velt client.
  * `@veltdev/crdt-react`: React Hook wrapper for CRDT integration.
  * `@veltdev/tiptap-crdt`: Purpose built CRDT library for Tiptap Editor to enable multiplayer editing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.