What’s new in Liveblocks: February 2025

We’ve introduced APIs for end users to configure their notifications, server-side text editing for Tiptap, improved Yjs & WebSocket stability, and written lots of new content.

on
What’s new in Liveblocks: February 2025

This February we’ve released new APIs for notifications, text editing, and stability.

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.

User notification settings

When using Liveblocks Notifications, your end users can now individually configure which notifications should be sent outside your application, and on which channel, for example via email, Slack, Microsoft Teams, and Web Push. We’ve also released new React hooks that make it easy to create a user notifications panel in your application.

Notification settings example in an application

Users will be able to choose which notifications to receive, and on which channel—for example, one user may wish to receive new comment notifications via email, but not via Slack. This works by changing which webhook events are sent by which user, allowing you to handle each separately. Both custom and Liveblocks notifications are supported.

Dashboard

We’ve also created a new dashboard page that allows you to configure notifications webhooks for your users, including setting a default value.

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: Configure each user’s notification settings for email, Slack, and more.

Liveblocks Emails blog post

Modify Tiptap from the server

You can now edit your Tiptap, ProseMirror, and BlockNote state from the server. Our latest text editor package has methods for initializing content, fetching state, and more. For example, here’s how to insert a line of text into a document.

import { Liveblocks } from "@liveblocks/node";import { withProsemirrorDocument } from "@liveblocks/node-prosemirror";
const liveblocks = new Liveblocks({ secret: "sk_prod_xxxxxxxxxxxxxxxxxxxxxxxx",});
await withProsemirrorDocument( { roomId: "your-room-id", client: liveblocks }, async (api) => { await api.update((doc, tr) => { return tr.insertText("Hello world"); }); });

You may notice that this package is called @liveblocks/prosemirror, but can be used for Tiptap and BlockNote. This is because these editors extend ProseMirror, and in terms of APIs, a ProseMirror extension makes the most sense for server-side editing.

Here’s another snippet, showing how to fetch your editor content as markdown.

const markdown = await withProsemirrorDocument(  { roomId: "my-room-id", client: liveblocks },  async (api) => {    return api.toMarkdown();  });
// # Hello world//// _This_ is a **paragraph**console.log(markdown);

Make sure to read our @liveblocks/node-prosemirror to learn more. We’ve also spent time improving our @liveblocks/node-lexical documentation, if you’d like to edit your Lexical documents from the server instead.

Which text editor framework?

If you’re curious about different text editor frameworks, we’ve written a new guide that compares the features of a number of editors, highlighting the important parts. Read it now— Which rich text editor framework should you choose in 2025?

Various API improvements

We’ve made some API improvements recently, solving a couple of tricky bugs.

Improved Yjs integration

In some applications, Yjs documents would desynchronize at times, particularly when dynamically switching between rooms. We’ve added a new function that solves these issues, cleaning up Yjs correctly on page transitions. We now recommend using this method to connect to our Yjs server in all frameworks.

import { getYjsProviderForRoom } from "@liveblocks/yjs";
// Recommended way to set up Yjsconst yProvider = getYjsProviderForRoom(client, room);const yDoc = provider.doc;

If you’ve been having any problems with Yjs, we recommend you upgrade and start using getYjsProviderForRoom now. You can learn more in the Setup section of our API reference.

Handling large WebSocket messages

Internally, Liveblocks uses WebSockets, and there’s always been a technical limit on how large WebSocket messages can be, which meant especially large updates were not synced correctly. We’ve had an experimental feature for a while that will send large messages over HTTP, but we now have another more reliable option.

The new strategy is called split, and it’ll split large messages into smaller chunks. We’ve added a new largeMessageStrategy option to LiveblocksProvider and createClient that can enable this feature.

// Configure how to handle large messages<LiveblocksProvider  largeMessageStrategy="split"  // .../>

New content from our engineers

We’ve been putting a lot of effort into the Liveblocks blog recently, working on writing valuable content for you, straight from our engineers.

In February, we released three of these posts, alongside our regular updates:

Stay tuned—we have lots more to come!

Minor improvements

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

  • Fixed HTML escaping in email notification utilities.
  • Added better error logging to help with debugging.
  • Improved handling of user thread data.
  • Allowed more flexible character usage when creating mentions in comment composers.
  • Fixed several small bugs in React UI components.
  • Added llms.txt and llms-full.txt files to our website to help AI tools better understand our product.
  • Improved infrastructure for more efficient storage in the future.

Upgrade

To use these latest features, update your packages with:

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

Contributors

Contributors include:ctnicholaspierrelevaillantflowflorentsugardariusjrownymarcbouchenoirenviehuy-coverudi-cadam-subframe

10 authors

Ready to get started?

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

Book a demo