Show HN: Hocuspocus 4 – self-hosted Yjs collaboration backend
A robust, flexible, and platform-agnostic real-time collaboration backend for web editors and structured data, leveraging Yjs for conflict-free concurrent edits, now optimized for edge deployment.
View Origin Link
Product Positioning & Context
AI Executive Synthesis
A robust, flexible, and platform-agnostic real-time collaboration backend for web editors and structured data, leveraging Yjs for conflict-free concurrent edits, now optimized for edge deployment.
Hocuspocus v4 addresses a critical infrastructure need for real-time collaborative applications. By building on Yjs, it provides a robust solution for conflict-free concurrent editing, a complex problem for many SaaS platforms. The significant architectural shift to platform-agnostic deployment (Node, Bun, Deno, Cloudflare Workers) via `crossws` is a strategic move, enabling "collaboration at the edge." This directly reduces latency and improves user experience, a key differentiator in competitive markets. The focus on production-grade features like type safety, sequential update processing, and backward-compatible protocols demonstrates maturity. Hocuspocus positions itself as a foundational component for any application requiring real-time data synchronization, extending beyond text editors to any structured data, opening up substantial market opportunities for developers building collaborative SaaS products.
Hi HN! I'm Philip, one of the founders of Tiptap. Next to our open-source rich text editor framework, we started developing Hocuspocus about five years ago and open-sourced it too, to solve one of our biggest challenges back then: real-time collaboration in web editors. We found Yjs by Kevin Jahns, a CRDT library that handles concurrent edits without conflicts. Basically, Yjs merges changes from users without conflicts and in real-time. Hocuspocus is the WebSocket server built on top of Yjs. It handles real-time sync, presence/awareness, persistence, and Redis-based scaling.While we use Hocuspocus at Tiptap as the collaboration backend for our cloud services, it also works with any Yjs client (Slate, Quill, Monaco, ProseMirror, or your own setup), and Yjs documents aren't limited to text at all. You can sync any structured data through them, and in the meantime we see projects that rely on Hocuspocus without using the Tiptap editor.We released Hocuspocus v4 under the MIT license a few weeks ago, and the biggest change is that it's no longer tied to Node. The previous versions depended on the ws package, which meant you couldn't run Hocuspocus on Bun, Deno, or Cloudflare Workers. We moved to crossws, a universal websocket adapter, so the same server now runs on Node, Bun, Deno, Cloudflare Workers, and Node with uWebSockets. That also lets you run collaboration at the edge.The other changes are smaller but are important if you're using Hocuspocus in production:1. Every core class and hook payload takes a generic Context type now, so the auth/session shape you build in onAuthenticate flows through every other hook with full type safety (defaults to any so existing code doesn't break).2. Document updates are now processed sequentially per connection through an internal queue, which fixes a correctness bug where async hooks could cause CRDT updates to apply out of order under load.3. Transaction origins are structured objects now with a source field instead of raw values and there's an isTransactionOrigin() helper for narrowing.4. Hook payloads use web-standard Request and Headers instead of Node's IncomingMessage.5. The wire protocol is backward compatible in both directions, so you can roll out servers and providers independently.If you want to test Hocuspocus: npm install @hocuspocus/server @hocuspocus/providerDocs at: https://tiptap.dev/docs/hocuspocusSource at: https://github.com/ueberdosis/hocuspocusBecause running real-time collaboration on Workers or Durable Objects is new in v4, that's the use case we'd most like to hear your questions and feedback on.
Hocuspocus v4
self-hosted
Yjs
collaboration backend
open-source
rich text editor framework
real-time collaboration
web editors