Getting Tiptap state on the server

Using @liveblocks/node, it’s possible to retrieve the state of your Tiptap document, and its Y.Doc, on the server.

Getting Tiptap document state

Using Liveblocks.getYjsDocumentAsBinaryUpdate you can fetch your Yjs data, and place it inside a Y.Doc. Because Tiptap is a wrapper around ProseMirror, we can then call yDocToProseMirror from y-prosemirror to retrieve the Tiptap editor’s state.

import * as Y from "yjs";import { Liveblocks } from "@liveblocks/node";import { yDocToProsemirrorJSON } from "y-prosemirror";
const liveblocks = new Liveblocks({ secret: "",});
export async function POST() { // Get your Yjs data as a binary update const update = await liveblocks.getYjsDocumentAsBinaryUpdate("my-room-name");
// Create a Yjs document const yDoc = new Y.Doc();
// Apply the binary update to `yDoc` Y.applyUpdate(yDoc, new Uint8Array(update));
// Get Tiptap state from the Yjs property it uses, "default" const tiptapState = yDocToProsemirrorJSON(yDoc, "default");
// { type: "doc", content: [{ type: "paragraph", content: [...] }] } console.log(tiptapState);}

If you’d like to edit your document, make sure to read how to use your Y.Doc on the server.