Shared collaborative state for Redux

Liveblocks empowers developers to embed performant collaborative features to any product in just days.

Companies of all sizes and industries use Liveblocks
Presence

Show who’s in a document

Liveblocks Presence enables you to add things like live avatars and cursors to you product.

import { createStore } from "redux";import { createClient } from "@liveblocks/client";import { enhancer } from "@liveblocks/redux";
const client = createClient({ /* ... */ });
const initialState = { cursor: { x: 0, y: 0 }}
const store = createStore( (state = initialState, action) => { /* ... */ }, enhancer({ client, // cursor is shared to other users in the room presenceMapping: { cursor: true } }));
// Get others people in the roomconst others = store.getState().liveblocks.others;
// And get their cursorsconst othersCursors = others .map(user => user.presence?.cursor);
Document

Data stores for collaborative editors

Liveblocks Document is a set of persisted data stores optimized for real-time collaborative documents.

import { createStore } from "redux";import { createClient } from "@liveblocks/client";import { enhancer } from "@liveblocks/redux";
const client = createClient({ /* ... */ });
const initialState = { scientist: { firstName: "Ada", lastName: "Lovelace" }}
export const store = createStore( (state = initialState, action) => { /* ... */ }, // Enhance your store and controls which parts // of your states are synced and persisted enhancer({ client, // scientist is synced across clients storageMapping: { scientist: true } }));

Start making your product collaborative with the Liveblocks toolkit today