• Week 37
    WEEK37

    v3.7.1

    • Add query filters roomId and kind on the useUnreadInboxNotificationsCount hook.

    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 resolveGroupsInfo resolver to provide information about groups (e.g. name, avatar, etc) similar to resolveUsers.

    • Support returning group mention suggestions in resolveMentionSuggestions.

    • Support group mentions in stringifyCommentBody, it now accepts a resolveGroupsInfo option that passes the results to mentions as group.

    • Add query filters roomId and kind on the getInboxNotifications method.

    • Add useGroupInfo hook to use resolveGroupsInfo in React, same as useUser for resolveUsers.

    • Add query filters roomId and kind on the useInboxNotifications hook.

    • 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 tenantId parameters to methods that need it when using tenants.

    • Mark getThreadParticipants as deprecated, use thread subscriptions or getMentionsFromCommentBody instead.

    • Support group mentions in stringifyCommentBody, it now accepts a resolveGroupsInfo option that passes the results to mentions as group.

    • Support group mentions in email notifications helpers. These functions now accept a resolveGroupsInfo option that passes the results to mentions as group.

    3.6.2

    • Rename budgetToken to budgetTokens in AnthropicProviderOptions.

    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 AiChat when they are 3 seconds or longer.

    • Make AiTool titles 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.

    Contributors

    Contributors include:ctnicholaspierrelevaillantnviemarcbouchenoirenimeshnayajuofoucherotflowflorent

    7 authors

  • Week 36
    WEEK36

    v3.6.0

    • Auto-abort this client's tool calls on page unload to prevent hanging chats.

    • Reasoning in AiChat now displays how long it took.

    • AiChat nows 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 Duration primitive to display formatted durations, similar to the existing Timestamp primitive.

    • 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.

    Contributors

    Contributors include:pierrelevaillantnviejrownynimeshnayajumarcbouchenoire

    5 authors

  • Week 35
    WEEK35

    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:
      • getAiCopilots
      • createAiCopilot
      • getAiCopilot
      • updateAiCopilot
      • deleteAiCopilot
      • createWebKnowledgeSource
      • createFileKnowledgeSource
      • deleteFileKnowledgeSource
      • deleteWebKnowledgeSource
      • getKnowledgeSources
      • getKnowledgeSource
      • getFileKnowledgeSourceMarkdown
      • getWebKnowledgeSourceLinks

    v3.4.2

    • Fix improved Markdown streaming in AiChat only 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 execute callback.

    • Update useSendAiMessage to 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

    Contributors

    Contributors include:jrownynimeshnayajumarcbouchenoirepierrelevaillantctnicholas

    5 authors

  • Week 34
    WEEK34

    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 partialArgs are 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, initialPresence and initialStorage now get re-evaluated whenever the room ID (the id prop) changes.

    • Add a minimal appearance to AiTool via a new variant prop.

    • 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 AiChat as 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.

    Contributors

    Contributors include:nviemarcbouchenoire

    2 authors

  • Week 33
    WEEK33

    v3.3.4

    • Fix race condition where AI tools were not always executing. This could happen when using useSendAiMessage first and then immediately opening the <AiChat /> afterwards.

    • Scroll thread annotations into view when a thread in AnchoredThreads is selected, similarly to @liveblocks/react-lexical.

    v3.3.1

    • Fix Composer uploading attachments on drop when showAttachments is set to false.

    All versions

    • Fix attachment names showing URL-encoded characters. (e.g. a%20file.txt instead of a 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().

    Contributors

    Contributors include:marcbouchenoirectnicholasnviejrownynimeshnayaju

    5 authors

  • Week 32
    WEEK32

    v3.3.0

    • Add maxVisibleComments prop to Thread 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 to AiChat triggered when a new message is sent. It can also be used to customize message submission by calling useSendAiMessage yourself.

    • Overrides and CSS classes for AiChat's composer have been renamed:

      • Overrides: AI_CHAT_COMPOSER_SENDAI_COMPOSER_PLACEHOLDER
      • CSS classes: .lb-ai-chat-composer-form.lb-ai-composer-form
    • Fix: knowledge passed as a prop to AiChat no longer leaks that knowledge to other instances of AiChat that are currently mounted on screen.

    • Add query option to useAiChats 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 using null (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 the components={{ 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.

    Contributors

    Contributors include:ofoucherotsugardariuspierrelevaillantmarcbouchenoirenimeshnayajunvie

    6 authors

  • Week 31
    WEEK31

    v3.2.1

    • Improve Markdown lists in AiChat: better spacing and support for arbitrary starting numbers in ordered lists. (e.g. 3. instead of 1.)

    • 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

    Contributors

    Contributors include:pierrelevaillantnimeshnayajumarcbouchenoiresugardariusctnicholasstevenfabre

    6 authors

  • Week 30
    WEEK30

    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’s components prop to customize the rendering of Markdown content.

    • Add blurOnSubmit prop to Composer (also available on the Composer.Form primitive and as blurComposerOnSubmit on Thread) to control whether a composer should lose focus after being submitted.

    • useErrorListener now receives "LARGE_MESSAGE_ERROR" errors when the largeMessageStrategy option isn’t configured and a message couldn’t be sent because it was too large for WebSocket.

    • Add tenantId to identifyUser method as an optional parameter.

    Dashboard

    • Fix issue with custom nodes causing an error in Tiptap/BlockNote documents views.

    Contributors

    Contributors include:marcbouchenoirejrownyflowflorentctnicholas

    4 authors

  • Week 29
    WEEK29

    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

    Contributors

    Contributors include:nimeshnayajuctnicholas

    2 authors

  • Week 28
    WEEK28

    v3.1.2

    • Improve URL sanitization in comments.

    v3.1.1

    • Adds experimental setting LiveObject.detectLargeObjects, which can be enabled globally using LiveObject.detectLargeObjects = true (default is false). With this setting enabled, calls to LiveObject.set() or LiveObject.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 with defineAiTool(). 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

    Contributors

    Contributors include:ctnicholasnimeshnayajunviemarcbouchenoire

    4 authors

We use cookies to collect data to improve your experience on our site. Read our Privacy Policy to learn more.