Understand collaboration
Let people edit the same document together, using your existing editor UI.
Without collaboration, two people opening the same DOCX are editing separate copies. With collaboration, they work on a shared document: an edit in one person's editor appears in the other's.
One document, two editors
Alex changes a delivery date. Sam sees the new date without reloading the document or opening another file.
Delivery is due Friday.
Delivery is due Friday.
Both people can edit. SuperDoc synchronizes their document changes while each person keeps their own view and selection.
Connect through a room
A room connects the editors working on one shared document. Your application gives that room an ID so each editor knows which document to join. Opening the same file URL in two browsers does not connect them.
A provider carries changes between the connected editors. You can run a collaboration server yourself or use a hosted service. The next guide starts with a local Hocuspocus server.
The first editor creates the room from a DOCX. The second joins that room. From then on, they work with its shared content.
Sharing edits is separate from reviewing them. Use tracked changes when edits should remain proposals, or comments for discussion. Collaboration carries the shared document changes; it does not decide which proposals to accept.
Keep the UI you already built
Collaboration works with built-in controls, custom controls, or a mix of both. You add a connection to the document; you do not need to rebuild your toolbar or review panels.
Your application still decides who can access the document and how it is saved. Those are server responsibilities, separate from showing another person's edits.
Insert bookmark anchors
In a V2 collaboration room, doc.bookmarks.insert() supports a text range within one paragraph of the document body, including a zero-length range for an insertion-point bookmark. Wait for collaboration-ready before calling it. The bookmark's start and end offsets are preserved in bookmarks.get() and bookmarks.list(), on connected peers, and when exporting and reopening the DOCX.
Use a unique bookmark name and a valid range in the target paragraph. Insertion across paragraphs is not supported; it returns CROSS_BLOCK_MATCH without creating a bookmark. The same single-paragraph range and point behavior is supported in solo editing.
Try it with two editors
Connect two editors walks you through creating a room, joining from another tab, and watching an edit appear in both. Start there, then add presence and persistent storage.