Week 42 v3.9.0
-
Add support for web search to
<AiChat />component. -
Add
showSources,showRetrievalsandshowReasoningprops to<AiChat />component to determine how sources, retrievals and reasoning are displayed respectively. -
Disable AI chat composers when AI service is not available.
-
Add query filter
subscribedon theuseThreadshook. -
Add
useUrlMetadatahook to get metadata for a given URL. -
Expose
disconnectedstatus inuseAiChatStatusto indicate when AI service is not available. -
Add query filter
subscribedon theroom.getThreadsmethod. -
Update
createAiCopilotandupdateAiCopilotto include web search in provider options for OpenAI and Anthropic. -
Remove all schema validation related client methods that should no longer be used. Schema validation was sunsetted on May 1st, 2025.
Dashboard
- Greatly improved “Notifications” flow, making it much clearer how they're linked to webhooks.
- New “Kinds” tab, allowing you to define batching per kind.
- See the status of your webhooks from here.
- Warnings when no webhooks are set up, and shortcuts to get started.
- Improved “Webhooks” page.
- Set a rate limit for your webhooks when creating them.
- More detailed error messages when creating webhooks.
- Better UX on the URL input.
- Improved UX when creating projects
- New polished project cards displaying more info such as region restrictions.
- More clarity in project creation dialog boxes.
- Improved team/project selectors with UI polish and better accessibility.
- Improved MAU usage cards showing your team’s personalized limits.
- More clarity in project settings regarding environment and regions not being editable.
- Fixed problem downloading examples with
create-liveblocks-appintegration.
Documentation
- New sections on notification batching.
- Better clarity on Storage/Yjs limits.
-
Week 41 v3.8.1
-
Add
chatIdprop toRegisterAiKnowledgeto scope knowledge to a specific chat, similar toRegisterAiTool. This is the same as using theknowledgeprop onAiChat. -
Fix issue where
useAiChat()didn't re-render correctly when chat title gets updated. -
Fix issue where
tenantIdwas not being passed to the request when usingLiveblocks.createRoom(). -
Add
comments:writeto the list of possible room permissions.
Examples
New example: AI app builder. New example: AI calendar.
-
Week 40 v3.8.0
-
LiveMapandLiveObjectdeletions now report which item got deleted in the update notifications.LiveListsalready did this. -
Support numerical operators
gt,lt,gte, andlteinroom.getThreadsmetadata query filters. -
Add new hook
useAiChatStatusthat offers a convenient way to get the current generation status for an AI chat, indicating whether the chat is idle, currently generating contents, and, if so, what type of content is currently generating. -
Fixes an issue where
useUnreadInboxNotificationsCountwasn't returning the proper count if there were more than a page of unread notifications. -
Support numerical operators
gt,lt,gte, andlteinuseThreadsmetadata query filters. -
Add
responseTimeoutproperty toAiChatto allow customization of the default 30 seconds timeout. -
The
titleprop onAiToolnow acceptsReactNode, not just strings. -
Fix a bug where
AiChatwould not always scroll in the same way when sending new messages. -
Add new method
Liveblocks.prewarmRoom(roomId, options). This method can prewarm a room from your backend, preparing it for connectivity and making the eventual connection from the frontend faster.
Website
-
Week 38 Website
- Blog post: What's the best vector database for building AI products?.
- Blog post: What's new in Liveblocks: August 2025.
Week 37 v3.7.1
- Add query filters
roomIdandkindon theuseUnreadInboxNotificationsCounthook.
v3.7.0
This release introduces group mentions (e.g.
@engineering) across all packages and first-class support for tenants. Learn more about group mentions and tenants in the docs.-
Add new
resolveGroupsInforesolver to provide information about groups (e.g.name,avatar, etc) similar toresolveUsers. -
Support returning group mention suggestions in
resolveMentionSuggestions. -
Support group mentions in
stringifyCommentBody, it now accepts aresolveGroupsInfooption that passes the results to mentions asgroup. -
Add query filters
roomIdandkindon thegetInboxNotificationsmethod. -
Add
useGroupInfohook to useresolveGroupsInfoin React, same asuseUserforresolveUsers. -
Add query filters
roomIdandkindon theuseInboxNotificationshook. -
Support group mentions in default components (mentions suggestions dropdowns,
Thread,Composer,InboxNotification, etc). -
Support group mentions in text editors and comments-related components.
-
Support group mentions in text editors.
-
Add methods to manage groups on Liveblocks (e.g.
createGroup,getUserGroups). -
Add
tenantIdparameters to methods that need it when using tenants. -
Mark
getThreadParticipantsas deprecated, use thread subscriptions orgetMentionsFromCommentBodyinstead. -
Support group mentions in
stringifyCommentBody, it now accepts aresolveGroupsInfooption that passes the results to mentions asgroup. -
Support group mentions in email notifications helpers. These functions now accept a
resolveGroupsInfooption that passes the results to mentions asgroup.
3.6.2
- Rename
budgetTokentobudgetTokensinAnthropicProviderOptions.
v3.6.1
-
Fixes a bug where a specific combination of concurrent LiveList mutations could break eventual consistency (two clients disagreeing on the final document state).
-
Only show retrieval and reasoning durations in
AiChatwhen they are 3 seconds or longer. -
Make
AiTooltitles selectable.
Website
- AI assistant has been added to the documentation and dashboard pages. It can answer
questions on anything related to Liveblocks, such as code, recommendations, bugs,
billing, usage, and project information. It's powered by
AiChat.
- Add query filters
Week 36 v3.6.0
-
Auto-abort this client's tool calls on page unload to prevent hanging chats.
-
Reasoning in
AiChatnow displays how long it took. -
AiChatnows shows when a copilot is searching its knowledge defined on the dashboard, as a "Searching 'What is RAG?'…" indicator. It also displays how long it took. -
Add
Durationprimitive to display formatted durations, similar to the existingTimestampprimitive. -
Better type safety for copilot creation and update options.
-
Add missing type export for AI Copilot and knowledge sources.
v3.5.4
-
Throttle incoming AI delta updates to prevent excessive re-renders during fast streaming.
-
Optimized partial JSON parser for improved tool invocation streaming performance.
-
Fixes a bug where the a comment could not be selected if it was within a previously deleted comment.
Dashboard
- Add API reference modal to AI Copilot detail pages, with React, Node.js, and REST API snippets to get started quickly.
-
Week 35 v3.5.1
- Fixes a bug where deleting a thread/comment from Tiptap would also remove any comments contained within it.
v3.5.0
- Add the following methods for managing AI copilots and knowledge sources:
getAiCopilotscreateAiCopilotgetAiCopilotupdateAiCopilotdeleteAiCopilotcreateWebKnowledgeSourcecreateFileKnowledgeSourcedeleteFileKnowledgeSourcedeleteWebKnowledgeSourcegetKnowledgeSourcesgetKnowledgeSourcegetFileKnowledgeSourceMarkdowngetWebKnowledgeSourceLinks
v3.4.2
- Fix improved Markdown streaming in
AiChatonly being enabled in reasoning blocks, it’s now enabled for all Markdown.
v3.4.1
-
Fix a bug where copilot id wasn't passed when setting tool call result if a tool call was defined with
executecallback. -
Update
useSendAiMessageto use the the last used copilot id in a chat when no copilot id is passed to the hook or the method returned by the hook.
Website
Week 34 v3.4.0
Tool calls will now stream in while under construction. This means that tools will render sooner and more often re-render, while
partialArgsare streaming in.New behavior (v3.4 and higher):
- 1st render:
{ stage: "receiving", partialArgs: {} } - 2nd render:
{ stage: "receiving", partialArgs: { cities: [] } } - 3rd render:
{ stage: "receiving", partialArgs: { cities: [""] } } - 4th render:
{ stage: "receiving", partialArgs: { cities: ["Pa"] } } - 5th render:
{ stage: "receiving", partialArgs: { cities: ["Paris"] } } - etc.
- Then
{ stage: "executing", args: { cities: "Paris" } }(same as before) - And
{ stage: "executed", args, result }(same as before)
Before (v3.3 and lower):
- Stage "receiving" would never happen
- 1st render would be with
{ stage: "executing", args: { cities: ["Paris"] } } - 2nd render would be with
{ stage: "executed", args, result }
-
In
RoomProvider,initialPresenceandinitialStoragenow get re-evaluated whenever the room ID (theidprop) changes. -
Add a minimal appearance to
AiToolvia a newvariantprop. -
Improve Markdown rendering during streaming in
AiChat: incomplete content is now handled gracefully so things like bold, links, or tables all render instantly without seeing partial Markdown syntax first. -
Render all messages in
AiChatas Markdown, including ones from the user. -
Fix Markdown rendering of HTML tags in
AiChat. (e.g. "Use the<AiChat />component" would render as "Use the `` component") -
Improve shimmer animation visible on elements like the "Thinking…"/"Reasoning…" placeholders in
AiChat.
Infrastructure
- Improved LiveList conflict resolution that will keep the conflicting element closer to its intended destination.
- 1st render:
Week 33 v3.3.4
-
Fix race condition where AI tools were not always executing. This could happen when using
useSendAiMessagefirst and then immediately opening the<AiChat />afterwards. -
Scroll thread annotations into view when a thread in
AnchoredThreadsis selected, similarly to@liveblocks/react-lexical.
v3.3.1
- Fix
Composeruploading attachments on drop whenshowAttachmentsis set tofalse.
All versions
- Fix attachment names showing URL-encoded characters. (e.g.
a%20file.txtinstead ofa file.txt)
Infrastructure
- Fixed a bug that caused unreliable storage updates under high concurrency.
- Fixed an issue that could cause LLM responses to appear to "hang" if the token limit got exceeded during the response generation. If this now happens, the response will indicate a clear error to the user.
Dashboard
- New knowledge prompt option when configuring AI copilots, allowing you to customize when back-end knowledge is fetched.
Documentation
- More info on styling AI chat components.
- Disambiguate semantics for
LiveList.delete().
-
Week 32 v3.3.0
-
Add
maxVisibleCommentsprop toThreadto 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
onComposerSubmitcallback toAiChattriggered when a new message is sent. It can also be used to customize message submission by callinguseSendAiMessageyourself. -
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
AiChatno longer leaks that knowledge to other instances ofAiChatthat are currently mounted on screen. -
Add
queryoption touseAiChatsto 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 } }). -
useSendAiMessagenow 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. -
useCreateAiChatnow accepts a chat ID as a string instead of{ id: "chat-id" }. -
Allow using custom composers in
FloatingComposervia thecomponents={{ Composer }}prop. -
Add
ATTACH_THREAD_COMMANDcommand 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.
-