| UI or UX | UI + UX - Blocked-control anti-pattern | UI + UX - Blocked action anti-pattern | UI + UX - Field-level validation feedback | UI + UX - Form recovery summary | UI + UX - Guided workflow for regaining or routing around missing access | UI + UX - User-directed alternate route when the primary path cannot complete |
| UI guidance | Prefer enabled validation, request access, retry after state change, save draft, sign-in recovery, dependency setup, contact owner, or fallback actions over inert controls with hidden causes. | Replace a lone greyed-out action with visible requirement text, a checklist, permission message, or enabled validation submit that tells users what blocks progress. | Render a labeled field with hint text, field-adjacent error text, invalid styling, preserved value, and corrected state. | Render a top-of-form summary block with heading, linked error list, and matching field-level error messages. | Show a recovery workspace after denial with the current account, current role, requested role, safe owner or admin destination, request reason, policy limits, status timeline, and original blocked task. | Place the alternate route beside the blocked primary path with a label that names what changes, such as Enter address manually, Use cached report, Call support with reference, or Continue with paper evidence. |
| UX guidance | Model disabled controls as a lifecycle: unavailable with cause, recoverable, pending, available, processing, completed, or honestly stopped. | Help users understand whether the block is missing input, invalid data, permission, quota, dependency, safety policy, or temporary processing. | Help the person reach a clear task outcome. | Move users from the summary to the exact field, group, or first invalid control that needs correction. | Use permission recovery when users can take a concrete step to regain access, use another identity, request a different role, escalate a policy block, or continue with a safe fallback after an authorization denial. | Use a fallback path when the primary route is unavailable, unsuitable, unsupported, or repeatedly failing, and users still need a credible way to complete the task. |
| Good UI | An Invite teammate panel shows missing billing setup, owner approval, and team domain checks, with Open billing, Request owner approval, Save draft, and Contact admin actions. | Create workspace is paired with visible requirements: enter a workspace name, accept billing terms, and request owner access. | Error text appears next to the field with readable spacing, persistent label, hint text, and the invalid value still visible. | Top-of-form summary with a clear heading, linked error list, and matching inline field messages. | A restricted report recovery panel shows alex@northwind.example lacks Finance viewer access, lets the user request Viewer or Editor with a reason, names Priya as the approver, shows request ACC-2048 as pending, and returns to the report after approval. | A service dependency outage panel says Identity check unavailable, shows saved application answers, and offers Upload documents for manual review with expected review time. |
| Bad UI | Users abandon the task because every visible route is inert. | Disabled controls hide the only validation feedback from keyboard and assistive technology users. | Error message appears far from the field it describes. | Summary and field messages visually disconnected or contradictory. | A blocked report only has Retry, so the user repeats the same denied request. | The only visible action repeats the failing lookup or request. |
| Good UX | A user sees which prerequisites are complete, opens billing setup for the missing prerequisite, saves the invite draft, requests owner approval, and returns to send once eligibility changes. | Users can satisfy requirements one by one and see the action become available, or submit and receive actionable validation. | Validation appears after blur or submit when it helps correction. | After failed submit, focus or reading order makes the summary discoverable before users scan the form. | A user requests Finance viewer access with a reason, sees the request is pending with Priya, receives approval, opens the report from the same recovery panel, and lands back on the original report. | The person reaches the intended result with clear feedback. |
| Bad UX | Users abandon the task because every visible route is inert. | Disabled controls hide the only validation feedback from keyboard and assistive technology users. | Showing errors before users type. | Only showing errors below the fold. | A user repeatedly clicks Retry on a permission denial because the UI treats authorization as a transient load failure. | A user tries the same failed lookup five times because the manual route is hidden until after repeated failure. |
| Best fit | Auditing disabled primary actions, toolbar commands, menu items, toggles, form controls, checkout actions, invite flows, publish controls, exports, destructive actions, and workflow steps. | Use this anti-pattern entry to audit disabled submit, continue, create, save, delete, publish, invite, export, payment, and setup actions. | A single field has a specific correctable problem. | Form submission can produce one or more errors. | A denied user can request access, switch accounts, ask an admin, join a group, or use a safe fallback to continue. | A primary lookup, verification, upload, payment, search, device feature, online-only step, or channel can fail while the user still needs to finish. |
| Avoid when | The control is briefly disabled only to prevent duplicate submission and visible progress explains the temporary state. | The action remains available and returns actionable validation after activation. | The main recovery task is finding several errors across a submitted page. | The message is a system failure, permission problem, or outage rather than a validation issue. | The user is unauthenticated and the next step is sign-in or session extension. | The only honest next step is retrying the same operation after a transient failure. |
| Required state | Prerequisite map state that shows each requirement and whether it is met. | Unavailable action state with visible reason and affected requirement. | Invalid field with preserved user value and adjacent correction text. | Failed-submit state with summary visible near the form heading. | Recovery start state with original blocked task and current account. | Primary path available state. |
| Accessibility burden | Keep requirement and recovery text in reading order before or adjacent to the unavailable control. | Keep requirement text in normal reading order and near the unavailable action. | Expose invalid state on the input and connect error text to the field description where possible. | Use a heading and alert behavior that makes the summary discoverable. | Move focus to the recovery heading when the workflow opens from a denial. | Use specific link and button names that describe the alternate method and outcome. |
| Common misuse | A disabled Invite teammate action hides that billing setup, owner approval, or admin policy is required. | Using disabled state to hide permission, quota, account lock, or system dependency problems. | Showing field errors before users have interacted with the control. | Replacing field-level messages with only a top-level summary. | Offering Retry for an unchanged authorization denial. | Hiding manual entry or support until users repeatedly fail. |