Getting Started

The two code examples below show a working example of the backend and frontend to sync an array with multiple users. We have also added some examples in the playground folder of the repo, that you can start by running npm run playground in the repository root. They are meant for internal usage during Hocuspocus development, but they might be useful to understand how everything can be used.



You can install other packages later, let’s start with a basic version for now:

npm install @hocuspocus/server

# Please note, yarn does not install peer-deps by default, so when using yarn,
# you'll need to install y-protocols and yjs as well.
yarn add @hocuspocus/server y-protocols yjs


import { Hocuspocus } from "@hocuspocus/server";

// Configure the server …
const server = new Hocuspocus({
  port: 1234,

// … and run it!



npm install @hocuspocus/provider yjs


Now, you’ll need to use Y.js in your frontend and connect to the server with the WebSocket provider. With Tiptap, our very own text editor, it’s also just a few lines of code.

import * as Y from "yjs";
import { HocuspocusProvider } from "@hocuspocus/provider";

// Connect it to the backend
const provider = new HocuspocusProvider({
  url: "ws://",
  name: "example-document",

// Define `tasks` as an Array
const tasks = provider.document.getArray("tasks");

// Listen for changes
tasks.observe(() => {
  console.log("tasks were modified");

// Add a new task
tasks.push(["buy milk"]);