Users sometimes initiate an action that has several legitimate outcomes, but a single confirmation dialog is too narrow and a full sheet or page is too heavy for the immediate choice.
Resolve an initiated action with a short choice sheet
Tap Cancel draft to open the action sheet, choose Save draft, Discard draft, Keep editing, Share choices, and Report review, verify result feedback and focus return, then compare unsolicited, too-many-options, no-cancel, hidden-danger, rich-content, and focus-loss failures.
Launch the live UI/UX lab when you want to inspect states, keyboard behavior, and common failure modes.
State To Inspect
Resting state with an initiating control or task context.
Keyboard / Access
Enter or Space on the initiating control opens the action sheet.
Avoid Generating
Showing an action sheet before the user starts an action.
What this pattern is for
Present a concise action sheet from the initiating control or task, name the affected object, show only the few relevant choices, separate cancel and destructive roles, support keyboard and assistive technology dismissal, and return focus or state to the correct origin after a choice.
A user-initiated action has a few immediate valid outcomes.
The user has not initiated an action.
How to judge the result
UI
What the user sees, scans, and manipulates.
Good signs
- A mail composer Cancel button opens an action sheet titled Save this draft? with Save draft, Discard draft in destructive styling, and Cancel separated at the bottom.
- A photo card Action button opens a share sheet with Copy link, Share image, Save to album, Report image, and Cancel, with Report visually separated from safe actions.
Warning signs
- A bottom overlay opens with navigation links, filters, a preview image, a text field, and a Delete button all in one scrollable sheet.
- A destructive Discard option sits between safe choices with no object name, no cancel button, and no explanation of whether the draft is saved.
More UI guidance
- Render an action sheet as a short platform-style list of choices tied to the action the user just initiated, with a visible title or message when context is needed, clear action roles, a distinct cancel route, and destructive choices visually separated.
- Keep action-sheet content to immediate action choices; do not turn it into a detented bottom sheet, rich preview, form, navigation drawer, picker, or long menu.
UX
How the interaction helps the user finish the task.
Good signs
- A user taps Cancel while editing Message draft 18, chooses Save draft, the sheet closes, and focus returns to the composer with a saved-draft status.
- A user opens photo actions, chooses Report image, receives a consequence preview before commitment, and can cancel without changing the photo.
Warning signs
- A sheet appears on app launch with promotional choices even though the user did not initiate an action.
- A user tries to scroll through many actions and accidentally taps Delete because the sheet is overloaded and lacks destructive separation.
More UX guidance
- Use an action sheet when users intentionally start an action and need to choose among a few valid outcomes before the product continues, such as Save draft, Discard draft, Share, Report, or Cancel.
- Make the source task, affected object, safe escape, destructive consequence, dismissal behavior, focus movement, and post-choice outcome explicit so the sheet resolves the initiated action without surprising users.
What the implementation must handle
- Resting state with an initiating control or task context.
- Opening state that ties the sheet to the action the user just invoked.
- Visible title, message, or object label when needed to clarify the scope.
- The sheet opens only after a user-initiated action, not as unsolicited promotion, onboarding, or error display.
- Every choice directly answers the initiated action and names the object when ambiguity is possible.
- Cancel leaves the task unchanged and is visually or structurally distinct from action choices.
- Showing an action sheet before the user starts an action.
- Using an action sheet as an alert for information that has no choice set.
- Adding many options until the sheet scrolls and users can accidentally tap while inspecting.
- What intentional user action opened this sheet?
- What exact question is the sheet asking, and can every choice answer that question?
- Can users safely cancel without losing the current task or object context?
Full agent/debug reference
Problem Context
- The user has already tapped, clicked, or invoked a control such as Cancel, Share, More, Remove, or Report.
- There are several immediate outcomes rather than a single yes-or-no confirmation.
- The choice is short-lived and should resolve without a route change, long form, or durable panel.
- The product can clearly distinguish safe choices, cancel, destructive choices, and follow-up review when risk is high.
Selection Rules
- Choose action sheet when an intentional user action needs a small set of immediate choices related to the current object, draft, page, document, or selected item.
- Use action menu when the broader problem is organizing many contextual commands with grouping, disabled reasons, bulk scope, or repeated object menus.
- Use bottom sheet when the surface needs mobile bottom-edge reach, richer contextual detail, detents, scroll coordination, or persistent orientation to background content.
- Use confirmation dialog when there is one primary consequence decision and the user needs focused review rather than several possible action paths.
- Use alert dialog for urgent system or safety conditions that require response and are not simply choices related to a user-started action.
- Use popover or menu button on larger screens when platform conventions present the same choices as an anchored popover rather than a bottom action sheet.
- Use a full page or flow when choices require forms, previews, authentication, multiple steps, history, or saved progress.
- Use visible buttons instead of an action sheet for one or two frequent low-risk choices that should remain directly available.
Required States
- Resting state with an initiating control or task context.
- Opening state that ties the sheet to the action the user just invoked.
- Visible title, message, or object label when needed to clarify the scope.
- Safe action choice state.
- Cancel or keep-current-state choice state.
- Destructive choice state with visual and semantic separation.
- Unavailable or permission-blocked choice state with omission or explanation.
- Follow-up review state for high-risk choices that exceed simple action-sheet commitment.
- Dismissed state that preserves or returns focus to the initiating task.
- Large-screen adapted state that uses platform popover or anchored presentation while keeping the same action roles.
Interaction Contract
- The sheet opens only after a user-initiated action, not as unsolicited promotion, onboarding, or error display.
- Every choice directly answers the initiated action and names the object when ambiguity is possible.
- Cancel leaves the task unchanged and is visually or structurally distinct from action choices.
- Destructive choices are separated, styled by role, and named by consequence.
- The sheet contains only a few choices; it does not require ordinary users to scroll to inspect actions.
- Choosing a safe action closes the sheet and reports the result.
- Choosing a high-risk action either commits a clearly named reversible action or moves to stronger review before commitment.
- Scrim tap, Escape, back, drag, or Cancel all follow the same safe-dismissal rule.
- Focus moves into the sheet on open and returns to the initiating control, object, or logical successor after close.
- The same action roles remain understandable when the platform adapts the presentation to a popover on larger screens.
Implementation Checklist
- Define the initiating control, current object, and exact user question the sheet answers.
- Limit choices to the few immediate outcomes of that initiated action.
- Write labels as concrete verbs and objects, such as Save draft, Discard draft, Share photo, or Report message.
- Provide Cancel or Keep editing when abandonment or backing out is a meaningful safe path.
- Assign destructive role styling and separate destructive choices from safe choices.
- Escalate severe irreversible actions to confirmation, typed confirmation, restore, or undo rather than relying on color alone.
- Avoid scrollable action sheets; reduce, group elsewhere, or move to a richer surface when choices multiply.
- Implement focus placement, Escape or back dismissal, scrim or drag behavior, result status, and focus return.
- Test touch targets, screen reader order, large text, landscape, keyboard access, platform popover adaptation, and accidental-tap prevention.
Common Generated-UI Mistakes
- Showing an action sheet before the user starts an action.
- Using an action sheet as an alert for information that has no choice set.
- Adding many options until the sheet scrolls and users can accidentally tap while inspecting.
- Mixing commands with forms, previews, navigation links, search, filters, and settings.
- Omitting Cancel when leaving the current task unchanged is important.
- Styling a destructive option like an ordinary safe choice.
- Using an action sheet for a long workflow that needs progress, validation, or save recovery.
- Treating a detented bottom sheet or share activity view as the same pattern without checking the additional behavior.
Critique Questions
- What intentional user action opened this sheet?
- What exact question is the sheet asking, and can every choice answer that question?
- Can users safely cancel without losing the current task or object context?
- Is there any choice that needs confirmation, undo, restore, or stronger review before commitment?
- Would the content become clearer as an action menu, bottom sheet, confirmation dialog, popover, or page?
- Does the sheet still work with keyboard, screen reader, large text, landscape, and platform popover adaptation?
Use When
- A user-initiated action has a few immediate valid outcomes.
- The choices are related to the current object, draft, page, document, selected item, or task.
- Cancel or keep-current-state is a meaningful explicit choice.
- The platform convention favors a temporary action-choice sheet for this interaction.
Avoid When
- The user has not initiated an action.
- There is only one consequence decision and a confirmation dialog would be clearer.
- The surface needs rich contextual detail, detents, previews, forms, or scrolling.
- The choice set is broad enough to need search, categories, or a full command taxonomy.
- The action is so frequent or primary that visible buttons would be faster and more discoverable.
Failure Modes
- The sheet opens without an initiating action and interrupts the current task.
- The title does not name the object, so users cannot tell which draft, message, photo, or account will change.
- Cancel is missing, hidden, or treated like a destructive action.
- Destructive and safe choices share the same style and position.
- The sheet contains enough choices to scroll, creating accidental-tap risk.
- The sheet contains form fields, search, filters, previews, or navigation instead of immediate choices.
- Escape or back closes the sheet but discards work when it should leave the task unchanged.
- Focus returns to the top of the page instead of the initiating action.
Accessibility
- Give the sheet an accessible name that states the action or affected object.
- Move focus into the sheet when it opens and expose the title or message before the choices.
- Use native button roles or platform action roles for cancel, destructive, and default choices.
- Do not rely only on color to communicate destructive choices.
- Keep choices short enough to remain readable at large text sizes without hidden horizontal overflow.
- Provide keyboard and assistive-technology access to Cancel, Escape, back, or another safe dismissal route.
- Return focus to the initiating control or affected object after dismissal or safe activation.
- Announce result status after Save, Discard, Share, Report, or Cancel when the outcome is not visually obvious.
Keyboard Behavior
- Enter or Space on the initiating control opens the action sheet.
- Initial focus moves to the sheet title, first safe action, or safest option according to platform convention and risk.
- Arrow keys or Tab move through choices according to the native or web implementation used.
- Enter or Space activates the focused choice.
- Escape, back, scrim dismissal, or Cancel closes the sheet without changing the task unless a platform-specific choice says otherwise.
- After activation or dismissal, focus returns to the initiating control, current object, or follow-up review surface.
Aliases
Variants
- Cancel draft action sheet
- Share action sheet
- Report or block action sheet
- Delete choice sheet
- Save or discard sheet
- Photo actions sheet
- Message actions sheet
- Large-screen popover action sheet
Sources
- Apple Human Interface Guidelines: Action sheets
Apple action-sheet guidance supports intentional-action choice sets and the distinction from alert-style interruption. - Apple Human Interface Guidelines: Activity views
Apple activity-view guidance supports share-sheet invocation from an Action button while viewing content or a selected item. - Material Design 3 Bottom sheets
Material bottom-sheet guidance supports distinguishing richer bottom surfaces from short action choices. - Nielsen Norman Group: Bottom Sheets
NN/g bottom-sheet guidance supports the boundary around mobile bottom-edge contextual detail and screen-obscuring tradeoffs.
Verification
Last verified: