My learning 0 of 20 lessons complete
Start lesson 1 →
Back to compare picker

Redo vs Undo vs Draft state vs Command palette

Redo reapplies the most recent undone operation while the edit history branch is still valid. Use undo for reversal, draft state for persistent unpublished versions, and command palette for invoking commands rather than defining history semantics.

Learn the decision

Match the interaction to the person's task

Redo reapplies the most recent undone operation while the edit history branch is still valid. Use undo for reversal, draft state for persistent unpublished versions, and command palette for invoking commands rather than defining history semantics.

Redo

Use it when: Users perform reversible sequences of edits and can undo too far.

Make this state clear: Undo-available state after a reversible edit.

Observe the result: A user moves a heading, chooses Undo, sees Redo move heading become available, and redoes the same move against the same document outline.

Study the full pattern →

Undo

Use it when: The action is common and mistakes are likely.

Make this state clear: Normal state before the user action.

Observe the result: Undo restores the deleted task to the list and reports Quarterly report restored.

Study the full pattern →

Draft state

Use it when: Users need to pause and resume unfinished work across sessions, devices, or routes.

Make this state clear: Published or active state with an available draft.

Observe the result: A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers.

Study the full pattern →

Command palette

Use it when: Users need to traverse a broad product surface quickly.

Make this state clear: Closed state with discoverable trigger.

Observe the result: Keyboard shortcut or visible trigger opens the palette, focus lands in the command input, arrows move the active row, and Enter activates the highlighted safe command.

Study the full pattern →

Practice the judgment: Imagine this situation: Redo remains enabled after a new edit creates a different history branch and replays stale work over the user's current state. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension RedoUndoDraft stateCommand palette
UI or UX UX - Forward edit-history replayUX - Post-action recovery behaviorUI + UX - Unpublished object version lifecycleUI + UX - Modal command surface
UI guidance Show Redo as a visible command, menu item, toolbar control, or command-palette row whose enabled state matches the current redo stack.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.Label the current version explicitly as Draft, Unpublished changes, Published, Active, Locked, or Unavailable, and place that label near the object title, list row, editor header, and publish actions.Render a compact dialog-like command surface with a search input, current scope, typed command mode, active result, command metadata, and empty state.
UX guidance Help the person reach a clear task outcome.Let users move quickly through frequent reversible actions, then recover from mistakes after seeing the result.Use draft state when users need to pause work on an object, return later, and decide whether to publish, activate, discard, or keep editing an unpublished version.Accelerate expert navigation and repeated actions across a large product while preserving ordinary navigation for novice and low-frequency users.
Good UI A document toolbar shows Undo and Redo; Redo is disabled until the user undoes Move Summary before Risk.Deleting Quarterly report removes it from the list and shows a recovery panel saying Quarterly report deleted with an Undo task button.A knowledge article header says Draft saved today, shows the currently published title, and offers Resume draft, Compare with published, Discard draft, and Publish.Centered command surface with input, shortcut hint, scope chip, grouped commands, command type labels, and a visible active row.
Bad UI Redo silently replays against the wrong selected object.Undo action disappears before users can activate it.A draft label is missing from the editor, so users publish or discard the wrong version.Huge branded modal that buries the input below decorative content.
Good UX A user moves a heading, chooses Undo, sees Redo move heading become available, and redoes the same move against the same document outline.Undo restores the deleted task to the list and reports Quarterly report restored.A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers.Keyboard shortcut or visible trigger opens the palette, focus lands in the command input, arrows move the active row, and Enter activates the highlighted safe command.
Bad UX A user undoes a move, selects a different heading, presses Redo, and the product applies the old operation to the wrong target.The UI promises undo for a side effect that has already notified external recipients.A user discards a shared draft and unknowingly removes another editor's unpublished changes.Palette is the only way to reach important navigation.
Best fit Users perform reversible sequences of edits and can undo too far.The action is common and mistakes are likely.Users need to pause and resume unfinished work across sessions, devices, or routes.Users need to traverse a broad product surface quickly.
Avoid when The action has irreversible external side effects.Recovery would restore only part of the user's lost work.The change is a small one-field edit that should be saved or canceled immediately.The app has only a few obvious actions.
Required state Undo-available state after a reversible edit.Normal state before the user action.Published or active state with an available draft.Closed state with discoverable trigger.
Accessibility burden Expose Redo as a named button, menu item, or command row when editing commands are visible.Make the undo control keyboard reachable and programmatically identifiable.Use headings and status regions so screen reader users know whether they are editing a draft or viewing the active version.Use dialog semantics with a clear name and modal behavior when the rest of the page is inert.
Common misuse Leaving redo enabled after a new edit invalidates the undone future.Restoring only part of the prior state while implying full recovery.Using Saved to mean both saved draft and published content.Hiding basic navigation behind a keyboard-only palette.

Redo

UI or UX
UX - Forward edit-history replay
UI guidance
Show Redo as a visible command, menu item, toolbar control, or command-palette row whose enabled state matches the current redo stack.
UX guidance
Help the person reach a clear task outcome.
Good UI
A document toolbar shows Undo and Redo; Redo is disabled until the user undoes Move Summary before Risk.
Bad UI
Redo silently replays against the wrong selected object.
Good UX
A user moves a heading, chooses Undo, sees Redo move heading become available, and redoes the same move against the same document outline.
Bad UX
A user undoes a move, selects a different heading, presses Redo, and the product applies the old operation to the wrong target.
Best fit
Users perform reversible sequences of edits and can undo too far.
Avoid when
The action has irreversible external side effects.
Required state
Undo-available state after a reversible edit.
Accessibility burden
Expose Redo as a named button, menu item, or command row when editing commands are visible.
Common misuse
Leaving redo enabled after a new edit invalidates the undone future.

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
Undo action disappears before users can activate it.
Good UX
Undo restores the deleted task to the list and reports Quarterly report restored.
Bad UX
The UI promises undo for a side effect that has already notified external recipients.
Best fit
The action is common and mistakes are likely.
Avoid when
Recovery would restore only part of the user's lost work.
Required state
Normal state before the user action.
Accessibility burden
Make the undo control keyboard reachable and programmatically identifiable.
Common misuse
Restoring only part of the prior state while implying full recovery.

Draft state

UI or UX
UI + UX - Unpublished object version lifecycle
UI guidance
Label the current version explicitly as Draft, Unpublished changes, Published, Active, Locked, or Unavailable, and place that label near the object title, list row, editor header, and publish actions.
UX guidance
Use draft state when users need to pause work on an object, return later, and decide whether to publish, activate, discard, or keep editing an unpublished version.
Good UI
A knowledge article header says Draft saved today, shows the currently published title, and offers Resume draft, Compare with published, Discard draft, and Publish.
Bad UI
A draft label is missing from the editor, so users publish or discard the wrong version.
Good UX
A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers.
Bad UX
A user discards a shared draft and unknowingly removes another editor's unpublished changes.
Best fit
Users need to pause and resume unfinished work across sessions, devices, or routes.
Avoid when
The change is a small one-field edit that should be saved or canceled immediately.
Required state
Published or active state with an available draft.
Accessibility burden
Use headings and status regions so screen reader users know whether they are editing a draft or viewing the active version.
Common misuse
Using Saved to mean both saved draft and published content.

Command palette

UI or UX
UI + UX - Modal command surface
UI guidance
Render a compact dialog-like command surface with a search input, current scope, typed command mode, active result, command metadata, and empty state.
UX guidance
Accelerate expert navigation and repeated actions across a large product while preserving ordinary navigation for novice and low-frequency users.
Good UI
Centered command surface with input, shortcut hint, scope chip, grouped commands, command type labels, and a visible active row.
Bad UI
Huge branded modal that buries the input below decorative content.
Good UX
Keyboard shortcut or visible trigger opens the palette, focus lands in the command input, arrows move the active row, and Enter activates the highlighted safe command.
Bad UX
Palette is the only way to reach important navigation.
Best fit
Users need to traverse a broad product surface quickly.
Avoid when
The app has only a few obvious actions.
Required state
Closed state with discoverable trigger.
Accessibility burden
Use dialog semantics with a clear name and modal behavior when the rest of the page is inert.
Common misuse
Hiding basic navigation behind a keyboard-only palette.
Decision rules
  • Use redo when users may undo too far and need to reapply the latest undone operation in the same reversible edit stack.
  • Use undo when the immediate need is to reverse a completed operation and preserve the prior state.
  • Use draft state when the issue is a durable unpublished object version that can be resumed, compared, discarded, or published across sessions.
  • Use command palette when the interface needs a keyboard-first way to discover or run commands; the palette may expose Redo but does not define what can be redone.
  • Redo must be unavailable before any undo, available after undo, and cleared or explicitly branched when the user makes a new edit that invalidates the undone future.
  • Redo should reapply the exact operation to the same target, selection, order, and scope unless the product can clearly resolve a changed target.
  • Do not offer redo for irreversible external effects, production side effects, or stale operations whose original target has changed beyond reliable replay.
  • Expose visible menu, toolbar, or status availability in addition to keyboard shortcuts so users can discover whether redo is currently possible.
  • If the product stores durable history across reloads, show that history explicitly; do not imply ordinary redo survives route changes, collaboration conflicts, or session resets unless it truly does.
  • When redo appears inside a command palette, the command row must reflect the same enabled, disabled, and target-specific state as the rest of the interface.
Inspect live examples
Failure modes
  • Redo remains enabled after a new edit creates a different history branch and replays stale work over the user's current state.
  • Redo replays an operation against the wrong object because selection or target identity changed after undo.
  • Only a hidden keyboard shortcut supports redo, leaving mouse, touch, and assistive technology users without a discoverable path.
  • The interface labels redo generically even though several undone operations or scopes exist.
  • Redo is treated like restore from trash or draft recovery, causing users to expect long-lived recovery beyond the edit stack.
  • A command palette lists Redo as executable even when the editor's history stack says no redo is available.

Saved items