Week 32 v3.3.0
-
Add
maxVisibleComments
prop toThread
to control the maximum number of comments to show. When comments are hidden, a "Show more replies" button is shown to allow users to expand the thread. -
Add
onComposerSubmit
callback toAiChat
triggered when a new message is sent. It can also be used to customize message submission by callinguseSendAiMessage
yourself. -
Overrides and CSS classes for
AiChat
's composer have been renamed:- Overrides:
AI_CHAT_COMPOSER_SEND
→AI_COMPOSER_PLACEHOLDER
- CSS classes:
.lb-ai-chat-composer-form
→.lb-ai-composer-form
- Overrides:
-
Fix: knowledge passed as a prop to
AiChat
no longer leaks that knowledge to other instances ofAiChat
that are currently mounted on screen. -
Add
query
option touseAiChats
to filter the current user’s AI chats by metadata. Supports exact matches for string values, "contains all" for string arrays, and filtering by absence usingnull
(e.g.{ metadata: { archived: null } }
). -
useSendAiMessage
now accepts passing the chat ID and/or options to the function rather than the hook. This can be useful in dynamic scenarios where the chat ID might not be known when calling the hook for example. -
useCreateAiChat
now accepts a chat ID as a string instead of{ id: "chat-id" }
. -
Allow using custom composers in
FloatingComposer
via thecomponents={{ Composer }}
prop. -
Add
ATTACH_THREAD_COMMAND
command to manually create a thread attached to the current selection.
Dashboard
- Support SAML Single Sign-On for enterprise customers.
- Allow editing first and last name in personal settings.
-
Week 31 v3.2.1
-
Improve Markdown lists in
AiChat
: better spacing and support for arbitrary starting numbers in ordered lists. (e.g.3.
instead of1.
) -
Fix
useSyncStatus
returning incorrect synchronization status for Yjs provider. We now compare the hash of local and remote snapshot to check for synchronization differences between local and remote Yjs document. -
Fix
LiveblocksYjsProvider.getStatus()
returning incorrect synchronization status for Yjs provider.
Dashboard
- Add MAU breakdown to the historical usage table on the “Billing & usage” page (MAU used / Non-billed MAU).
- Support OpenAI compatible AI models in AI Copilots.
- Support Gemini 2.5 Pro and Gemini 2.5 Flash Thinking models in AI Copilots and remove support for the corresponding preview models.
Doocumentation
-
Week 30 v3.2.0
-
Improve
AiChat
's scroll behavior when sending new messages: the chat will now scroll new messages to the top and leave enough space for responses. -
Expose Markdown components in
AiChat
’scomponents
prop to customize the rendering of Markdown content. -
Add
blurOnSubmit
prop toComposer
(also available on theComposer.Form
primitive and asblurComposerOnSubmit
onThread
) to control whether a composer should lose focus after being submitted. -
useErrorListener
now receives"LARGE_MESSAGE_ERROR"
errors when thelargeMessageStrategy
option isn’t configured and a message couldn’t be sent because it was too large for WebSocket. -
Add
tenantId
toidentifyUser
method as an optional parameter.
Dashboard
- Fix issue with custom nodes causing an error in Tiptap/BlockNote documents views.
-
Week 29 v3.1.4
- Fix copilot id not being passed to 'set-tool-call-result' command that is dispatched when a tool call is responded to. Previously, we were using the default copilot to generate messages from the tool call result.
v3.1.3
- Fix
AiChat
component not scrolling instantly to the bottom on render when messages are already loaded.
Dashboard
- Added the ability to use website crawls and sitemaps as knowledge sources for your AI copilot.
Website
- New blog post: What’s new in Liveblocks: June 2025.
Week 28 v3.1.2
- Improve URL sanitization in comments.
v3.1.1
- Adds experimental setting
LiveObject.detectLargeObjects
, which can be enabled globally usingLiveObject.detectLargeObjects = true
(default is false). With this setting enabled, calls toLiveObject.set()
orLiveObject.update()
will throw as soon as you add a value that would make the total size of the LiveObject exceed the platform limit of 128 kB. The benefit is that you get an early error instead of a silent failure, but the downside is that this adds significant runtime overhead if your application makes many LiveObject mutations. - Fix: also display errors in production builds when they happen in
render
methods defined withdefineAiTool()
. Previously, these errors would only be shown during development. - Fix an issue with the render component of tool calls not being displayed correctly when the tool call signal was read before it was registered.
Examples
- New example: AI Support Chat.
Week 27 v3.1.0
-
defineAiTool()()
now takes an optionalenabled
property. When set tofalse
, the tool will not be made available to the AI copilot for new/future chat messages, but still allow existing tool invocations to be rendered that are part of the historic chat record. -
RegisterAiTool
now also takes an optionalenabled
prop. This is a convenience prop that can be used to override the tool’senabled
status directly in React. -
Reasoning parts in
AiChat
are now automatically collapsed when the reasoning is done. -
Add
collapsible
prop toAiTool
to control whether its content can be collapsed/expanded. -
Add
InboxNotification.Inspector
component to help debugging custom inbox notifications. -
Add support for Redux v5.
-
Fix default
z-index
of collaboration cursors, and make them inherit their font family instead of always using Arial. -
Add
lb-lexical-cursors
class to the collaboration cursors’ container. -
Improve mentions’ serialization.
-
Improve mentions’ serialization.
-
Week 26 Week 25 v3.0.0
Liveblocks 3.0 is our third major release, focusing on our newest product, AI Copilots. We’ve used this as an opportunity to tidy up some of our existing APIs, ensuring consistency throughout our offering.
For full upgrade instructions and codemods, see the 3.0 upgrade guide.
-
TypeScript 5.0 is now the minimum supported version.
-
Remove deprecated APIs, see the deprecated section in the upgrade guide to learn more.
-
Introduce hooks and APIs for AI Copilots:
useAiChats
,useAiChat
,useDeleteAiChat
,useSendAiMessage
,RegisterAiTool
,RegisterAiKnowledge
, etc. -
Rename
UPDATE_USER_NOTIFICATION_SETTINGS_ERROR
toUPDATE_NOTIFICATION_SETTINGS_ERROR
when usinguseNotificationSettings
oruseUpdateNotificationSettings
. -
Introduce pre-built components for AI Copilots:
AiChat
,AiTool
, etc. -
The
onMentionClick
prop onThread
andComment
now receives aMentionData
object instead of auserId
string. -
The
Mention
component on theComment.Body
andComposer.Editor
primitives now receives amention
prop instead of auserId
one. -
The
MentionSuggestions
component on theComposer.Editor
primitive now receives amentions
prop instead of auserIds
one, and theselectedUserId
prop has been renamed toselectedMentionId
. -
Rename
LiveblocksUIConfig
toLiveblocksUiConfig
for consistency with other Liveblocks APIs. -
Remove deprecated
htmlBody
/reactBody
properties fromprepareThreadNotificationEmailAsHtml
/prepareThreadNotificationEmailAsReact
, usebody
instead. -
Remove
htmlContent
/reactContent
properties fromprepareTextMentionNotificationEmailAsHtml
/prepareTextMentionNotificationEmailAsReact
, usecontent
instead. -
The
prepareTextMentionNotificationEmailAsReact
andprepareTextMentionNotificationEmailAsHtml
functions’ returned data changed slightly:- The
id
property is now namedtextMentionId
, it refers to the mention’s Text Mention ID, not the user ID used for the mention - The
id
property now refers to the mention’s ID, as in the user ID used for the mention
- The
-
The
element
prop received by theMention
component inprepareTextMentionNotificationEmailAsReact
now contains anid
property instead ofuserId
, and a newkind
property to indicate the mention’s kind. -
The
getMentionedIdsFromCommentBody
utility has been replaced bygetMentionsFromCommentBody
.
Dashboard
- Introduce an AI Copilots view to manage copilots and their knowledge.
Examples
- New example: AI Popup Chat.
- New example: AI Chats.
- New example: AI Reports Dashboard.
Website
-
Week 22 - Fix an issue with subpath imports (e.g.
@liveblocks/react/suspense
) and CommonJS which could happen with certain bundlers.
- Fix an issue with subpath imports (e.g.
Week 19 - Disable or hide actions in
Thread
andComment
components for users without permission to perform them, such as adding reactions or (un)resolving threads.
- Disable or hide actions in