| UI or UX | UI + UX - Sustained pointer contact that reveals secondary actions, selection, preview, or drag pickup | UI + UX - Touch-first gesture vocabulary and fallback contract for taps, swipes, drags, pinches, and multi-touch interactions | UI + UX - Location-invoked contextual command menu | UI + UX - Short noninteractive description tied to a trigger | UI + UX - Small anchored contextual overlay | UI + UX - Contextual command list for a resource or selection |
| UI guidance | Show long press as a sustained-contact gesture with a discoverable hint, press progress, hold threshold, cancellation, release behavior, and a visible non-gesture equivalent. | Render touch gesture affordances with visible targets, enough spacing, state feedback, and non-gesture controls for the same outcome when a gesture is path-based, multipoint, hidden, or easy to misfire. | Render a context menu as a compact command menu anchored to the object, selection, pointer position, or focused item that invoked it, with clear item labels, disabled reasons, separators, and destructive separation. | Render a tooltip as a small text-only bubble visually tied to a focusable trigger, with concise copy, readable contrast, stable placement, and an optional arrow that points to the target. | Render a popover as a compact surface visually tied to the trigger, field, selection, or object that opened it, with a clear title or labelled content when the body is more than a short sentence. | Render a compact menu of verb-led actions scoped to one resource, row, card, selected set, or page object, with clear section headings, object-aware labels, disabled reasons, and separated dangerous commands. |
| UX guidance | Use long press when a touch-first surface needs a secondary action that benefits from deliberate dwell time and can coexist with tap, scroll, swipe, and drag. | Use touch gesture when the product needs direct manipulation on a touchscreen, but treat gestures as part of a larger interaction contract rather than the only way to act. | Use a context menu when users need fast object-specific commands from a secondary invocation path such as right click, long press, context-menu key, or Shift+F10. | Help the person reach a clear task outcome. | Make opening, light dismissal, Escape, outside click, anchor scrolling, focus order, and focus return predictable so the surface feels contextual rather than interruptive. | Make the current object or selection count explicit, update actions when scope changes, and route destructive or privacy-sensitive commands into confirmation, undo, restore, or review instead of running silently. |
| Good UI | A file tile shows a short Touch and hold for actions hint, displays a hold ring after press down, opens a context menu at the tile after threshold, and keeps a visible More actions button. | A photo viewer supports pinch to zoom, double tap to zoom, plus and minus buttons, a reset button, zoom percent feedback, and a clear pan boundary after zoom. | A file row opens a context menu at the selected row with Open, Rename, Duplicate, Download, Archive, and Delete separated at the end. | A labelled Archive icon button receives focus and shows a short tooltip that says Moves this report to archived reports. | A Due date button in a task row opens a small popover beside the field with Today, Tomorrow, Friday, a custom date field, and a visible close control. | A Customer actions menu has Manage customer, Data requests, and Account risk sections, with Edit customer, Merge customer, Request data export, and Delete customer separated at the end. |
| Bad UI | A long press starts drag pickup while users are trying to scroll the list. | A hidden edge swipe deletes a message while the user is trying to scroll the list. | Right clicking a row opens a menu beside the toolbar and still shows actions for the previously selected row. | The tooltip appears only on mouse hover. | Escape closes the layer but focus disappears or jumps to the top of the page. | Safe, risky, disabled, external, and value-selection items share the same style and role. |
| Good UX | A user touches and holds a photo, sees the hold progress cross threshold, receives haptic feedback, then a context menu opens with Copy, Share, Favorite, and Delete. | A user starts swiping a gallery card, sees the next-card preview, changes their mind by moving back under the threshold, and the card snaps back with position unchanged. | Right click on Forecast.xlsx opens commands for that file, Arrow keys move through items, Escape closes the menu, and focus returns to the file row. | Tabbing to Archive keeps focus on the button, shows a short description, Escape hides it, and focus remains on Archive. | Opening the due-date popover moves focus to the first date option, choosing Tomorrow updates the field, closes the layer, and returns focus to the Due date trigger. | A user opens Customer actions, chooses Duplicate customer, and receives status that names the customer and keeps focus anchored to the action context. |
| Bad UX | A user taps a card slowly and accidentally opens a hidden destructive menu. | A user tries to scroll a feed but the product interprets a short diagonal movement as a destructive swipe action. | The menu opens for a stale selected object instead of the object under the pointer. | A user presses Escape to hide the tooltip and focus jumps to the top of the page. | The user scrolls and the popover stays in the old position, so it appears to describe the wrong field. | A user activates a menu item that looks like a command but navigates away and loses unsaved context. |
| Best fit | A touch-first interface needs an optional shortcut to secondary item actions, selection mode, preview, or drag pickup. | A touchscreen interaction needs deliberate design for gesture vocabulary, thresholds, feedback, target sizing, cancellation, and equivalent controls. | Objects or selections have secondary commands that experienced users expect near the target. | A compact control needs a brief supplemental explanation. | A local control needs brief explanatory content or light editing while page context remains visible. | A resource, row, card, selected set, or local page object has several contextual commands. |
| Avoid when | The action is primary, required, urgent, destructive, security-sensitive, consent-related, payment-related, or account-changing. | The gesture is only an implementation detail inside a more specific pattern such as swipe action, pull to refresh, long press, drag and drop, bottom sheet, carousel, or map view. | The command is primary, urgent, safety-critical, or required for task completion. | The text is the only label or action name. | The content is essential instruction that must remain visible for task completion. | Only one or two commands are needed and visible buttons would be faster. |
| Required state | Idle target state with visible identity and alternate action path. | Touch down or gesture start state that identifies the active target. | Resting object or selection state before invocation. | Keyboard focus state where the tooltip appears and focus remains on the trigger. | Closed trigger state with visible label, icon name, or field relationship. | Closed trigger or contextual entry point with resource scope. |
| Accessibility burden | Provide visible controls, action menus, custom screen reader actions, keyboard shortcuts, context-menu invocation, or selection checkboxes for the same outcomes. | Provide a simple single-pointer alternative for multipoint or path-based gestures unless the gesture is essential. | Support keyboard invocation through the context-menu key or Shift+F10 where the platform expects it. | Use tooltip text as a description with aria-describedby when it supplements the trigger. | Use a real button or equivalent control as the trigger whenever possible. | Give the trigger or menu an accessible name that includes the resource or selected-set scope. |
| Common misuse | Hiding required or primary actions behind undiscoverable long press. | Making a hidden gesture the only way to find navigation, delete, refresh, zoom, or edit controls. | Making right click or long press the only way to discover important commands. | Using hover-only tooltip text as the only label for an icon button. | Using a popover as a hidden modal, drawer, sheet, command menu, or full workflow. | Letting a bulk action menu run single-object commands against multiple selected items. |