Back to compare picker

Fake undo vs Undo vs Toast notification vs Restore from trash vs Destructive action confirmation vs Autosave recovery

Choose the fake-undo anti-pattern when an Undo, Restore, Revert, or rollback control appears but does not restore the affected object identity, order, relationships, permissions, values, counts, selection, or visible context.

Decision dimensions

Dimension Fake undoUndoToast notificationRestore from trashDestructive action confirmationAutosave recovery
UI or UX UI + UX - Anti-pattern where a recovery affordance promises undo but cannot restore the prior stateUX - Post-action recovery behaviorUI + UX - Transient non-modal status messageUI + UX - Durable deleted-object recoveryUI + UX - Final destructive commit reviewUI + UX - Recovery surface for failed or uncertain background saves
UI guidance Do not label an action Undo unless the system has captured enough state to restore the affected object, order, relationships, permissions, counts, focus context, and visible outcome.Show a named recovery affordance after the completed action, such as Undo delete for a specific task, near the result or in a consistent status region.Render toast notifications in a consistent non-modal region with short status text, clear severity, an optional close control, and at most one concise action.Show deleted objects in a dedicated trash, recycle bin, deleted-files, or recoverable-items surface with object name, type, original location, deletion date, deleted-by actor, and remaining recovery window.Render a destructive confirmation after the user invokes a destructive command, with a title and final action button that repeat the destructive verb and target, such as Delete workspace or Cancel subscription.Show a persistent recovery surface when autosave did not protect the latest work, naming the affected field or section, last server-saved time, local copy status, and available recovery actions.
UX guidance Users should trust that activating Undo returns them to the state before the action, not a best-effort approximation that hides what remains changed.Let users move quickly through frequent reversible actions, then recover from mistakes after seeing the result.Use toast notifications for low-risk, short-lived feedback after an action completes or background work changes state without requiring the user to stop the current task.Use restore from trash when users may discover a mistaken deletion after leaving the original workflow and need a durable way to recover the object.Use destructive action confirmation to create one informed stop before permanent or externally visible loss, not to slow every routine cleanup action.Use autosave recovery when users need to preserve effort after background saving fails, stalls, conflicts, expires, or only stores a local copy.
Good UI Deleting Quarterly report stores the row ID, folder, owner, sort position, labels, shared access, and selected filter, then Undo restores the row to the same list location.Deleting Quarterly report removes it from the list and shows a recovery panel saying Quarterly report deleted with an Undo task button.Export started appears in the top notification region with a timestamp, close control, and View jobs action that remains available in activity history.A Deleted files table lists Quarterly budget.xlsx with original folder Finance/Q2, deleted yesterday by Maya, 29 days left, and a Restore to Finance/Q2 action.Delete Payments project? lists 4 dashboards, 12 saved views, 3 webhooks, and 8 shared links, offers Keep project, and labels the danger action Delete Payments project.A claim form says Household income answer failed to autosave at 10:42, keeps the typed answer visible, and offers Retry save, Copy answer, Restore last saved, and Continue after saved.
Bad UI A toast says Undo after removing a teammate, but Undo only re-adds the name and not the permissions, group memberships, or notification that already went out.A tiny x removes an item with no object-specific recovery label.Five unrelated toasts pile up over the Save and Continue controls.A trash page lists File 1, File 2, and File 3 with no path, deletion time, owner, or recovery deadline.A modal says Are you sure? with OK and Cancel after the user clicks Delete, without naming the project or what disappears.A small toast says Could not save and disappears while the form still shows a green Saved label.
Good UX A user archives a task by mistake, activates Undo, and the task returns with its original owner, due date, tags, position, and selection state.Undo restores the deleted task to the list and reports Quarterly report restored.A completed archive action shows a short toast and a specific Undo action because the prior state can be restored.A user opens Trash, filters to spreadsheets deleted this week, previews the original folder, restores one file, and gets a link to the restored location.A user opens Delete workspace, reviews the object count and webhooks, cancels, and returns to the same workspace with nothing changed.A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates.
Bad UX A user clicks Undo after deleting a shared file and the file name reappears, but collaborators, comments, and folder path are lost.A second delete overwrites the first recoverable item without explaining which action Undo affects.Every autosave tick triggers a toast, training users to ignore real status changes.A user restores a shared folder but cannot find it because permissions or parent location changed silently.A user confirms deletion because OK looks like the primary next step, then discovers shared links and child reports were lost.A user submits after seeing Saved, but the newest section was failed and never reached the server.
Best fit Use this anti-pattern entry to audit products that show Undo, Restore, Revert, or rollback controls without proving exact reversal.The action is common and mistakes are likely.Use for short non-blocking confirmation after explicit actions such as save, copy, send, archive, invite, or queue export.Deleted objects remain recoverable after the user leaves the original workflow.A user has initiated a destructive command that can permanently remove, revoke, reset, deactivate, or cancel something valuable.Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work.
Avoid when Do not flag a clearly labelled partial recovery, restore-from-trash, request-recovery, or recreate flow as fake undo if it does not claim full reversal.The action has external side effects that cannot be recalled.The message is the only recovery path for a blocking or high-consequence failure.The action is immediately reversible through a short undo window and no durable recovery surface exists.The action is a routine reversible archive, hide, dismiss, move, reorder, or trash move.The product does not use autosave or local draft persistence.
Required state Pre-action state with enough identity, relationship, order, permission, and context captured for reversal.Normal state before the user action.Idle state with no visible toast and a reachable status or history region when applicable.Normal active-object state before deletion.Idle state where the destructive command is visible but not committed.Clean saved state with current server timestamp.
Accessibility burden Do not rely on a disappearing visual toast for important recovery; make the control reachable and stable for keyboard and assistive technology users.Make the undo control keyboard reachable and programmatically identifiable.Expose the toast as a status or alert message according to urgency so assistive technologies can announce it without requiring focus movement.Expose deleted item name, type, original location, retention deadline, and restore availability as text in each row.Use alertdialog semantics or platform equivalent when the destructive decision requires an immediate response.Announce failed, local-only, retrying, recovered, and conflict states through status text without repeating every save attempt.
Common misuse Showing Undo after an action that has already sent email, money, permissions, or webhooks outside the product.Offering undo for an action that cannot actually be reversed.Using a toast as the only feedback for payment, save, permission, upload, or security failures.Showing deleted objects without enough metadata to identify the right item.Using a vague Are you sure prompt that does not name the object, count, or consequence.Leaving a green Saved label visible after a failed or stale autosave.

