This June, we’ve added collaborative .docx editing and new AI features.

- [Collaborative .docx files with SuperDoc](#collaborative-docx-files-with-superdoc):
  Multiplayer Microsoft Word files.
- [AI knowledge re-ingestion](#ai-knowledge-re-ingestion): Automatically keep
  copilot knowledge up to date.
- [New AI examples](#new-ai-examples): An advanced AI spreadsheet and a realtime
  AI chat.
- [The future of human and AI apps](#the-future-of-human-and-ai-apps): Our
  vision for agent collaboration.

## Upgrade now [#upgrade-now]

To use the latest features, update your packages with the following command.

```bash
npx liveblocks upgrade
```

If you were previously on Liveblocks 3.17 or below, make sure to follow our
[upgrade guides](/docs/platform/upgrading) before updating.

## Collaborative .docx files with SuperDoc [#collaborative-docx-files-with-superdoc]

[SuperDoc](https://superdoc.dev) is an open-source editor that runs in the
browser and works directly with `.docx` files, the format used by Microsoft
Word.

With Liveblocks, you can add a realtime collaboration layer around SuperDoc,
handling shared document state, presence, and conflict-free syncing so teams can
build collaborative Word editing without having to engineer the multiplayer
infrastructure from scratch.

<Figure
  caption={
    <>
      Our{" "}
      <Link href="/examples/collaborative-text-editor/nextjs-yjs-superdoc">
        Collaborative SuperDoc editor
      </Link>{" "}
      example
    </>
  }
>
  <MuxVideo
    playbackId="Rj02DwT1zT02D9OayjwKUKLwUOAEcWxXpP16s5Tp01fbaU"
    alt="Superdoc example"
    static={true}
  />
</Figure>

The collaborative editor uses Liveblocks-powered Yjs, and supports rich-text
formatting, multiplayer undo/redo, and a suggestion mode, allowing owners to
easily accept/deny changes from other users.

### Get started with SuperDoc

To get started, we’ve published guides for five frameworks:
[Next.js](/docs/get-started/yjs-superdoc-nextjs),
[React](/docs/get-started/yjs-superdoc-react),
[JavaScript](/docs/get-started/yjs-superdoc-javascript),
[Svelte](/docs/get-started/yjs-superdoc-svelte), and
[Vue.js](/docs/get-started/yjs-superdoc-vuejs). There is also a
[live example](/examples/collaborative-text-editor/nextjs-yjs-superdoc) you can
download and try out.

## AI knowledge re-ingestion [#ai-knowledge-re-ingestion]

[AI Copilots](/ai-copilots) allows you to create advanced singleplayer AI chats
with a ready-made React component. In minutes, you can import a chat into your
application, that can understand context, take actions, and interact with your
front end.

<Figure
  caption={
    <>
      Our{" "}
      <Link href="/examples/ai-dashboard-reports">
        AI Dashboard Reports example
      </Link>{" "}
      highlights many different features.
    </>
  }
>
  <video autoPlay loop muted playsInline>
    <source
      src="/images/blog/liveblocks-3-0/many-features.mp4"
      type="video/mp4"
    />
  </video>
</Figure>

One of its key features is
[knowledge](/docs/collaboration-features/ai-copilots/knowledge), which allows
you to submit websites and files to your AI, enabling it to accurately answer
questions using your own information.

You can now re-ingest web knowledge sources automatically on a set interval, so
a copilot’s answers stay current as the underlying pages change—for example,
re-crawling your docs or pricing page every day. Additionally, we’ve also
reworked the dashboard UI, making it easier to manage copilots and reuse
knowledge sources across multiple copilots.

<Figure caption="Opening a copilot, enabling a knowledge source, and setting daily re-ingestion.">
  <MuxVideo
    playbackId="3JkV36FlMuI5RcnAzuOAdc6dSYq66nyLf00OmvVnzkNo"
    alt="AI knowledge re-ingestion dashboard"
    static={true}
  />
</Figure>

You can also trigger re-ingestion manually at any time, by clicking the
“Re-index” button.

<Figure caption="Triggering re-ingestion manually.">
  <MuxVideo
    playbackId="iRhpRb7WLyiSIqP02j3HGRMyduzicsI8gL0101RlEOzwtw"
    alt="Knowledge manual reindex"
    static={true}
  />
</Figure>

You can find the new UI in the [dashboard](/dashboard), or
[get started](/docs/get-started/ai-copilots) with a new project.

## New AI examples [#new-ai-examples]

We’ve added two new examples showing how to build realtime AI apps with
[feeds](/docs/collaboration-features/ai-collaboration) and
[Vercel AI Elements](https://elements.ai-sdk.dev/). These examples demonstrate
exactly how to add these features to your product, and are a solid starting
point for your own projects.

### AI Spreadsheet

In our new [AI Spreadsheet](/examples/ai-spreadsheet/nextjs-ai-spreadsheet)
example, an AI agent can read and edit cells alongside you, in realtime. Each
cell is synched to
[Liveblocks Storage](/docs/collaboration-features/multiplayer/sync-engine/liveblocks-storage),
meaning state is fully multiplayer, for both humans and agents.

<Figure
  caption={
    <>
      Our{" "}
      <Link href="/examples/ai-spreadsheet/nextjs-ai-spreadsheet">
        AI Spreadsheet
      </Link>{" "}
      example
    </>
  }
>
  <MuxVideo
    playbackId="37PP56QwN9U8eJEyj84Kfc537aXKs9g9n58HWclmAzw"
    alt="AI Spreadsheet example"
    static={true}
  />
</Figure>

As the AI works, you can see its
[presence](/docs/collaboration-features/ai-collaboration#Presence) in the UI as
it modifies cells. Additionally, you can leave comments on table cells, and
trigger AI by tagging it inside a thread.

You can find the example in our gallery, under
[AI Spreadsheet](/examples/ai-spreadsheet/nextjs-ai-spreadsheet).

### Realtime AI Elements Chats

Our
[Realtime AI Elements Chats](/examples/ai-elements-realtime/nextjs-ai-elements-realtime)
example shows how to build a multiplayer AI chat with AI Elements, where
multiple users share and follow the same conversation in realtime.

<Figure
  caption={
    <>
      Our{" "}
      <Link href="/examples/ai-elements-realtime/nextjs-ai-elements-realtime">
        Realtime AI Elements Chats
      </Link>{" "}
      example
    </>
  }
>
  <MuxVideo
    playbackId="vX2DhzLoWJoBcqLNYIHq3bRQnreQ6mrhW800Rh00d1Ie00"
    alt="Realtime AI Elements Chats example"
    static={true}
  />
</Figure>

Messages update live for all connected users, including as they stream in. You
cnn also create new chats, and switch between them.

You can find the example in our gallery, under
[Realtime AI Elements Chats](/examples/ai-elements-realtime/nextjs-ai-elements-realtime).

## The future of human and AI apps [#the-future-of-human-and-ai-apps]

This June, we published a new post on how humans and AI will work together in
the next generation of apps—our perspective on where collaborative software is
heading as AI agents become active participants alongside people.

<UniversalLink href="/blog/how-humans-and-ai-will-work-together-in-the-next-generation-of-apps">
  <Figure>
    <Image
      src="/images/blog/social-images/how-humans-and-ai-will-work-together-in-the-next-generation-of-apps.jpg"
      alt="How humans and AI will work together in the next generation of apps"
      width={750}
      height={394}
      quality={95}
    />
  </Figure>
</UniversalLink>

It details how you can integrate AI agents into your product as active
participants.

<ButtonLink
  href="/blog/how-humans-and-ai-will-work-together-in-the-next-generation-of-apps"
  size="lg"
>
  Read blog post
</ButtonLink>

## Minor improvements [#minor-improvements]

- Fixed a bug where sending a too-large WebSocket message could sometimes
  overwrite a room’s top-level Storage key with `initialStorage`, causing data
  loss. Thanks for reporting [@watemerald](https://github.com/watemerald)!
- Fixed several `LiveList` and `LiveObject` divergence and reconnection issues:
  concurrent `LiveList.push()` calls settling out of order, a `LiveObject` key
  deleted while offline reappearing on reconnect, redundant update notifications
  on reconnect, and the removed value (`deletedItem`) missing from change
  notifications.
- Fixed a remaining `LiveList` divergence after reconnects, where a pending
  `push` could still diverge under specific timing conditions despite the
  earlier 3.19.4 fix.
- Added resource-specific permissions. You can now start from a `*:read` or
  `*:write` base, then grant or deny access per resource—Storage, Comments, and
  Feeds—using new permission strings like `storage:none` or `comments:read`.
- Deprecated `session.FULL_ACCESS` and `session.READ_ACCESS` in
  `@liveblocks/node` in favor of `["*:write"]` and `["*:read"]` respectively.
- Deprecated `room.getStorageSnapshot()` in favor of `room.getStorageOrNull()`.
- Added a “?” button to various examples, featuring a pop-up that explains how
  to use them.
- Updated the get started guides for Liveblocks Storage with more hook examples.
- Updated the [dev server](/docs/tools/dev-server) with a new internal storage
  format (v1.6.0; existing local dev rooms are not migrated and appear empty
  after upgrading), along with matching `LiveList` reconnect fixes (v1.6.1).

### Upgrade

To use these latest features, update your packages with:

```bash
npx liveblocks upgrade
```

## Contributors [#contributors]

<Contributors
  gitHubUsernames={[
    "ctnicholas",
    "marcbouchenoire",
    "nimeshnayaju",
    "nvie",
    "ofoucherot",
    "pierrelevaillant",
    "watemerald",
  ]}
/>