• Week 11

    Week 11
    WEEK11

    v3.15.2

    • Deprecate the engine option on enterRoom(). This flag no longer has any effect.

    • Deprecate the engine prop on RoomProvider. This flag no longer has any effect.

    • Deprecate the engine option on createRoom(). This flag no longer has any effect.

    • Stop sending the engine field in the room creation request body.

    v3.15.1

    • Add gap prop to AvatarStack to control the --lb-avatar-stack-gap CSS variable.
    • Add padding prop to CommentPin to control the --lb-comment-pin-padding CSS variable.
    • Fix size props on AvatarStack and CommentPin not working as expected when passing numbers.
    • Fix autoFocus prop on FloatingComposer.
    • Improve avatars’ ordering and max logic in AvatarStack.
    • Support children prop on CommentPin.

    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.

    Contributors

    Contributors include:nviemarcbouchenoirectnicholas

    3 authors

  • Week 10

    Week 10
    WEEK10

    v3.15.0

    • Add various new ways to customize Thread and Comment:

      • Comments in Thread can now be overridden or customized via the components prop.
      • New parts of Comment (content, avatar, author, and date) can now be overridden or customized via the children, additionalContent, avatar, author, and date props.
    • Fix commentDropdownItems prop on Thread not working as expected in some cases.

    • Each createRoomContext() invocation now creates its own isolated context to allow nesting independent room contexts and their RoomProvider components.

    • 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 the radix-ui mono package.

    Examples

    • New example: AG Grid Comments.
    • Update old examples to use new presence and commenting components.

    Documentation

    Contributors

    Contributors include:nperez0111marcbouchenoirectnicholas

    3 authors

  • Week 9

    Week 9
    WEEK9

    v3.14.1

    • Fix paginated hooks (useThreads, useInboxNotifications, and useAiChats) stopping pagination after the first fetchMore() call when auto-paginating in a useEffect.

    Zen Router

    Website

    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

    Contributors

    Contributors include:flowflorentchrrrsnviectnicholas

    4 authors

  • Week 8

    Week 8
    WEEK8

    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: 2 when entering a new room. After a room is created, you cannot change the engine it was created with anymore.

    // Vanilla JSclient.enterRoom("my-new-room", { engine: 2 });

    or:

    // In React<RoomProvider id="my-new-room" engine={2}>  ...</RoomProvider>
    • 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 LiveList performance 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 largeMessageStrategy client 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 preventUnsavedChanges is enabled.

    • Portaled elements now respect the portalContainer option from @liveblocks/react-ui’s LiveblocksUiConfig instead of always using document.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 tenantId parameter in client methods, use organizationId instead.

    Website

    Documentation

    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

    Examples

    • Add dev server guide to all fully-supported example READMEs.

    Contributors

    Contributors include:nviemarcbouchenoireflowflorentjrownyctnicholassugardariuspierrelevaillantnimeshnayaju

    8 authors

  • Week 7

    Week 7
    WEEK7

    v3.13.5

    • Replace y-tiptap with y-prosemirror to prevent plugin key conflict, which was causing change source to be incorrectly set in BlockNote.

    Documentation

    • Add .md to the end of any docs page to view a markdown representation of it.
    • This .md is mentioned as an alternate link on each docs page.
    • Fetching any docs page with a priority text/markdown header will return markdown.

    Showcase

    Contributors

    Contributors include:ctnicholasnimeshnayaju

    2 authors

  • Week 6

    Week 6
    WEEK6

    v3.13.4

    • Fix an issue where FloatingComposer wouldn’t auto-focus and FloatingToolbar would conflict with it.

    Examples

    • Fixed BlockNote example.
    • Updated Nuxt example.

    Documentation

    • Update Next.js authentication guides to use .env.local.

    Contributors

    Contributors include:bxffmarcbouchenoirectnicholas

    3 authors

  • Week 5

    Week 5
    WEEK5

    Documentation

    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.

    Contributors

    Contributors include:ctnicholasstevenfabrepierrelevaillant

    3 authors

  • Week 4

    Week 4
    WEEK4

    v3.13.3

    • Bump hardcoded client-side socket connection timeout from 10s to 20s.

    • Add more detailed timing info to enableDebugLogging to better debug connection issues.

    • Fix an issue where Composer and AiComposer would throw an error when mounted/unmounted.

    Contributors

    Contributors include:nviemarcbouchenoire

    2 authors

  • Week 3

    Week 3
    WEEK3

    v3.13.2

    • Add a new alwaysUseKnowledge option 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 LiveList state 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 Liveblocks interface.

    • Improve CommentBody types.

    • Internal refactorings to prepare for upcoming protocol updates.

    • Add new parameters to createThread, createComment, and editComment to attach and update comment metadata.

    • Add editCommentMetadata method to update only a commentʼs metadata.

    • Add new parameters to useCreateThread, useCreateComment, and useEditComment to attach and update comment metadata.

    • Add useEditCommentMetadata hook to update only a commentʼs metadata.

    • Add commentMetadata prop to Composer to attach and update comment metadata.

    • Add commentMetadata prop to FloatingComposer to attach and update comment metadata.

    • Fix Toolbar not reflecting the editorʼs current state.

    • Add new parameters to createThread, createComment, and editComment to attach and update comment metadata.

    • Add editCommentMetadata method to update only a commentʼs metadata.

    • Add commentMetadataUpdated webhook event.

    Contributors

    Contributors include:nimeshnayajumarcbouchenoirenvie

    3 authors

  • Week 2

    Week 2
    WEEK2

    Dashboard

    • Data refreshes much more quickly when viewing rooms.
    • Added floating avatar on pricing page.
    • Fixed bug with linking integrations to create-liveblocks-app CLI.

    Contributors

    Contributors include:ctnicholas

    1 authors

Next