What’s new in Liveblocks: April 2025

We’ve added ways for users to subscribe to individual threads, released an MCP server to speed up development, and made a large improvement to our billing.

on
What’s new in Liveblocks: April 2025

This April we’ve added new APIs, released an AI tool, and improved our billing.

Upgrade now

To use the latest features, update your packages with the following command.

$npx create-liveblocks-app@latest --upgrade

If you were previously on Liveblocks 2.23 or below, make sure to follow our upgrade guides before updating.

Subscribe to threads

When using Comments and Notifications, end users no longer need to be participating in threads to receive inbox notifications. From now, users can choose to subscribe to individual threads meaning they’ll be notified when new comments are added.

Users can also choose to unsubscribe from threads they’ve participated in. After upgrading, you’ll find the new menu option in your threads, as shown above, and in notifications, shown below.

Unsubscribe from a thread in a notification

Corresponding hooks

Along with the updated components, we’ve also added corresponding hooks for thread subscriptions, allowing you to subscribe and unsubscribe from threads programmatically. Here’s how the new useSubscribeToThread hook can be used.

import { useSubscribeToThread } from "@liveblocks/react/suspense";
function SubscribeButton({ threadId }) { const subscribeToThread = useSubscribeToThread();
return ( <button onClick={() => subscribeToThread(threadId)}> 🔔 Subscribe to thread </button> );}

We’ve also updated previous hooks, such as useThreadSubscription, simplifying creating your own primitives.

import { useThreadSubscription } from "@liveblocks/react/suspense";
function SubscribeButton({ threadId }) { const { status, subscribe, unsubscribe } = useThreadSubscription(threadId);
if (status === "subscribed") { return <button onClick={unsubscribe}>🔕 Unsubscribe</button>; }
return <button onClick={subscribe}>🔔 Subscribe</button>;}

Updated API names

To reduce confusion in our APIs, we’ve updated a number of names to better reflect their purpose. Any previous methods related to roomNotifications now refer to roomSubscriptions, learn more in our upgrade guide.

MCP server

We’ve created an MCP server for Liveblocks, which allows you to talk to your application in AI tools, such as Cursor and Claude, as you build it. Our server has 39 different tools available, allowing AI to generate rooms, write comments, send notifications, read realtime data, and more.

It’s just one command to install it, find more info in our MCP server documentation.

Fairier billing with first day free

We’ve rolled out a major improvement to our pricing that makes it easier and more predictable to scale real-time collaboration in your product: you now only pay for users who return after their first session.

First day free

Learn more in our blog post

To learn more, make sure to read our focused blog post on introducing fairer billing with first day free.

Minor improvements

Here’s a list of other improvements in our changelog this month:

  • @liveblocks/client methods which return threads and their associated inbox notifications now also return the thread’s associated subscriptions.
  • Add support for textMentions in room subscription settings.
  • Add closeAi Tiptap command to manually close the AI toolbar.
  • Expose new property triggeredAt for notification webhook events.
  • The prepareThreadNotificationEmailAsHtml and prepareThreadNotificationEmailAsReact functions now avoid duplicated comments between two emails data.
  • Improve event propagation from Composer and the emoji pickers in Comment/Thread.
  • The InboxNotification component now uses resolveRoomsInfo for textMention notifications to make them link to the mentions’ room automatically if href isn’t set.
  • Add emojibaseUrl advanced option on LiveblocksUIConfig to allow choosing where Emojibase’s data used by the Liveblocks emoji picker is fetched from: another CDN, self-hosted files, etc.
  • Fix: Occasional Yjs and Text Editor desync issue.
  • Fix: Crash when unmounting BlockNote.
  • Fix: withLiveblocksEditorOptions not passing all options to BlockNote.
  • Fix: Names capitalization in lists. (e.g. the list of who reacted in reactions’ tooltips)
  • Fix: AiToolbar focus behavior in Safari.
  • Fix: FloatingToolbar focus behavior in Safari.
  • Fix: Potential runtime error in browsers that do not support Symbol.dispose yet.
  • Fix: Bug in .mutateStorage() and .massMutateStorage() where mutating storage could potentially corrupt the storage tree.
  • Fix: Update dependencies resolution.
  • Fix: Avoid <AnchoredThreads /> threads rendering if the editor's view is null.

Upgrade

To use these latest features, update your packages with:

$npx create-liveblocks-app@latest --upgrade

Contributors

Contributors include:marcbouchenoireflowflorentsugardariusnperez0111chadnorvellnviectnicholaspierrelevaillantjrowny

9 authors

Ready to get started?

Join thousands of companies using Liveblocks ready‑made collaborative features to drive growth in their products.

Book a demo