What’s new in Liveblocks: March 2025

We’ve introduced first-party support for BlockNote text editor, new APIs for mutating realtime Storage and rooms on the server, new configuration options for external user notifications, and we’re now SOC2 Type 2 and HIPAA compliant.

on
What’s new in Liveblocks: March 2025

This March we’ve released APIs for various features, and committed to security.

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.15 or below, make sure to follow our upgrade guides before updating.

Liveblocks BlockNote

It’s now easier than ever to add a collaborative block-based text editor to your app, filled with features out-of-the-box. Liveblocks BlockNote is our new fully-hosted customizable editor, which integrates into our existing products, such as Comments and Notifications.

Learn more in our blog post

To learn more, and to find our new examples and guides, make sure to read our focused blog post on Notion-style collaborative editing with BlockNote.

Modify Storage from the server

Our Sync Datastore product provides you with two sync engines that enable storing real-time document state, ideal for building collaborative apps. One of these engines is called Storage, and is particularly well suited for creating custom tools similar to Figma, Pitch, and Spline.

Using our Node.js SDK, you can now modify Storage data from the server with mutateStorage.

await liveblocks.mutateStorage(  "my-room-id",
async ({ root }) => { root.set("title", "New title"); });

This is particularly exciting in the AI era, as you can request AI to make changes to your document for your user. Below is how you may implement this with Vercel AI SDK, generating a title from an article’s content.

await liveblocks.mutateStorage(  "my-room-id",
async ({ root }) => { const article = root.get("article");
const { text } = await generateText({ model: yourModel, prompt: `Generate a title for the following article: ${article}`, });
root.set("title", text); });

Mass mutating Storage

We’ve also added another method, that allows you to modify Storage in multiple rooms at once. This is particularly useful for migrating rooms to a new schema, or for resetting a number of rooms at once. Below we’re setting a default title property in every room.

await liveblocks.massMutateStorage(  {},
async ({ room, root }) => { root.set("title", "Untitled"); });

You can also use options to filter for specific rooms, learn more under massMutateStorage. Below we’re setting a title property, in realtime.

User notification settings

Liveblocks Notifications already allows you to create an in-app notifications inbox inside your product. When users miss any in-app notifications, Liveblocks enables sending notifications on alternate channels, such as email, Slack, Microsoft Teams, Web Push.

As of this month, we’ve introduced new configuration options that enable building notification settings panels, allowing each of your end users to individually choose which channels they should receive notifications on.

Notification settings example in an application

Learn more in our blog post

To learn more, and to find our new examples and guides, make sure to read our focused blog post on configuring each user’s notification settings for email, Slack, and more.

Convenience methods for Node.js

We’ve added a number of new methods to the Liveblocks Node.js SDK, simplifying regular use cases. For example, getOrCreateRoom combines getRoom and createRoom into a single method.

// Gets a room, or creates it if it doesn't existconst room = await liveblocks.getOrCreateRoom("my-room-id", {  defaultAccesses: ["room:write"],});

Learn more about each new method in our API reference:

SOC2 Type 2 and HIPAA compliance

At Liveblocks, security and privacy have always been top priorities. We understand that as companies integrate collaboration and AI-powered features into their products, they need to trust that their data remains secure and compliant with industry standards. In March, we announced that Liveblocks is now SOC 2 Type 2 and HIPAA compliant, reinforcing our commitment in this area.

SOC2 type 2 and HIPAA compliant

Learn more in our blog post

Learn more about the certification process and how we acheived compliance in our blog post about our SOC 2 Type 2 and HIPAA commitments.

Minor improvements

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

  • Optimize .getOrCreateRoom() and .upsertRoom() to only make a single round-trip to the server.
  • Also expose LiveObject, LiveMap, and LiveList in @liveblocks/node.
  • BlockNote editors are now supported in a room’s Text Editor dashboard view.
  • Added pagination support to .getInboxNotifications().
  • Add new icons to <Icon.* />.
  • Implement a new core logic for thread notification event.
  • Improve emoji picker’s performance, bundle size, and add a preview of the currently selected emoji.
  • Improve and fix pasting HTML into the composer.
  • The Delete Room endpoint will no longer return a 404 when a room already did not exist before.
  • Updated Comments primitives example to use Frimousse.
  • Updated BlockNote example to use our new package.
  • Detail building a primitive emoji picker and emoji reactions.
  • Updated get started guides for BlockNote.
  • New BlockNote overview page.
  • Allow passing optional AbortSignal to all Node.js methods.
  • Updated method deleteRoom to no longer throw when the room already does not exist.
  • Improve mentions behavior around whitespace, fixing a regression introduced in v2.18.3 when we added support for whitespace within mentions.
  • Prevent mention suggestions from scrolling instead of flipping when there's enough space on the other side (e.g. moving from top to bottom).
  • Improve event propagation in the formatting toolbar of Composer.
  • Add optional useRoom({ allowOutsideRoom: true }) option. When this option is set, the hook will return null when used outside of a room, whereas the default behavior of the hook is be to throw.
  • Implement a proxy factory for UserNotificationSettings object to return null to prevent any errors when accessing a disabled notification channel.
  • Ship all Liveblocks packages as ESM by default (but CJS builds are still included).
  • Modernized internal build tool settings.
  • Improved guide on How to modify Liveblocks Storage from the server.
  • Add more info about text editor data being permanently stored.
  • New guide: How to create a notification settings panel.
  • Improved Notifications overview pages, adding info on user notification settings.
  • Improved existing webhooks guides, adding more context about notification channels, and how to create a settings panel.
  • More info about how Text Editor permanently stores documents, and how it's different to Yjs.
  • New example: Notification settings example.
  • Improved notification settings panel in the Next.js Starter Kit.
  • Fix: Improve stack traces of REST API errors to include the original error location.
  • Fix: Report text editor function’s call in @liveblocks/react-blocknote.
  • Fix: BlockNote code snippets and add info about it in the email package.
  • Fix: markThreadAsResolved and markThreadAsUnresolved methods not passing user ID correctly to the corresponding backend endpoints.

Upgrade

To use these latest features, update your packages with:

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

Contributors

Contributors include:ctnicholasmarcbouchenoirejrownynviesugardariusnimeshnayajupierrelevaillantstevenfabre

8 authors

Ready to get started?

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

Book a demo