Skip to content
Apps— browse docs
On this page

Step 5: Two boards, not two people

The exact same file, mounted twice — and neither copy knows the other exists.

No new code this step. The same board from Step 4, mounted twice, below — Board A and Board B. Drag a letter in one.

Board A
src/app.tsx

Edit and the example re-runs. Tab indents; press Escape to leave the editor.

Running · your edits, live
Starting the example…
Board B
src/app.tsx

Edit and the example re-runs. Tab indents; press Escape to leave the editor.

Running · your edits, live
Starting the example…

Board B didn't move. That's not a coincidence and it's not a limitation — it's the entire feature this page exists to teach.

Tip:

Why they're independent

Every <Playground> on this site mounts its own tool against its own fake host — two panes, two completely separate documents, exactly like two campaigns in a real world. In production the mechanism is the same idea with a real name: useCollabState's document is keyed by world, app, and project. Swap which project a tab is bound to and the host hands your app a different document — same code, same field names, a different room. Two <Playground>s on a page and two projects in a world are the same shape of independence.

Compare this to Step 6 of Getting Started, where two panes did converge — that pair shared one document on purpose, to show collaboration. This pair doesn't share one, on purpose, to show instances. Same machinery, opposite point.

Next steps