Week 19 - Disable or hide actions in
ThreadandCommentcomponents for users without permission to perform them, such as adding reactions or (un)resolving threads.
- Disable or hide actions in
Week 18 v2.24.1
- Fix for occasional desync issue.
v2.24.0
We are introducing thread subscriptions to add more granularity to thread notifications, allowing users to subscribe to threads without participating or unsubscribing from specific ones.
We are also using this opportunity to rename some of the concepts around notifications and notification settings to improve clarity. None of these changes are breaking but you can learn more about them, their rationale, and how to automatically apply them with a codemod in our Upgrade Guide for 2.24.
-
Add "Subscribe to thread" and "Unsubscribe from thread" actions to
Threadand threadInboxNotificationout of the box. -
Add
useSubscribeToThreadanduseUnsubscribeFromThreadhooks. -
Add
subscribeandunsubscribemethods to the existinguseThreadSubscriptionhook. -
Add support for
textMentionsin room subscription settings. -
Rename
useRoomNotificationSettingsanduseUpdateRoomNotificationSettingstouseRoomSubscriptionSettingsanduseUpdateRoomSubscriptionSettings. -
Add
subscribeToThread,unsubscribeFromThread,getThreadSubscriptionsandgetUserRoomSubscriptionSettingsmethods. -
Add support for
textMentionsin room subscription settings. -
Rename
getRoomNotificationSettings,updateRoomNotificationSettings, anddeleteRoomNotificationSettingstogetRoomSubscriptionSettings,updateRoomSubscriptionSettings, anddeleteRoomSubscriptionSettings. -
Add
Room.subscribeToThreadandRoom.unsubscribeFromThreadmethods. -
Methods which return threads and their associated inbox notifications now also return the thread’s associated subscriptions.
-
Add support for
textMentionsin room subscription settings. -
Rename
Room.getNotificationSettingsandRoom.updateNotificationSettingstoRoom.getSubscriptionSettingsandRoom.updateSubscriptionSettings.
MCP server
- New MCP server has been created for Liveblocks.
- Create and modify rooms, threads, comments, notifications, more.
- Read realtime Storage and Yjs values.
- Broadcast custom events to connected clients.
- Mark threads and notifications as read/unread.
Documentation
- New page detailing how to use the Liveblocks MCP server.
Website
- New trust center has been created, and links added to our website.
Week 17 v2.23.2
-
Add
closeAiTiptap command to manually close the AI toolbar. -
Fix
AiToolbarfocus behavior in Safari. -
Fix
FloatingToolbarfocus behavior in Safari. -
Fix
FloatingToolbarfocus behavior in Safari.
v2.23.1
-
Fix potential runtime error in browsers that do not support
Symbol.disposeyet. -
Fix a bug in
.mutateStorage()and.massMutateStorage()where mutating storage could potentially corrupt the storage tree.
v2.23.0
-
Expose new property
triggeredAtfor notification webhook events. -
The
prepareThreadNotificationEmailAsHtmlandprepareThreadNotificationEmailAsReactfunctions are now avoiding duplicated comments between two emails data. -
Improve event propagation from
Composerand the emoji pickers inComment/Thread. -
Fix crash when unmounting. Thank you @nperez0111!
-
Fix
withLiveblocksEditorOptionsnot passing all options to BlockNote. Thank you @chadnorvell!
Documentation
- New AI Copilots features page, highlighting all upcoming features.
- Mention first day free policy.
- Small updates to docs homepage
Dashboard
- Refined billing and usage settings page, now displaying billed and non-billed users for monthly active users (MAUs) metric.
Website
- New blog post: Add Notion-style collaborative text editing to your app with Liveblocks BlockNote.
- New blog post: Introducing fairer billing with first day free.
- New blog post: Rethinking product strategy in the age of AI with Melissa Perri.
- New blog post: What’s new in Liveblocks: March 2025.
- New blog post: How Artefect reinvented collaborative workspaces for technical teams.
-
Week 14 v2.22.3
-
The
InboxNotificationcomponent now usesresolveRoomsInfofortextMentionnotifications to make them link to the mentions’ room automatically ifhrefisn’t set. -
Fix names capitalization in lists. (e.g. the list of who reacted in reactions’ tooltips)
-
Add
emojibaseUrladvanced option onLiveblocksUIConfigto allow choosing where Emojibase’s data used by the Liveblocks emoji picker is fetched from: another CDN, self-hosted files, etc. -
Fix: Update dependencies resolution.
-
Fix: Avoid
<AnchoredThreads />threads rendering if the editor's view isnull.
-
Week 13 v2.22.2
- Optimize
.getOrCreateRoom()to only make a single round-trip to the server. - Optimize
.upsertRoom()to only make a single round-trip to the server. - Also expose
LiveObject,LiveMap, andLiveListin@liveblocks/node.
v2.22.1
-
Fix report text editor function's call. Now we report correctly
blocknoteas text editor type. -
Internal refactoring.
-
Fix: improve stack traces of REST API errors to include the original error location.
Dashboard
- BlockNote editors are now supported in a room's Text Editor view.
Documentation
- Improve guide on how to modify Liveblocks Storage from the server.
- Fix BlockNote code snippets and add info about it in the email package.
Examples
- Improve notification settings in the Next.js Starter Kit.
- Update notifications settings example to use the latest APIs.
- Optimize
Week 12 v2.22.0
-
Added pagination support to
.getInboxNotifications(). See docs. -
New method
.getOrCreate()which combines.getRoom()and.createRoom(). See docs. -
New method
.upsertRoom()which combines.updateRoom()and.createRoom(). See docs. -
New method
.iterRooms()which is like.getRooms()except pagination happens automatically. See docs. -
New method
.iterInboxNotifications()which is like.getInboxNotifications()except pagination happens automatically. See docs. -
New method
.mutateStorage()which can be used to make changes to Storage from your backend. See docs. -
New method
.massMutateStorage()which can be used to make changes to Storage for multiple rooms simultaneously. See docs. -
Updated method
.deleteRoom()to no longer throw when the room already does not exist. See docs. -
Add new icons to
<Icon.* />. -
Implement a new core logic for thread notification event.
-
Mark
htmlBodyfromprepareThreadNotificationEmailAsHtmlandreactBodyfromprepareThreadNotificationEmailAsReactas deprecated. Usebodyproperty instead.
v2.21.0
-
New package to support using BlockNote with Liveblock’s comments, mentions, and realtime collaboration out of the box.
-
Fix
markThreadAsResolvedandmarkThreadAsUnresolvedmethods not passing user ID correctly to the corresponding backend endpoints. -
Improve emoji picker’s performance, bundle size, and add a preview of the currently selected emoji.
- This is the result of us moving the emoji picker to its own package and improving it in the process. You can also combine this package with the primitives to build your own reaction picker for example.
-
Improve and fix pasting HTML into the composer.
REST API
- The Delete Room endpoint will no longer return a 404 when a room already did not exist before.
Examples
- Updated Comments primitives example to use Frimousse.
- Updated BlockNote example to use our new package.
Documentation
- Mention our latest package, Frimousse.
- Detail building a primitive emoji picker and emoji reactions.
- API reference for all new Node.js methods.
- API reference for
@liveblocks/react-blocknoite. - Updated get started guides for BlockNote.
- New BlockNote overview page.
- Updated guide on modifying Storage from the server.
Website
- New blog post: We’ve open-sourced our customizable React emoji picker.
-
Week 11 Documentation
- Fixed a bug in the interactive React tutorial and updated all demos to use Vite instead of Create React App.
- Improved guide on How to modify Liveblocks Storage from the server.
- Add more info about text editor data being permanently stored.
Website
- New blog post: How to build notifications that encourage collaboration.
- New blog post: What’s new in Liveblocks: February 2025.
Week 10 v2.20.0
-
Implement a proxy factory for
UserNotificationSettingsobject to returnnullto prevent any errors when accessing a disabled notification channel. -
Implement a proxy factory for
UserNotificationSettingsobject to returnnullto prevent any errors when accessing a disabled notification channel. -
Add optional
useRoom({ allowOutsideRoom: true })option. When this option is set, the hook will returnnullwhen used outside of a room, whereas the default behavior of the hook is be to throw. -
Implement a proxy factory for
UserNotificationSettingsobject to returnnullto prevent any errors when accessing a disabled notification channel. -
Improve mentions behavior around whitespace, fixing a regression introduced in
v2.18.3when 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.
v2.19.0
-
Output ES modules by default (but CJS builds are still included)
-
Modernize internal build tool settings
-
Allow passing optional AbortSignal to all client methods
-
Fix bug in encoding of error information in the LiveblocksError when an API call fails (thanks for reporting, @robcresswell!)
-
Fix
getStorageDocument("my-room", "json")typing in its outputLiveMapinstances asReadonlyMapinstead of serialized plain objects.
Documentation
- 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.
Examples
- New example: Notification settings example.
- Improved notification settings panel in the Next.js Starter Kit.
Website
- New blog post: Configure each user’s notification settings for email, Slack, and more.
- New blog post: Liveblocks is now SOC 2 Type 2 and HIPAA compliant.
Upkeep
- Ship all Liveblocks packages as ESM by default (but CJS builds are still included)
- Modernized internal build tool settings
-
Week 8 v2.18.3
-
Fix HTML escaping in
stringifyCommentBodyutility. -
Log more details in specific error cases to help debugging
-
Fix HTML escaping in
stringifyCommentBodyutility. -
Increases the allowed stale time for polled user threads data. Only affects the
useUserThreads_experimentalhook. -
Allow spaces and more non-alphanumeric characters when creating mentions in Comments composers.
-
Fix HTML escaping in prepare as HTML functions. Thank you @huy-cove!
-
Revert deduplication logic introduced in
v2.18.0as it provided no measurable benefits while increasing complexity.
v2.18.2
-
Improve performance of undo/redo operations on large documents. Thank you @rudi-c!
-
Fix a performance regression introduced in 2.18.1.
Documentation
- Added info on how data storage is calculated.
- Fixed a number of broken links on various pages.
Dashboard
- Internal refactoring and code clean up.
Website
- New blog post: Why collaborative features will define your product’s success.
-
Week 7 v2.18.1
-
Fix
<Composer />and<Comment />overrides not working when set on<Thread />. -
Added a factory function
getYjsProviderForRoomto grab an instance of Yjs provider that will be automatically cleaned up when the room is disconnected/changed. This is now the recommended way to set up your Yjs app. -
Simplified types for
LiveblocksYjsProvider. -
Fixed a bug where documents would no longer sync after room the ID changed.
v2.18.0
Introducing user notification settings. You can now create beautiful user notification settings pages in your app.
Our packages
@liveblocks/client,@liveblocks/reactand@liveblocks/nodeare now exposing functions to manage user notification settings on different notification channels and kinds.You can support
thread,textMentionand custom notification kinds (starting by a$) onemail,Slack,Microsoft TeamsandWeb Pushchannels.You can choose from our new notifications dashboard page to enable or disable notification kinds on every channels you want to use in your app. It means our internal notification system on our infrastructure will decide to send or not an event on your webhook.
We're adding two new methods in our client to get and update user notification settings:
We're adding a new set of hooks to manage user notification settings.
You can either choose
useNotificationSettingsif you need to get the current user notification settings and update them at the same time:Or you can choose
useUpdateNotificationSettingsif you just need to update the current user notification settings (e.g an unsubscribe button):Our Node.js client now exposes three new methods to manage user notification settings:
- Update the behavior of
prepareThreadNotificationEmailAsHtmlandprepareThreadNotificationEmailAsReact: the contents of previous emails data are now taken into account to avoid repeating mentions and replies that are still unread but have already been extracted in another email data.
Examples
- Added user notification settings to the Next.js Starter Kit.
- Updated all Yjs examples to use
getYjsProviderForRoom.
Documentation
- New guide: What to check before enabling a new notification kind.
- Added info for new methods and hooks:
- Rewrote email notification overview pages for Comments and Notifications.
- Adjusted existing notification guides to work with new dashboard settings.
- Improved information structure for
useInboxNotifications. - Improved
@liveblocks/yjsAPI reference. - Added info for new API
getYjsProviderForRoom. - Updated all Yjs get started guides to use the new API.
Website
- We now have
llms.txtandllms-full.txtfiles on our website, used to help AI understand our product.
Dashboard
- Added new Notifications page to projects, allowing you to enable/disable webhooks events for different notification kinds, on different channels.
Infrastructure
- Preparing foundation in the backend to make Storage more efficient in the future.
-