Solo vs Live Mode¶
A detailed explanation of ThinkERD's two synchronization modes.

Solo Mode¶
The default mode used when editing alone.
Features¶
- Auto-save — Automatically saves changes to the server
- Offline support — Caches data in the browser for offline work
- Cross-tab sync — Auto-syncs across multiple tabs in the same browser
- Server resource efficiency — Efficient synchronization without real-time connections
Tab Leader Election¶
When the same user opens the same diagram in multiple tabs, only one tab is elected as Leader to communicate with the server. Other tabs act as Followers, syncing indirectly through the Leader.
graph TB
Server["🖥️ Server"]
Leader["👑 Tab 1 (Leader)"]
F1["📄 Tab 2 (Follower)"]
F2["📄 Tab 3 (Follower)"]
Leader <-->|REST API| Server
Leader <-->|"Cross-tab sync"| F1
Leader <-->|"Cross-tab sync"| F2
style Leader fill:#fef3c7,stroke:#d97706
style F1 fill:#f3f4f6,stroke:#9ca3af
style F2 fill:#f3f4f6,stroke:#9ca3af Live Mode¶
Automatically activated when 2 or more users are editing simultaneously.
Features¶
- Conflict-free concurrent editing — Auto-merges even when multiple users edit simultaneously
- WebSocket — Real-time bidirectional communication
- Awareness — Shares other users' cursors, selections, and moving nodes in real time
- Auto-merge — Even when the same attribute is modified concurrently, data is merged without loss
Transition Flow¶
| Event | Action |
|---|---|
| Another user joins | Presence Monitor (SSE) detects → upgradeToCollab() |
| All users leave | 60-second countdown → downgradeToSolo() |
60-second grace period
To handle cases where a user leaves and returns quickly, there's a 60-second grace period before switching to Solo Mode.
Mode Comparison¶
| Aspect | Solo Mode | Live Mode |
|---|---|---|
| Connection | REST API | WebSocket |
| Synchronization | On save | Real-time |
| Server cost | Low | Higher |
| Cross-tab sync | In-browser auto | Real-time + in-browser |
| Cursor sharing | ❌ | ✅ |
| Conflict resolution | Last save wins | Auto-merge |
| Usage ratio | ~99% | ~1% |