Fake undo

UI or UX
UI + UX - Anti-pattern where a recovery affordance promises undo but cannot restore the prior state
UI guidance
Do not label an action Undo unless the system has captured enough state to restore the affected object, order, relationships, permissions, counts, focus context, and visible outcome.
UX guidance
Users should trust that activating Undo returns them to the state before the action, not a best-effort approximation that hides what remains changed.
Good UI
Deleting Quarterly report stores the row ID, folder, owner, sort position, labels, shared access, and selected filter, then Undo restores the row to the same list location.
Bad UI
A toast says Undo after removing a teammate, but Undo only re-adds the name and not the permissions, group memberships, or notification that already went out.
Good UX
A user archives a task by mistake, activates Undo, and the task returns with its original owner, due date, tags, position, and selection state.
Bad UX
A user clicks Undo after deleting a shared file and the file name reappears, but collaborators, comments, and folder path are lost.
Best fit
Use this anti-pattern entry to audit products that show Undo, Restore, Revert, or rollback controls without proving exact reversal.
Avoid when
Do not flag a clearly labelled partial recovery, restore-from-trash, request-recovery, or recreate flow as fake undo if it does not claim full reversal.
Required state
Pre-action state with enough identity, relationship, order, permission, and context captured for reversal.
Accessibility burden
Do not rely on a disappearing visual toast for important recovery; make the control reachable and stable for keyboard and assistive technology users.
Common misuse
Showing Undo after an action that has already sent email, money, permissions, or webhooks outside the product.

