Skip to content

Release history

liveblocks releases

Realtime infrastructure for multiplayer apps and agents

All releases

27 shown

No immediate action
v3.19.4 Breaking risk

Push order + delete handling fixes

No immediate action
v3.19.3 Bugfix

Disconnect fixes

No immediate action
v3.19.2 Bug fix

Background keep‑alive fix

No immediate action
v3.19.1 New feature

Newer model support

v3.19.0 Mixed patches CVE-2025-31125
Notable features
  • @liveblocks/node: markdownToCommentBody helper added
  • @liveblocks/client: room.history.disable now stable
Full changelog

@liveblocks/node

  • Add new markdownToCommentBody helper to convert Markdown strings into
    CommentBody objects.

@liveblocks/client

  • room.history.disable(fn) is now officially supported and no longer
    experimental. It allows running storage mutations without them appearing on
    the undo/redo stacks and it’s intended for background/async writes (e.g.
    writing back AI generation results) that should not be undoable.

@liveblocks/react-tiptap

  • Fix keyboard shortcut in strikethrough tooltip. (Thanks @HellBoy-OP for the
    contribution!)
  • Fix Yjs undo/redo silently breaking after editor.registerPlugin /
    unregisterPlugin is called (e.g. when Tiptap's BubbleMenu, DragHandle,
    or SlashCommand mount). The reattach restore() is now installed
    unconditionally on view destroy, matching upstream
    @tiptap/extension-collaboration. (Thanks @lucasmotta for the contribution!)
v3.18.5 Feature
Notable features
  • Support for overlapping comment marks in AnchoredThreads and FloatingThreads
Full changelog

@liveblocks/react-tiptap

  • Support overlapping comment marks, they now all appear in the
    AnchoredThreads and FloatingThreads components.
v3.18.4 Maintenance

### `@liveblocks/emails` - Mark `yjs` and `y-prosemirror` as required peer dependencies.

Changelog

@liveblocks/emails

  • Mark yjs and y-prosemirror as required peer dependencies.
v3.18.3 Breaking risk
⚠ Upgrade required
  • Install yjs, @tiptap, and @blocknote as explicit dependencies if your project uses them
