• DocsDocs
  • PricingPricing
Sign in
Get started
Sign in
Get started
    • Ready-made features
      • Comments
        Comments

        Contextual commenting

      • Multiplayer
        Multiplayer

        Realtime collaboration

      • AI Agents
        AI Agents

        Collaborative AI agents

      • Notifications
        Notifications

        Smart alerts for your app

    • Platform
      • Collaboration Infrastructure
        Collaboration Infrastructure

        The engine behind multiplayer apps

      • DevTools
        DevTools

        Browser extension

    • Tools
      • Examples

        Gallery of open source examples

      • Showcase

        Gallery of collaborative experiences

      • Next.js Starter Kit

        Kickstart your Next.js collaborative app

      • Tutorial

        Step-by-step interactive tutorial

      • Guides

        How-to guides and tutorial

      • Figma UI Kit

        Liveblocks Collaboration Kit

    • Company
      • Blog

        The latest from Liveblocks

      • Customers

        The teams Liveblocks empowers

      • Changelog

        Weekly product updates

      • Security

        Our approach to security

      • About

        The story and team behind Liveblocks

  • Docs
  • Pricing
  • Ready-made features
    • Comments
    • Multiplayer
    • AI Agents
    • Notifications
    Platform
    • Collaboration Infrastructure
    • DevTools
    Solutions
    • People platforms
    • Sales tools
    • Startups
    Use cases
    • Multiplayer forms
    • Multiplayer text editor
    • Multiplayer creative tools
    • Multiplayer whiteboard
    • Comments
    • Sharing and permissions
    • Document browsing
  • Resources
    • Documentation
    • Examples
    • Showcase
    • React components
    • Next.js Starter Kit
    • Tutorial
    • Guides
    • Release notes
    Technologies
    • Next.js
    • React
    • JavaScript
    • Redux
    • Zustand
    • Yjs
    • Tiptap
    • BlockNote
    • Slate
    • Lexical
    • Quill
    • Monaco
    • CodeMirror
  • Company
    • Pricing
    • Blog
    • Customers
    • Changelog
    • About
    • Contact us
    • Careers
    • Terms of service
    • Privacy policy
    • DPA
    • Security
    • Trust center
    • Subprocessors
  • HomepageSystem status
    • Github
    • Discord
    • X
    • LinkedIn
    • YouTube
    © 2026 Liveblocks Inc.
Blog/Updates

What's new in Liveblocks: January 2026

We've released custom metadata for comments, an always use knowledge setting for AI Copilots, and an improved quickstart flow.

on February 5th
What's new in Liveblocks: January 2026
February 5th·6 min read
Share article
Product updatesCommentsDocumentation

Ready to get started?

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

Get started for free

Related blog posts

  • What's new in Liveblocks: November 2025

    What's new in Liveblocks: November 2025

    Picture of Chris Nicholas
    December 9th, 2025
    Updates
  • What's new in Liveblocks: October 2025

    What's new in Liveblocks: October 2025

    Picture of Chris Nicholas
    November 13th, 2025
    Updates
  • What's new in Liveblocks: August 2025

    What's new in Liveblocks: August 2025

    Picture of Chris Nicholas
    September 17th, 2025
    Updates

This January, we’ve made improvements to Comments, AI Copilots, onboarding.

  • Comment metadata: Enables two-way sync, custom comment types, more.
  • Always use knowledge: Require copilots to read their knowledge every time.
  • New quickstart flow: New focused get started pages, plus new guides.

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 3.10 or below, make sure to follow our upgrade guides before updating.

Comment metadata

It’s now possible to add custom metadata to individual comments, enabling a host of use cases such as two-way synchronization with external applications like Slack, custom comment types, and more.

Previously, Liveblocks allowed you to add custom metadata to each individual thread, essential for enabling custom thread-level functionality, such as assigning users, adding tags, attaching X/Y coordinates, and more. With the latest release, each comment can now contain custom metadata, allowing for additional comment-level functionality.

Let’s take a look at how this can be used.

Two-way synchronization

