01 — Foundation

Undo encourages confidence

Good recovery patterns reduce fear of mistakes. Users should know what changed and whether they can reverse it.

Undo and restore systems let users recover from errors without opening a support ticket. They work when recovery is visible, time-bounded honestly, and predictable — not when actions are silently irreversible behind a cheerful toast.

02 — Undo

Visible undo actions

Recovery should be offered at the moment of change — not buried in settings.

  • show undo after reversible actions — delete row, archive, dismiss
  • state how long undo remains — “Undo (30 seconds)” or “Restore from archive”
  • prefer undo over confirmation fatigue for low-risk reversible edits
  • in-context message with undo button — not a corner toast unless unavoidable; see Toast Notifications
<p role="status">
    Invoice archived.
    <button type="button">Undo</button>
</p>

03 — Restore

Restore and soft delete

Longer recovery windows need a clear place to find restored items.

  • trash, archive, or version history with plain labels
  • explain what restore will do — “Restore invoice #1042 to active list”
  • do not claim undo when the server already purged data

04 — Avoid

What to avoid

Misleading confirmations punish users twice.

  • silent irreversible actions after a generic “Success” toast
  • hidden recovery — users should not need insider knowledge
  • confusing restore states — “Undo delete” vs “Restore version” need different copy

05 — Review

Before you approve

A short checklist for undo and restore in code review.

  • users know what changed and whether recovery exists
  • undo is visible, keyboard accessible, and honest about timing
  • irreversible actions use Destructive Actions — not fake undo