Breaking changes
  • yjs, @tiptap/*, and @blocknote/* moved from bundled to peer dependencies — projects must explicitly install these libraries
Full changelog

@liveblocks/*

  • Third-party libraries like yjs, @tiptap/*, and @blocknote/* are now declared as peer dependencies instead of bundled dependencies across all packages that use them.
v3.18.2 Mixed
Notable features
  • Experimental `room.history.disable(fn)` API for excluding storage mutations from undo/redo stacks, intended for background/async writes
  • Fixed `ToJson` type losing specific value types for `Record` storage fields
Full changelog

@liveblocks/client

  • New experimental room.history.disable(fn) API that allows running storage mutations without them appearing on the undo/redo stacks. Intended for background/async writes (e.g. writing back AI generation results) that should not be undoable.
  • Fix ToJson type losing specific value types for Record<string, T> fields in Storage
v3.18.1 New feature
Notable features
  • Mentions suggestions now appear after punctuation (!, ., () and emojis
Full changelog

@liveblocks/react-ui

  • Mentions suggestions now appear in more cases after typing @:
    • After punctuation like !, ., (, etc. (e.g. Hello!@,
      cc: the other team (@)
    • After emojis (e.g. Hello 👋@)
v3.18.0 Breaking risk
Breaking changes
  • useStorage now returns plain objects for LiveMap values instead of Map instances
  • Legacy APIs removed: .toImmutable(), .toObject(), .toArray()
Notable features
  • New .toJSON() method on all Live structures for JSON-compatible snapshots
  • LiveObject.from(obj) creates Live structures from plain JSON recursively
  • New @liveblocks/react-flow/node package for server-side mutations
v3.17.0 New feature
Notable features
  • New @liveblocks/react-flow package with useLiveblocksFlow hook for synced collaborative diagrams
  • Cursors component displays other users' cursors in React Flow diagrams
  • Customizable cursors via components={{ Cursor: MyCursor }} prop in Cursors component
Full changelog

@liveblocks/react-flow

  • Introduce the package. Install with npm install @liveblocks/react-flow.
    Provides hooks and components that add collaboration to any React Flow diagram
    using Liveblocks Storage:
    • Use the useLiveblocksFlow hook to make React Flow synced and
      collaborative.
    • Use the Cursors component to show other users' cursors inside React Flow.

@liveblocks/react-ui

  • Allow customizing cursors in the Cursors component by passing a
    components={{ Cursor: MyCursor }} prop.
v3.16.0 New feature
Notable features
  • Room-scoped feeds with metadata and messages across React, Node, and Python SDKs
  • Chat SDK adapter backed by Liveblocks Comments with webhooks and message management
  • Comment component body prop for custom rich-text rendering
Full changelog

@liveblocks/chat-sdk-adapter

  • Introduce the package. Install with
    npm install @liveblocks/chat-sdk-adapter. Provides a
    chat-sdk-compatible backend adapter
    backed by Liveblocks Comments: webhooks, posting and editing messages,
    reactions, paginated fetches, thread and channel helpers, and optional
    resolveUsers / resolveGroupsInfo hooks.

@liveblocks/react

  • Add Feeds hooks: useFeeds, useFeedMessages, useCreateFeed,
    useDeleteFeed, useUpdateFeedMetadata, useCreateFeedMessage,
    useDeleteFeedMessage, and useUpdateFeedMessage.

@liveblocks/node

  • Add REST client methods for Feeds: getFeeds, getFeed, createFeed,
    updateFeed, deleteFeed, getFeedMessages, createFeedMessage,
    updateFeedMessage, and deleteFeedMessage.

Python SDK

  • Add Feeds REST API support on the sync and async clients (get_feeds,
    get_feed, create_feed, update_feed, delete_feed, get_feed_messages,
    create_feed_message, update_feed_message, delete_feed_message) with
    matching request/response models.

@liveblocks/client

  • Add Feeds: room-scoped feeds with metadata and messages and APIs to list,
    create, update, and delete feeds and messages (fetchFeeds,
    fetchFeedMessages, addFeed, updateFeed, deleteFeed, addFeedMessage,
    updateFeedMessage, deleteFeedMessage).

@liveblocks/react-ui

  • Add body prop to Comment to allow overriding only the default rich-text
    comment body while still keeping attachments, reactions, and
    additionalContent as is, unlike when using the children prop.
  • Fix AvatarStack negative margin breaking alignment.
v3.15.5 Bug fix

Fixed Python SDK request body validation where required fields were incorrectly marked as optional.

v3.15.4 New feature
Notable features
  • Liveblocks.getAttachment() method in Node.js SDK to retrieve attachment metadata and presigned download URLs
  • get_attachment() method in Python SDK to retrieve attachment metadata and presigned download URLs
Full changelog

@liveblocks/node

  • Add Liveblocks.getAttachment() method to get an attachment's metadata and a
    presigned download URL.

Python SDK

  • Add get_attachment() method to get an attachment's metadata and a presigned
    download URL.
v3.15.3 New feature
Notable features
  • Python SDK with sync and async clients for rooms, storage, threads, and comments APIs
  • Thread component showSubscription prop to control subscription status display
Full changelog

Python SDK

  • Introduce the Python package. Install with pip install liveblocks. Provides
    sync and async clients for the full Liveblocks API (rooms, storage, threads,
    comments, etc.) for backend use.

@liveblocks/react-ui

  • Add showSubscription prop to Thread to control whether to show the
    thread’s subscription status.
v3.15.2 Maintenance

Deprecated engine option in @liveblocks/client, @liveblocks/react, and @liveblocks/node.

v3.15.0 Breaking risk
Breaking changes
  • @liveblocks/react-blocknote now requires BlockNote v0.43.0 or later
Notable features
  • Thread and Comment components now support extensive customization via components prop and additional props (children, additionalContent, avatar, author, date)
  • createRoomContext() now creates isolated contexts, allowing independent room contexts and RoomProvider components to be nested
  • Inline components in components props are now kept stable to prevent unnecessary re-mounting
Full changelog

@liveblocks/react-ui

  • Add various new ways to customize Thread and Comment:
    • Comments in Thread can now be overridden or customized via the
      components prop.
    • New parts of Comment (content, avatar, author, and date) can now be
      overridden or customized via the children, additionalContent, avatar,
      author, and date props.
  • Fix commentDropdownItems prop on Thread not working as expected in some
    cases.

@liveblocks/react

  • Each createRoomContext() invocation now creates its own isolated context to
    allow nesting independent room contexts and their RoomProvider components.

@liveblocks/react-blocknote

  • Support newer BlockNote versions and bump the minimum required version to
    v0.43.0. (Thanks @nperez0111 for the contribution!)

@liveblocks/react-ui, @liveblocks/react-tiptap, and @liveblocks/react-lexical

  • Improve how inline components passed to components={{ ... }} props are
    handled by keeping them stable instead of re-mounting them on every render.
  • Move @radix-ui/* dependencies to the radix-ui mono package.
v3.14.1 Bug fix

Fixed paginated hooks stopping pagination after first fetchMore() call in auto-pagination.

v3.14.0 Breaking risk
⚠ Upgrade required
  • tenantId parameter deprecated in @liveblocks/node client methods — use organizationId instead
  • Storage engine remains version 1 by default; engine cannot be changed after room creation
Breaking changes
  • Removed largeMessageStrategy client option from @liveblocks/client; WebSocket message limit increased from 1 MB to 32 MB
Notable features
  • New storage engine v2 support (opt-in per room with engine: 2) — larger documents, better performance, more stable
  • New baseUrl config option in createClient() for connecting to Liveblocks dev server
  • New .setPresence() REST API method in @liveblocks/node for setting ephemeral user presence
Full changelog

This release adds support for opting-in to the new storage engine on a per-room basis. The new storage engine can support larger documents, is more performant, is considered more stable, and will eventually become our default engine for all new rooms in the future.

As of this release, the default storage engine still remains engine version 1.

To give it a try, simply pass engine: 2 when entering a new room. After a room is created, you cannot change the engine it was created with anymore.

For example:

// Vanilla JS
client.enterRoom("my-new-room", { engine: 2 });

or:

// In React
<RoomProvider id="my-new-room" engine={2}>
  ...
</RoomProvider>

@liveblocks/client

  • Support for selecting the preferred engine when entering new rooms: client.enterRoom("my-new-room", { engine: 2 })
  • Internal protocol optimizations to support larger storage documents
  • Add new config option createClient({ baseUrl: "https://..." }) to allow connecting to the Liveblocks dev server
  • Improve LiveList performance when processing large batches of operations
  • Improve LiveList.push() efficiency to prevent unbounded position string growth over time
  • Fix crash when clearing documents with a large number of keys
  • Remove the largeMessageStrategy client option. The WebSocket message limit has been increased from 1 MB to 32 MB, making this setting obsolete.

@liveblocks/react

  • Support for selecting the preferred engine when entering new rooms: <RoomProvider id="my-new-room" engine={2}>...</RoomProvider>
  • Add new config option <LiveblocksProvider baseUrl="https://..." /> to allow connecting to the Liveblocks dev server
  • Exclude marking a thread or inbox notification as read from blocking navigation when preventUnsavedChanges is enabled.

@liveblocks/react-tiptap and @liveblocks/react-lexical

  • Portaled elements now respect the portalContainer option from @liveblocks/react-ui’s LiveblocksUiConfig instead of always using document.body.

@liveblocks/zustand and @liveblocks/redux

  • Support for selecting the preferred engine when entering new rooms: enterRoom("my-new-room", { engine: 2 })

@liveblocks/node

  • Add new .setPresence() method to set ephemeral presence for a user in a room via the REST API, without requiring a WebSocket connection
  • Deprecated tenantId parameter in client methods, use organizationId instead.
v3.13.5 Bug fix

Fixed plugin key conflict in Blocknote by replacing y-tiptap with y-prosemirror

v3.13.2 New feature
Notable features
  • Add alwaysUseKnowledge option to control when copilots retrieve uploaded knowledge sources
v3.13.1 Bug fix

Fixed storage subscriptions failing to fire after concurrent move and set operations.

v3.13.0 New feature
Notable features
  • Comment metadata support with new parameters in createThread, createComment, and editComment
  • New editCommentMetadata method and useEditCommentMetadata hook for independent metadata updates
  • New commentMetadataUpdated webhook event for server-side integrations
Full changelog

This release adds support for comment metadata, allowing you to attach custom
metadata to individual comments in the same way as thread metadata.

All packages

  • Support typing comment metadata globally via the Liveblocks interface.
  • Improve CommentBody types.
  • Internal refactorings to prepare for upcoming protocol updates.

@liveblocks/client

  • Add new parameters to createThread, createComment, and editComment to
    attach and update comment metadata.
  • Add editCommentMetadata method to update only a commentʼs metadata.

@liveblocks/react

  • Add new parameters to useCreateThread, useCreateComment, and
    useEditComment to attach and update comment metadata.
  • Add useEditCommentMetadata hook to update only a commentʼs metadata.

@liveblocks/react-ui

  • Add commentMetadata prop to Composer to attach and update comment
    metadata.

@liveblocks/react-lexical and @liveblocks/react-tiptap

  • Add commentMetadata prop to FloatingComposer to attach and update comment
    metadata.

@liveblocks/react-tiptap

  • Fix Toolbar not reflecting the editorʼs current state.

@liveblocks/node

  • Add new parameters to createThread, createComment, and editComment to
    attach and update comment metadata.
  • Add editCommentMetadata method to update only a commentʼs metadata.
  • Add commentMetadataUpdated webhook event.

Beta — feedback welcome: [email protected]