Undo and redo support exploration
Aliases: undo · redo · reversible operation
What it is
Undo and redo are not only error-repair tools; they are a safety net for exploration. Users can try a layout, filter, parameter, or bulk change, inspect the result, return to the origin, or move in another direction. Redo makes it cheap to change one’s mind after undoing.
Why it happens
Exploration requires users to separate trial from commitment. Undo lowers expected loss, reducing confirmations and overplanning; redo preserves a path that has been rolled back, so users need not rebuild an abandoned idea. Effective implementation depends on clear operation granularity, predictable snapshots, disclosure of resource limits, and concurrency handling. If undo rolls back only the visual state but not data, trust collapses quickly.
Studying it
Give open-ended tasks that invite attempts, comparison, and recovery. Measure attempts, undo/redo frequency, variety of explored paths, recovery time, confidence at commit, and reported state confusion. Reconstruct state sequences from logs and check whether users’ understanding of undo boundaries matches the system’s; test across pages, bulk changes, asynchronous saves, and collaborative editing.
Where it stops holding
Not every action is undoable. Sent mail, payment, legal submission, external notification, and synchronized deletion may allow only partial compensation; after a window closes, audit or support may be required. In collaboration, undoing one person’s action must not overwrite another’s legitimate changes. Long histories, large objects, and autosave create performance and storage limits.
Applying it
- Define which actions are undoable, their granularity, history length, save points, and compensation with external systems.
- Provide visible undo cues and a history panel; for bulk operations, show the number of affected objects and allow undoing the whole batch.
- Preserve selection, scroll, and input context after undo, and summarize the state that redo will restore.
- Test action-undo-redo-refresh sequences and verify that interface, data, and logs agree.