Comment metadata now allows for two-way synchronization with external applications such as Slack, meaning that when a user replies to a comment in your application, the reply will be automatically synced to Slack, and vice versa.

Two-way synchronization between Liveblocks and Slack

Slack stores IDs for each message, and using comment metadata, you can now store these IDs in individual comments.

{  "type": "message",  "channel": "C1234567890",  "ts": "1706892457.654321",  "thread_ts": "1706892456.123456",  "user": "U2345678901",  "text": "Hello world"}
await liveblocks.createComment({  data: {    body: {      version: 1,      content: [{ type: "paragraph", children: [{ text: "Hello world" }] }],    },    metadata: {      channel: "C1234567890",      ts: "1706892457.654321",      thread_ts: "1706892456.123456",    },  },  // ...});

Custom comment types

Additionally, you can now create custom comment types and render them however you wish. For example, you could create a custom poll comment, and render this component inside your thread.

A custom poll comment inside a thread

To create this, you could store poll data directly inside comment metadata.

const poll = createComment({  threadId: "th_d75sF3...",  body: {    version: 1,    content: [      {        type: "paragraph",        children: [{ text: "What is your favorite color?" }],      },    ],  },  attachments: [],  metadata: {    type: "poll",    option_red: 3,    option_blue: 2,    option_green: 1,  },});

You can then create your own thread component, choose to render this any way you like, for example with a custom Poll component, alongside Comment and Composer.

function CustomThread({ thread }: { thread: ThreadData }) {  return (    <>      {thread.comments.map((comment) => (        <div key={comment.id}>          <Comment comment={comment} />          {comment.metadata?.type === "poll" && <Poll comment={comment} />}        </div>      ))}      <Composer threadId={thread.id} />    </>  );}

Next month we’ll be releasing an improved way to customize components in your thread directly with the Thread component, meaning you can keep its benefits—such as displaying unread comment messages.

Always use knowledge

AI copilots in our dashboard can internalize knowledge—uploaded files and submitted websites—which the AI can use to answer questions on your data. Copilots now have a new setting that allows you to force AI to read your knowledge base before answering, ensuring each reply is relevant and accurate. To enable it, visit your dashboard and check the “Always use knowledge” option.

Your browser does not support the video tag.Always use knowledge

It’s also possible to enable this setting when modifying your copilot programmatically.

const copilot = await liveblocks.createAiCopilot({  name: "Assistant",  systemPrompt: "You are an AI assistant",  alwaysUseKnowledge: true,  // ...});

New quickstart flow

We’ve thought through our whole onboarding flow, and created a new interactive quickstart section that helps you find specific guides for your use case and technology more quickly than ever. You can also just skip right to getting your API keys.

Your browser does not support the video tag.New quickstart

Alongside the new flow, we’ve added a number of new guides on setting up Liveblocks Notifications, and a new guide for creating a collaborative Tldraw whiteboard. This update lays the groundwork for more get started guides, which will be coming soon!

Minor improvements

  • Support typing comment metadata globally via the Liveblocks interface.
  • 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.
  • 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.
  • Add more detailed timing info to enableDebugLogging to better debug connection issues.
  • Data refreshes much more quickly when viewing rooms in the dashboard.
  • Added floating avatar on pricing page.
  • Bump hardcoded client-side socket connection timeout from 10s to 20s.
  • Internal refactorings to prepare for upcoming protocol updates.
  • Improve CommentBody types.
  • Fix an issue where Composer and AiComposer would throw an error when mounted/unmounted.
  • Fix issue where storage subscriptions wouldn't fire after concurrent move and set operations, causing stale LiveList state in UI.
  • Fix an issue where Composer and AiComposer would throw an error when mounted/unmounted.
  • Fix Toolbar in @liveblocks/react-tiptap not reflecting the editorʼs current state.
  • Fix bug with linking integrations to create-liveblocks-app CLI.

Upgrade

To use these latest features, update your packages with:

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

Contributors

Contributors include:ctnicholasnimeshnayajunviemarcbouchenoirepierrelevaillantstevenfabre

6 authors