What’s new in Liveblocks: July 2025
We’ve released a number of improvements to AI Copilots, including new ways to submit knowledge sources, better scroll behavior, and the ability to customize markdown components.

This July we’ve released a number of improvements to AI Copilots:
- Polished scroll behavior: Streamed AI replies are easier to read and follow.
- Better knowledge sources: Submit entire websites as back-end knowledge.
- Custom markdown components: AI can use custom titles, code blocks, more.
- AI Support Chat example: How to use AI on your contact or support page.
Upgrade now
To use the latest features, update your packages with the following command.
If you were previously on Liveblocks 2.24 or below, make sure to follow our upgrade guides before updating.
Try AI Copilots
Book a demo with our team to start building with AI Copilots.
Polished scroll behavior
AI chats present a unique UX challenge due to their long, streaming replies—you can’t use scroll behavior like you’d find in WhatsApp or iMessage, as any messages pinned to the bottom will move upwards as they stream in, making them difficult to read.
For this reason, we’ve polished the scroll behavior of our AI chats, sending the user’s message to the top of the window, allowing the reply to stream in below.
With the new behavior, chats become far easier to read. This is enabled by default in all AI chats.
Better knowledge sources
When building with AI, being able to submit knowledge is important as copilots should be able to understand the context related to any questions. This July, we’ve enabled submitting an entire website as a back-end knowledge source, via crawling, or via sitemap. You can submit websites through the dashboard.
Knowledge remains a top priority for the AI Copilots team, and we’re currently working on further additions in this area.
Custom markdown components
AI copilots can use markdown components when they reply to users, meaning they can write headings, use italics, send blockquotes, and more. We’ve added the ability to customize these markdown components, and display them however you like.
An example of how to use this is with code blocks—you can now pass a custom highlighter component, allowing your AI to style code syntax, and in a way that’s consistent with your brand.

Without the custom component, the code in the snippet would appear as plain
black text. To enable this, you can pass various markdown components to the
markdown
property, such as CodeBlock
.
A number of other components are available too, learn how to customize your markdown components.
AI Support Chat example
Our AI Support Chat example demonstrates how to create a chat that can assist users on your contact page, acting as the first line of support. If AI doesn’t know the answer, it’ll allow users to create a ticket for a human agent to handle.
Minor improvements
Here’s a list of other improvements in our changelog since our last update:
- 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. - Improve URL sanitization in comments.
- 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. 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.
- Add
lb-lexical-cursors
class to the collaboration cursors’ container. - Fix: Default
z-index
of Lexical collaboration cursors, and make them inherit their font family instead of always using Arial. - Improve mentions’ serialization.
- 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.
- Fix:
AiChat
component not scrolling instantly to the bottom on render when messages are already loaded. - 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.
Find the complete information in our changelog.
Upgrade
To use these latest features, update your packages with:
Contributors
7 authors
Ready to get started?
Join thousands of companies using Liveblocks ready‑made collaborative features to drive growth in their products.