Undo

UI or UX
UX - Post-action recovery behavior
UI guidance
Show a named recovery affordance after the completed action, such as Undo delete for a specific task, near the result or in a consistent status region.
UX guidance
Let users move quickly through frequent reversible actions, then recover from mistakes after seeing the result.
Good UI
Deleting Quarterly report removes it from the list and shows a recovery panel saying Quarterly report deleted with an Undo task button.
Bad UI
A tiny x removes an item with no object-specific recovery label.
Good UX
Undo restores the deleted task to the list and reports Quarterly report restored.
Bad UX
A second delete overwrites the first recoverable item without explaining which action Undo affects.
Best fit
The action is common and mistakes are likely.
Avoid when
The action has external side effects that cannot be recalled.
Required state
Normal state before the user action.
Accessibility burden
Make the undo control keyboard reachable and programmatically identifiable.
Common misuse
Offering undo for an action that cannot actually be reversed.

Toast notification

UI or UX
UI + UX - Transient non-modal status message
UI guidance
Render toast notifications in a consistent non-modal region with short status text, clear severity, an optional close control, and at most one concise action.
UX guidance
Use toast notifications for low-risk, short-lived feedback after an action completes or background work changes state without requiring the user to stop the current task.
Good UI
Export started appears in the top notification region with a timestamp, close control, and View jobs action that remains available in activity history.
Bad UI
Five unrelated toasts pile up over the Save and Continue controls.
Good UX
A completed archive action shows a short toast and a specific Undo action because the prior state can be restored.
Bad UX
Every autosave tick triggers a toast, training users to ignore real status changes.
Best fit
Use for short non-blocking confirmation after explicit actions such as save, copy, send, archive, invite, or queue export.
Avoid when
The message is the only recovery path for a blocking or high-consequence failure.
Required state
Idle state with no visible toast and a reachable status or history region when applicable.
Accessibility burden
Expose the toast as a status or alert message according to urgency so assistive technologies can announce it without requiring focus movement.
Common misuse
Using a toast as the only feedback for payment, save, permission, upload, or security failures.

Restore from trash

UI or UX
UI + UX - Durable deleted-object recovery
UI guidance
Show deleted objects in a dedicated trash, recycle bin, deleted-files, or recoverable-items surface with object name, type, original location, deletion date, deleted-by actor, and remaining recovery window.
UX guidance
Use restore from trash when users may discover a mistaken deletion after leaving the original workflow and need a durable way to recover the object.
Good UI
A Deleted files table lists Quarterly budget.xlsx with original folder Finance/Q2, deleted yesterday by Maya, 29 days left, and a Restore to Finance/Q2 action.
Bad UI
A trash page lists File 1, File 2, and File 3 with no path, deletion time, owner, or recovery deadline.
Good UX
A user opens Trash, filters to spreadsheets deleted this week, previews the original folder, restores one file, and gets a link to the restored location.
Bad UX
A user restores a shared folder but cannot find it because permissions or parent location changed silently.
Best fit
Deleted objects remain recoverable after the user leaves the original workflow.
Avoid when
The action is immediately reversible through a short undo window and no durable recovery surface exists.
Required state
Normal active-object state before deletion.
Accessibility burden
Expose deleted item name, type, original location, retention deadline, and restore availability as text in each row.
Common misuse
Showing deleted objects without enough metadata to identify the right item.

Destructive action confirmation

