• Week 3
    WEEK3

    v2.16.0

    We've created new toolbar elements that allow you to import a default floating toolbar in Tiptap and Lexical. It's also possible to use these APIs to build custom or static toolbars. We've updated a number of our examples to show how to do this.

    Our error listener APIs will now receive more errors in general, including errors from using Comments & Notifications. Previously, these would only receive room connection errors from Presence, Storage, or Yjs. For example, now when creation of a thread fails, deletion of a comment fails, marking a notification as read fails, etc.

    // ❌ Before: required a RoomProvider and would only notify about errors for that room// ✅ Now: requires a LiveblocksProvider and will notify about errors for any roomuseErrorListener((err: LiveblocksError) => {  /* show toast, or notify Sentry, Datadog, etc */});

    See the Upgrade Guide for 2.16 to learn how to adapt your code.

    We now support filtering threads by absence of metadata as well in useThreads({ query }) (or useUserThreads_experimental({ query })). For example, you can now filter threads that do not have a color attribute set in their metadata:

    useThreads({  query: {    // Filter any "pinned" threads that don't have a color set    metadata: {      pinned: true,      color: null, // ✨    },  },});

    See the Upgrade Guide for 2.16 to learn how to adapt your code.

    • Automatically refresh Comments and Notifications when the browser window regains focus.

    The error listener APIs will now receive more errors in general, including errors from using Comments & Notifications. Previously, these would only receive room connection errors from Presence, Storage, or Yjs.

    // 👌 Same as before, but might now also receive errors related to Comments & Notificationsroom.subscribe("error", (err) => { ... });
    • Most of the icons used in the default components are now usable as <Icon.* /> via import { Icon } from "@liveblocks/react-ui".

    • Add <Toolbar /> and <FloatingToolbar /> components to simplify building editor toolbars. They come with default controls out-of-the-box based on what the editor they’re attached to supports, but they’re also heavily extendable and customizable. Use inner components like <Toolbar.Toggle /> and <Toolbar.Separator /> to extend the defaults with your own actions, or start from scratch while customizing some of the defaults via <Toolbar.SectionInline /> or <Toolbar.BlockSelector /> for example.

    • Add isTextFormatActive and isBlockNodeActive utilities.

    Examples

    Dashboard

    • Allow rate limit configuration for webhook endpoints.
    • Fix download comments attachments action in text editor view from room detail page.

    Contributors

    Contributors include:jrownysugardariusctnicholasnviemarcbouchenoire

    5 authors

  • Week 2
    WEEK2

    2.15.2

    • Fix useLayoutEffect warnings when using React versions lower than 18.3.0 and SSR.

    • Fix memory leak in some hooks.

    • Fix bug where querying metadata with useThreads() would not always reuse the cache correctly.

    Website

    Contributors

    Contributors include:ctnicholasnviemarcbouchenoire

    3 authors

  • Week 52
    WEEK52

    2.15.1

    • Fix rollup config to always ensure "use client" directives are on top of files after build.

    Contributors

    Contributors include:sugardarius

    1 authors

  • Week 51
    WEEK51

    v2.15.0

    • Breaking: Drop support for React 17 (and 16). If you’re unable to upgrade React to 18 or higher, you can still continue to use Liveblocks 2.14.0, which is the last version to support React versions lower than 18.

    • The published target for all Liveblocks packages is now ES2022 (up from ES2020). This should have a positive impact on your bundle size[*].

    • Various internal refactorings and code cleanup.

    [*] If you bundle for the browser, this should not be a problem, as all major browsers support ES2022. If however you're specifically targeting very old browsers (mostly IE), then you may need to configure your bundler (Webpack, rollup, esbuild, etc) to also down-compile code from dependencies inside node_modules for you, if you aren't already.

    Website

    Examples

    • Adjusted email templates to allow switching the logo more easily.
    • Next.js Starter Kit improvements:
      • Renaming a document updates it immediately for everyone else.
      • Clicking outside of the rename input saves the new name.
      • Added tldraw's dark mode.
      • Added option to filter for canvas in the room listing.
      • Upgraded Liveblocks.
      • Fixed a z-index problem and added a hover style.

    Documentation

    Contributors

    Contributors include:ctnicholasnviemarcbouchenoire

    3 authors

  • Week 50
    WEEK50

    v2.14.0

    v2.13.2

    • Fix report text editor function's call. Now we wait for the room's status to be connected to report the text editor instead of reporting directly after room creation / loading.

    • Fix report text editor function's call. Now we wait for the room's status to be connected to report the text editor instead of reporting directly after room creation / loading.

    Examples

    Documentation

    Website

    • New blog post: What's new in Liveblocks: November 2024.
    • Revamped the Liveblocks blog:
      • Added the ability to switch between categories to find relevant posts.
      • Added the ability to search posts and filter results using tags.
      • Updated the layout with a table of contents, writer information, and featured posts.

    Contributors

    Contributors include:sugardariusctnicholas

    2 authors

  • Week 49
    WEEK49

    v2.13.1

    • Improve the spacing consequences of --lb-line-height (introduced in 2.13.0) in some contexts.

    Dashboard

    • Multiple Tiptap editors are now supported in a room's Text Editor view.

    Documentation

    Contributors

    Contributors include:ctnicholaspierrelevaillantmarcbouchenoire

    3 authors

  • Week 48
    WEEK48

    v2.13.0

    • Add a formatting toolbar to Composer which appears when selecting text. It’s enabled by default in the default components and can also be custom built with new primitives (Composer.FloatingToolbar and Composer.MarkToggle) and new APIs (const { marks, toggleMark } = useComposer()).
    • Add new --lb-line-height token to control the line height of main elements (e.g. comment bodies in comments and composers).
    • Remove Timestamp export mistakenly added to @liveblocks/react-ui, it should be imported from @liveblocks/react-ui/primitives instead.

    Website

    Examples

    Documentation

    Contributors

    Contributors include:ctnicholasmarcbouchenoireflowflorent

    3 authors

  • Week 47
    WEEK47

    v2.12.2

    • Add new options for useLiveblocksExtension to allow setting initial content, experimental offline support, and the field name.

    • Update floating composer to support onComposerSubmit handler and closing the composer with the escape key.

    • Add support for Zustand v5.

    v2.12.1

    • Prevent unsupported attachment previews from loading infinitely.
    • Refactored Thread and Comment component to be used outside of the RoomProvider component.

    Documentation

    Examples

    Contributors

    Contributors include:ctnicholasjrownysugardariusmarcbouchenoirenimeshnayaju

    5 authors

  • Week 46
    WEEK46

    v2.12.0

    This release adds support for tracking synchronization status of pending local changes for any part of Liveblocks. Whether you use Storage, Text Editors, Threads, or Notifications. If the client’s sync status is synchronized, it means all local pending changes have been persisted by our servers. If there are pending local changes in any part of Liveblocks you’re using, then the client’s sync status will be synchronizing.

    Also, we’re introducing a way to prevent browser tabs from being closed while local changes are not yet synchronized. To opt-in to this protection, enable preventUnsavedChanges option on the client:

    • In React: <LiveblocksProvider preventUnsavedChanges />

    • Otherwise: createClient({ preventUnsavedChanges: true })

    • Add new API client.getSyncStatus() method.

    • Add new client config option: preventUnsavedChanges.

    • Expose ToImmutable<T> helper type.

    • Add new hook useSyncStatus that can be used to tell whether Liveblocks is synchronizing local changes to the server. Useful to display a "Saving..." spinner in your application, when used with useSyncStatus({ smooth: true }).

    • Add new LiveblocksProvider prop: preventUnsavedChanges.

    • Deprecated APIs:

      • useStorageStatus is now deprecated in favor of useSyncStatus.
    • Take composers into account when the new preventUnsavedChanges option is set.

    • Add new hook useIsEditorReady which can be used to show a skeleton UI before the editor has received the initial text from the server.

    • Deprecated APIs:

      • useEditorStatus is now deprecated in favor of useIsEditorReady (or useSyncStatus).

    Examples

    Dashboard

    • Redirect users to a specific error page on authentication failure.

    Contributors

    Contributors include:ctnicholasnviemarcbouchenoirenimeshnayajusugardarius

    5 authors

  • Week 45
    WEEK45

    v2.11.0

    • Upgrade dependencies.

    • Fix minor appearance issues related to attachments.

    • Fix pasting issues introduced in 2.10.0.

    • Fix regression with useThreads that caused the hook to return an error if its associated room did not exist.

    • Initial release.

    • Initial release.

    Documentation

    Examples

    Contributors

    Contributors include:sugardariusnimeshnayajumarcbouchenoirejrownyctnicholas

    5 authors

We use cookies to collect data to improve your experience on our site. Read our Privacy Policy to learn more.