Week 11 v3.15.2
-
Deprecate the
engineoption onenterRoom(). This flag no longer has any effect. -
Deprecate the
engineprop onRoomProvider. This flag no longer has any effect. -
Deprecate the
engineoption oncreateRoom(). This flag no longer has any effect. -
Stop sending the
enginefield in the room creation request body.
v3.15.1
- Add
gapprop toAvatarStackto control the--lb-avatar-stack-gapCSS variable. - Add
paddingprop toCommentPinto control the--lb-comment-pin-paddingCSS variable. - Fix
sizeprops onAvatarStackandCommentPinnot working as expected when passing numbers. - Fix
autoFocusprop onFloatingComposer. - Improve avatars’ ordering and
maxlogic inAvatarStack. - Support
childrenprop onCommentPin.
Documentation
- Mention how token caching is never recommended.
Examples
- Improve canvas comments example to prevent a conflict after moving a comment pin twice in rapid succession.
-
Week 10 v3.15.0
-
Add various new ways to customize
ThreadandComment:- Comments in
Threadcan now be overridden or customized via thecomponentsprop. - New parts of
Comment(content, avatar, author, and date) can now be overridden or customized via thechildren,additionalContent,avatar,author, anddateprops.
- Comments in
-
Fix
commentDropdownItemsprop onThreadnot working as expected in some cases. -
Each
createRoomContext()invocation now creates its own isolated context to allow nesting independent room contexts and theirRoomProvidercomponents. -
Support newer BlockNote versions and bump the minimum required version to v0.43.0. (Thanks @nperez0111 for the contribution!)
-
Improve how inline components passed to
components={{ ... }}props are handled by keeping them stable instead of re-mounting them on every render. -
Move
@radix-ui/*dependencies to theradix-uimono package.
Examples
- New example: AG Grid Comments.
- Update old examples to use new presence and commenting components.
Documentation
- New quickstart: Draggable comments with Next.js.
- New quickstart: Commenting inside AG Grid with Next.js.
- New quickstart: Commenting inside a table with Next.js.
- New quickstart: Realtime avatar and cursor presence with Next.js.
- New guide: How to add users to Liveblocks presence components.
- Mention
sk_localdevandpk_localdevkeys more explicitly in dev server docs. - Mention
["comments:write"]permission under authentication.
-
Week 9 v3.14.1
- Fix paginated hooks (
useThreads,useInboxNotifications, anduseAiChats) stopping pagination after the firstfetchMore()call when auto-paginating in auseEffect.
Zen Router
- Zen Router was released, our open-source HTTP router.
- Documentation website for Zen Router was published.
- Repo for Zen Router was published.
Website
- New blog post: Introducing Zen Router: our open-source type-safe router compatible with Cloudflare Workers.
Examples
- Next.js Starter Kit was updated to support new features.
- Organization switcher powered by tenants/organizations, with separate inboxes in each.
- New universal header built with
useIsInsideRoom. - New share menu with private/org/public permissions.
- Filters for private/org/public documents on dashboard.
- New Document shape with new permissions added.
- Better UX in various places and tidied project structure.
- Fix text size in Next.js Starter Kit on mobile devices. Thank you @chrrrs!
Showcase
- New item: Next.js Starter Kit for realtime collaboration.
- New item: An inbox for each workspace.
- New item: Share menu with live permissions.
- Fix paginated hooks (
Week 8 Open source
This week we've open-sourced the Liveblocks sync engine and dev server.
v3.14 🥧
This release adds support for opting-in to the new storage engine on a per-room basis. The new storage engine can support larger documents, is more performant, is considered more stable, and will eventually become our default engine for all new rooms in the future. As of this release, the default storage engine still remains engine version 1.
To give it a try, simply pass
engine: 2when entering a new room. After a room is created, you cannot change the engine it was created with anymore.or:
-
Support for selecting the preferred engine when entering new rooms:
client.enterRoom("my-new-room", { engine: 2 }) -
Internal protocol optimizations to support larger storage documents
-
Add new config option
createClient({ baseUrl: "https://..." })to allow connecting to the Liveblocks dev server -
Improve
LiveListperformance when processing large batches of operations -
Improve
LiveList.push()efficiency to prevent unbounded position string growth over time -
Fix crash when clearing documents with a large number of keys
-
Remove the
largeMessageStrategyclient option. The WebSocket message limit has been increased from 1 MB to 32 MB, making this setting obsolete. -
Support for selecting the preferred engine when entering new rooms:
<RoomProvider id="my-new-room" engine={2}>...</RoomProvider> -
Add new config option
<LiveblocksProvider baseUrl="https://..." />to allow connecting to the Liveblocks dev server -
Exclude marking a thread or inbox notification as read from blocking navigation when
preventUnsavedChangesis enabled. -
Portaled elements now respect the
portalContaineroption from@liveblocks/react-ui’sLiveblocksUiConfiginstead of always usingdocument.body. -
Support for selecting the preferred engine when entering new rooms:
enterRoom("my-new-room", { engine: 2 }) -
Add new
.setPresence()method to set ephemeral presence for a user in a room via the REST API, without requiring a WebSocket connection -
Deprecated
tenantIdparameter in client methods, useorganizationIdinstead.
Website
- New blog post: Open sourcing the Liveblocks sync engine and dev server.
Documentation
- New page: Dev server.
- New page: Management API.
- New page: Multi-Factor Authentication.
- New guide: How to set up Continuous Integration (CI) testing.
- New guide: How to set up End-to-End (E2E) testing with Playwright.
- New guide: The new Storage engine and its benefits.
- Updated overview information on Storage.
- Updated overview inforamtion on Yjs.
Dashboard
- The Management API is now available in private beta for Enterprise customers.
- We added Multi-Factor Authentication (MFA) support. Users can now enable MFA in their account pesonal settings for enhanced security.
- New toggle to opt-in to use v2 Storage engine for all new rooms created going forward.
Showcase
- New item: [Develop locally with the dev server)[https://liveblocks.io/showcase/dev-server-tldraw].
Examples
- Add dev server guide to all fully-supported example READMEs.
-
Week 7 v3.13.5
- Replace
y-tiptapwithy-prosemirrorto prevent plugin key conflict, which was causing change source to be incorrectly set in BlockNote.
Documentation
- Add
.mdto the end of any docs page to view a markdown representation of it. - This
.mdis mentioned as analternatelink on each docs page. - Fetching any docs page with a priority
text/markdownheader will return markdown.
Showcase
- New item: Multiplayer table.
- Replace
Week 6 v3.13.4
- Fix an issue where
FloatingComposerwouldn’t auto-focus andFloatingToolbarwould conflict with it.
Examples
- Fixed BlockNote example.
- Updated Nuxt example.
Documentation
- Update Next.js authentication guides to use
.env.local.
- Fix an issue where
Week 5 Documentation
- New quickstart flow, prioritizing products, and use cases.
- New quickstart guides for Notifications in two different categories.
- New quickstart guide for Tldaw.
- New guide: How to notify users about unread custom notifications outside of your app.
- New guide: How to notify users about unread comments outside of your app.
- A number of updated dashboard screenshots.
Dashboard
- New quickstart flow to match the documentation update.
- Get your API key from the quickstart page.
Examples
- Updated all examples to use the latest versions of their major frameworks.
- Updated all packages in all examples.
Week 4 v3.13.3
-
Bump hardcoded client-side socket connection timeout from 10s to 20s.
-
Add more detailed timing info to
enableDebugLoggingto better debug connection issues. -
Fix an issue where
ComposerandAiComposerwould throw an error when mounted/unmounted.
-
Week 3 v3.13.2
- Add a new
alwaysUseKnowledgeoption when creating or updating copilots. When this option is enabled, the copilot retrieves and uses the uploaded knowledge sources on each user query. When disabled, the copilot will retrieve the uploaded knowledge sources only when the user query relates to the knowledge prompt set on the copilot.
v3.13.1
- Fix issue where storage subscriptions wouldn't fire after concurrent move and
set operations, causing stale
LiveListstate in UI.
v3.13.0
This release adds support for comment metadata, allowing you to attach custom metadata to individual comments in the same way as thread metadata.
-
Support typing comment metadata globally via the
Liveblocksinterface. -
Improve
CommentBodytypes. -
Internal refactorings to prepare for upcoming protocol updates.
-
Add new parameters to
createThread,createComment, andeditCommentto attach and update comment metadata. -
Add
editCommentMetadatamethod to update only a commentʼs metadata. -
Add new parameters to
useCreateThread,useCreateComment, anduseEditCommentto attach and update comment metadata. -
Add
useEditCommentMetadatahook to update only a commentʼs metadata. -
Add
commentMetadataprop toComposerto attach and update comment metadata. -
Add
commentMetadataprop toFloatingComposerto attach and update comment metadata. -
Fix
Toolbarnot reflecting the editorʼs current state. -
Add new parameters to
createThread,createComment, andeditCommentto attach and update comment metadata. -
Add
editCommentMetadatamethod to update only a commentʼs metadata. -
Add
commentMetadataUpdatedwebhook event.
- Add a new
Week 2 Dashboard
- Data refreshes much more quickly when viewing rooms.
- Added floating avatar on pricing page.
- Fixed bug with linking integrations to
create-liveblocks-appCLI.