UI or UX
UI + UX - Final destructive commit review
UI guidance
Render a destructive confirmation after the user invokes a destructive command, with a title and final action button that repeat the destructive verb and target, such as Delete workspace or Cancel subscription.
UX guidance
Use destructive action confirmation to create one informed stop before permanent or externally visible loss, not to slow every routine cleanup action.
Good UI
Delete Payments project? lists 4 dashboards, 12 saved views, 3 webhooks, and 8 shared links, offers Keep project, and labels the danger action Delete Payments project.
Bad UI
A modal says Are you sure? with OK and Cancel after the user clicks Delete, without naming the project or what disappears.
Good UX
A user opens Delete workspace, reviews the object count and webhooks, cancels, and returns to the same workspace with nothing changed.
Bad UX
A user confirms deletion because OK looks like the primary next step, then discovers shared links and child reports were lost.
Best fit
A user has initiated a destructive command that can permanently remove, revoke, reset, deactivate, or cancel something valuable.
Avoid when
The action is a routine reversible archive, hide, dismiss, move, reorder, or trash move.
Required state
Idle state where the destructive command is visible but not committed.
Accessibility burden
Use alertdialog semantics or platform equivalent when the destructive decision requires an immediate response.
Common misuse
Using a vague Are you sure prompt that does not name the object, count, or consequence.

Autosave recovery

UI or UX
UI + UX - Recovery surface for failed or uncertain background saves
UI guidance
Show a persistent recovery surface when autosave did not protect the latest work, naming the affected field or section, last server-saved time, local copy status, and available recovery actions.
UX guidance
Use autosave recovery when users need to preserve effort after background saving fails, stalls, conflicts, expires, or only stores a local copy.
Good UI
A claim form says Household income answer failed to autosave at 10:42, keeps the typed answer visible, and offers Retry save, Copy answer, Restore last saved, and Continue after saved.
Bad UI
A small toast says Could not save and disappears while the form still shows a green Saved label.
Good UX
A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates.
Bad UX
A user submits after seeing Saved, but the newest section was failed and never reached the server.
Best fit
Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work.
Avoid when
The product does not use autosave or local draft persistence.
Required state
Clean saved state with current server timestamp.
Accessibility burden
Announce failed, local-only, retrying, recovered, and conflict states through status text without repeating every save attempt.
Common misuse
Leaving a green Saved label visible after a failed or stale autosave.
Decision rules
  • Choose the fake-undo anti-pattern when an Undo, Restore, Revert, or rollback control appears but does not restore the affected object identity, order, relationships, permissions, values, counts, selection, or visible context.
  • Choose the fake-undo anti-pattern when external side effects such as email, payment, webhook, permission notification, customer message, or production command already happened and the UI still implies they were recalled.
  • Choose undo when the product captures exact prior state before commit, keeps the recovery control reachable, scopes multiple recent actions clearly, and reports restored, expired, and committed outcomes.
  • Choose toast notification when the message is disposable status feedback; a toast may include Undo only if the recovery action is truthful and stable long enough to use.
  • Choose restore from trash when the object was soft-deleted into a durable deleted-items location with retention metadata and restoration may happen after the immediate undo window.
  • Choose destructive action confirmation when no faithful post-action recovery exists and users must inspect consequence before permanent deletion, external effects, or broad-scope loss.
  • Choose autosave recovery when the endangered state is unsaved or uncertain local work after a failed, stale, conflicted, or expired background save rather than a completed reversible command.
  • Do not use Undo copy for partial repair; label it Restore comments, Recreate row, Request recovery, Open trash, Retry save, or View activity according to what the product can actually do.
  • For bulk actions, compare selected count, per-item status, skipped items, conflicts, and overwritten undo payloads before claiming one batch Undo restored the whole set.
  • When the undo window expires, remove or re-label the control and show final commitment or durable recovery instead of leaving a failing Undo button visible.
Inspect live examples
Failure modes
  • A deleted row reappears after Undo but loses folder path, comments, labels, shared permissions, or sort position.
  • A sent email or webhook shows Undo even though the external recipient already received the side effect.
  • A second archive overwrites the first recovery target, so Undo restores the wrong item.
  • A toast undo disappears or expires before keyboard and screen reader users can activate it.
  • A bulk Undo reports success while some items failed because of permissions, missing parents, or retention expiry.
  • The product uses Undo where it should have used destructive confirmation because the action cannot be faithfully reversed.