Anatomy
Versions ┌─ viewing v6 (read-only) ───────┐
● Current — Dana, 2h ago │ Site access is via the rear │
○ v6 — Dana, 3h ago │ gate. Ask for Marek… │
"rewrote access notes" │ │
○ v5 — Priya, yesterday │ [ Compare to current ] │
○ v4 — Dana, 3 days ago │ [ Restore this version ] │
(12 edits in one session) └────────────────────────────────┘
Four obligations:
- Snapshots on boundaries, not on keystrokes. Otherwise the list is thousands of entries and useless.
- A summary per version. A list of identical timestamps makes people open every one.
- Restore is a new version. Rolling back must not destroy what it rolls back past, or restore becomes as dangerous as the overwrite it fixes.
- An unmistakable read-only marker when viewing an old version, or someone will edit history and be confused when it does not save.
Why it works
It converts editing from destruction into accumulation. Once nothing is lost, several other things get cheaper: people are willing to make bigger changes, disagreements about "what did it say before" become checkable, and autosave becomes safe to adopt.
That last connection is the important one and the most often missed. Autosave without history is not a feature, it is a hazard — it removes the moment of deliberation that explicit save provided while providing nothing in its place. The two patterns are halves of one design.
The diff is the product
A list of versions is mildly useful. A comparison is what people actually want, because the question is almost never "what did version 4 say" — it is "what changed between then and now".
If you build only one thing beyond the list, build the diff. It is also what makes the summaries writable: once you can compute what changed, you can describe it.
Getting it wrong
- A version per keystroke, producing a list nobody can navigate.
- Timestamps with no summary, so finding the right version means opening ten.
- Destructive restore, which discards the intervening versions and makes rollback a decision people are afraid of.
- No read-only marker, so people edit an old version and lose the work twice.
- Silent retention limits. Versions vanishing after thirty days, discovered on the day someone needs day thirty-one.
Exemplars
Google Docs version history is the reference: named sessions rather than raw saves, a readable diff, and restore that itself creates a version. It is also the clearest demonstration of the autosave pairing — the history is what makes never pressing save acceptable.
Git is the maximal version of the pattern, and the useful lesson from it is social rather than technical: history is most valuable when every change carries a human description of why, not just a record of what.
Notion's page history shows the retention trap handled explicitly — the limit is stated in the interface and tied to the plan, rather than discovered.
The extractable rule: history is what makes editing safe, and the diff is what makes history usable. A list of versions without a comparison is an archive nobody opens.