// the find
ueberdosis/hocuspocus
The Yjs CRDT WebSocket backend for conflict-free real-time collaboration in your app.
Hocuspocus is the server-side counterpart to Yjs, handling WebSocket connections and document persistence for real-time collaborative editing. It's the piece you need when you're building a Tiptap or ProseMirror app and don't want to wire up y-websocket manually. Maintained by the Tiptap team, so it tracks that ecosystem closely.
The extension model is genuinely well-designed — Redis, S3, SQLite, webhooks, throttling are all drop-in packages rather than config flags, and the hook system (onAuthenticate, onChange, onStoreDocument, etc.) covers the lifecycle points you actually need to intercept. The Redis extension handles horizontal scaling without you having to think about pub/sub yourself, which is the main thing that kills DIY Yjs backends. The test suite is unusually thorough for this kind of library — there are explicit tests for unauthenticated queue limits, debounce behavior, and session awareness edge cases. The playground includes working examples against Express, Hono, Koa, Bun, and Deno, so you're not guessing at framework integration.
The ueberdosis business model creates an uncomfortable tension: the hosted Tiptap Collab product competes with what you'd self-host, so there's a structural incentive to keep the self-hosted path slightly painful. The README is genuinely thin — it points you to docs on tiptap.dev and calls it done. If you want to understand the message protocol or how document unloading works, you're reading source. Scaling beyond a single Redis node (Redis Cluster, Sentinel failover) is underdocumented and the extension doesn't appear to handle cluster-mode topology changes. The transformer package only covers Tiptap/Prosemirror formats; if your schema diverges from Tiptap conventions you're writing your own Y.Doc serialization.