Files
upstream-mirror e0c588ca1c
Some checks failed
build / lint (22) (push) Failing after 17s
build / test (22) (push) Failing after 8s
build / lint (23) (push) Failing after 2s
build / build (22) (push) Has been skipped
build / build (23) (push) Has been skipped
build / test (23) (push) Failing after 4s
docsearch / docsearch (push) Failing after 1s
snapshot of https://github.com/ueberdosis/hocuspocus.git @ cf3cfa355b4d3bb61c6b6c80071f71783e32470e (2026-09-15)
2026-09-15 17:21:35 +05:00
..

@hocuspocus/provider

Version Downloads License Sponsor

The client-side provider for Hocuspocus. Connects to a Hocuspocus server over WebSockets and syncs one or more Y.js documents — including awareness (presence), authentication, and stateless messaging.

Building a React app? Use @hocuspocus/provider-react instead — it wraps the provider in components and hooks so React handles the lifecycle for you (including StrictMode double-mounts).

Installation

npm install @hocuspocus/provider yjs

Usage

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

const ydoc = new Y.Doc()

const provider = new HocuspocusProvider({
  url: "ws://127.0.0.1:1234",
  name: "example-document",
  document: ydoc,
})

Changes to ydoc are now synced to every other client connected to the same name.

Authenticating

Pass a token — it's forwarded to the server's onAuthenticate hook:

new HocuspocusProvider({
  url: "wss://collab.example.com",
  name: "example-document",
  document: ydoc,
  token: "super-secret-token",
})

Sharing a socket across documents

Create a HocuspocusProviderWebsocket once, then reuse it for multiple documents:

import {
  HocuspocusProvider,
  HocuspocusProviderWebsocket,
} from "@hocuspocus/provider"

const socket = new HocuspocusProviderWebsocket({ url: "ws://127.0.0.1:1234" })

const doc1 = new HocuspocusProvider({ websocketProvider: socket, name: "doc-1" })
const doc2 = new HocuspocusProvider({ websocketProvider: socket, name: "doc-2" })

Call provider.destroy() to disconnect a single document. Call socket.destroy() to tear down the shared connection.

Documentation

Full configuration, events, and awareness reference: tiptap.dev/docs/hocuspocus/provider.

License

MIT — see LICENSE.md.