| 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. | Use tooltips to add a brief description on focus or hover without asking users to open a separate layer or change task mode. | Use a popover when users need local context, clarification, or a small edit without losing their place in the page. | Use an action menu when users need several contextual commands without keeping every command visible, and the list itself must explain scope, availability, risk, and outcome. |
| 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 silently deletes an item with no hint, progress, confirmation, undo, or visible alternative. | A map can only be zoomed with a two-finger pinch and has no plus, minus, or reset controls. | Right clicking a row opens a menu beside the toolbar and still shows actions for the previously selected row. | A mystery icon has no label and the only explanation is a hover-only tooltip that never appears for touch users. | A large floating panel appears in the middle of the screen with no arrow, no title, no trigger relationship, and hidden controls below the fold. | A More menu contains Open, Edit, View, Delete, Settings, Filter, Owner, and a search box with no sections or object names. |
| 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 pinches a diagram to zoom, sees the scale change, releases outside the threshold without committing a rotate gesture, then uses visible Zoom in and Reset controls with one finger. | 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 with a head pointer cannot trigger a two-finger gesture and has no single-pointer alternative. | Keyboard invocation opens at the top-left corner with no visible relationship to the focused object. | 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 chooses Delete from a generic row menu and cannot tell whether it deletes the row, account, attached files, or selected customers. |
| 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. | Idle state with visible touch targets, gesture hints when needed, and no reliance on hover. | Resting object or selection state before invocation. | Resting trigger state with a visible or accessible name that works without the tooltip. | Closed trigger state with visible label, icon name, or field relationship. | Closed trigger or contextual entry point with resource scope. |
| Accessibility burden | Do not require sustained contact as the only way to access functionality. | 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. | Requiring pinch, rotate, two-finger swipe, or shape gestures with no single-pointer alternative. | 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. | Treating the action menu as a junk drawer for every command that does not fit elsewhere. |