| UI or UX | UI + UX - Responsibility control for assigning a work item to eligible people, teams, roles, bots, or no owner | UI + UX - Component-level list of linked task rows with names, hints, and statuses | UI + UX - Actionable queue for triaging many items that need human review | UI + UX - Routed decision workflow for requests that require authorized approval | UI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguards | UI + UX - Existing-entity lookup and selected-object confirmation | UI + UX - Durable user-opened notification history and action drawer | UI + UX - Catch-up stream of recent collaboration and work events with actor, verb, object, type, destination, and triage controls | UI + UX - Durable permission administration for users, groups, roles, inherited access, effective access, and revocation |
| UI guidance | Render assignment as a responsibility field on a specific work item with current assignee, unassigned state, eligibility-filtered candidate picker, self-assign affordance, reassign and clear controls, notification outcome, and visible responsibility wording. | Give each control a clear label and visible state. | Render review queue as an actionable worklist with queue scope, counts, filters, sort order, row reason, owner, priority, age or SLA, status, preview context, selection, and row actions. | Render approval workflow as a routed request record with requester, object, requested action, approver eligibility, required rule, current gate, due date, decision controls, comment history, and outcome consequences. | Show mention suggestions at the caret with names, handles, avatars, teams, channels, availability or scope hints, permission warnings, and keyboard-highlight state; distinguish exact matches, ambiguous display names, unavailable recipients, and broad-audience mentions. | Show enough fields to distinguish same-named objects before selection, and keep the selected object preview visible after the popup closes so the submitted entity can be inspected. | Provide a persistent notification entry point, usually a bell or inbox control, with a count that represents new unseen notifications rather than every unread item forever. | Render activity feed as a typed event stream where each item names the actor or source app, action, object, workspace or channel, timestamp, preview, event type, read or cleared state when supported, and a stable destination for follow-up. | Render permission sharing as an access-management surface with the protected resource, current direct grants, inherited grants, groups, guests, anonymous or link access, role or permission level, effective access, pending changes, and revoke or save actions. |
| UX guidance | Make assignment changes traceable and reversible enough for teamwork: explain who owns the item now, who was notified, whether the assignee can act, what changed in assigned-to-me views, and what happens to existing watchers, reviewers, collaborators, or queues. | Use task list when users need to scan a known set of service tasks, understand what each task is, choose a task to start or resume, and see each task's current status. | Use review queue when a team repeatedly processes a changing set of tickets, comments, pull requests, content items, cases, requests, or records that require human inspection and action. | Make the approval route understandable over time: who has the request, what decision is needed, what happens on approval or rejection, what blocks self-review, and where the requester can revise or withdraw. | Use mentions when a user needs to call attention to a person, team, channel, role, or group from inside a message, comment, task, document, issue, or thread while keeping the reference embedded in the authored content. | Use an object picker when the user must choose an existing entity whose identity matters beyond the displayed label, such as a record, person, group, account, file, team, project, or workspace. | Use a notification center when users receive enough asynchronous system or collaboration updates that they need a durable place to review, triage, and act later. | Protect attention by grouping low-value repetition, preserving meaningful actors and destinations, distinguishing mention/reply/reaction/app/reminder/project-change types, and routing audit evidence, long-form content, and live status elsewhere. | Use permission sharing when authorized owners or admins need to grant, change, audit, or revoke durable access to a space, site, repository, folder, project, board, dataset, environment, or sensitive object. |
| Good UI | An issue sidebar shows Assignee: Maya Chen, Assign to me, Change assignee, Clear, eligible teammate search, reviewer separate from assignee, and a note that the new assignee will be notified. | A task list row for Upload evidence shows the task name, a short hint, a linked row, and a Needs attention status with the unavailable reason in the row text. | A moderation queue has Held, Likely spam, Reported, and Escalated tabs, row evidence, policy reason, reviewer claim state, approve/remove/escalate actions, and bulk-action preview. | A production deployment request shows requester, service, environment, change summary, required reviewer group, self-review restriction, wait timer, Approve and Reject with reason controls, and a timeline of route changes. | A comment composer opens a suggestion list after @, shows people and teams with avatars, handles, access labels, and keyboard focus, then inserts a mention chip for Priya Rao. | A Related account field shows two Acme Retail records with account ID, region, status, and owner, then displays a selected-object preview card before saving. | A bell opens a drawer with Unread and All filters, showing comment mentions, approval requests, export results, and background-job failures in newest-first order. | A team activity feed shows Priya mentioned you in #refunds, Build bot marked release-128 failed, Maya reacted to your handoff note, and Rahul merged PR #742, each with icon, timestamp, preview, type filter, and Open action. | A repository access page lists teams, outside collaborators, deploy keys, and direct users with Read, Triage, Write, Maintain, and Admin roles, showing that only Admin can manage access. |
| Bad UI | Automatic assignment points to a stale default owner. | A task list uses uppercase button-like status pills and users click the status instead of the row. | The most urgent or oldest item is buried by default sort. | A stale email approval applies to a request version that has changed. | Mention chips break when copied, pasted, edited, localized, or rendered in plain-text fallbacks. | A text field accepts Acme Retail as free text even though the backend needs a record ID. | Users ignore the center because duplicate low-value messages inflate the badge. | A feed includes every presence heartbeat and typing event, making mentions and failed deployment events impossible to find. | A permissions page shows only individual names and Remove buttons even though group membership and parent folder inheritance still grant access. |
| Good UX | A triager changes a support ticket from unassigned to Priya, adds a handoff note, sees that Priya has access and capacity warning, and the ticket appears in Priya's assigned-to-me queue. | A user scans five task rows, sees that Financial history is incomplete, selects anywhere on that row, completes the section, and returns to find the row status changed to Completed. | A reviewer claims the oldest SLA-at-risk ticket, opens a preview, assigns it to Billing, returns to the queue with the row removed, and lands on the next oldest item. | A finance approval requires both manager and controller approval; the first approval advances the sequence, a rejection stops downstream processing, and the requester sees the exact rejection reason and revise action. | A user mentions @Dana in a private incident note, sees that Dana lacks access, chooses Invite and mention, and the resulting notification opens the exact note. | A user searches Acme, compares two same-named records by region and status, selects the active EMEA account, and reviews the selected account ID before saving. | Opening the notification drawer clears the new-notification badge while unread items remain available for later triage. | A user filters Activity to mentions and replies, answers one thread inline, clears low-value reactions, saves a custom view for VIPs, and opens a deployment failure in the source app. | A space admin removes Maya from a direct grant but sees she still has View through the Contractors group, so they remove the group grant or ask a site admin to update group membership. |
| Bad UX | An automatic assignment silently routes every new component issue to a former maintainer and leaves the team with stale ownership. | A completed row has the strongest colour treatment, so users repeatedly revisit it instead of incomplete rows. | A reviewer marks a pull request reviewed from an old queue row after the author pushed new commits and re-requested review. | The first approver clicks Approve and the system marks the whole request approved even though policy required everyone to approve. | A mention notification opens the record homepage rather than the exact comment sentence, forcing the recipient to search for why they were pulled in. | A user picks the first Acme result because every row looks identical, then links the case to the wrong account. | Users mark all notifications read and lose the only record of an export job they still need to download. | A user clears a notification in Activity but the notification center badge stays out of sync and the same event reappears as unread. | A repository admin removes a collaborator but forgets a deploy key with write access because the access page treated machine credentials as unrelated settings. |
| Best fit | A user must set, change, or clear who is accountable for a work item. | A page needs to display a known set of tasks with status and links to start or resume them. | A team or individual repeatedly reviews many independently queued items. | A submitted request needs authorized approval before a deployment, purchase, access grant, publication, content change, policy exception, financial action, or workflow step can proceed. | Composed content needs to target people or groups inline. | Users assign, link, reference, invite, route, or attach an existing entity. | Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders. | Users need to catch up on recent collaboration, app, repository, channel, project, meeting, reminder, or task activity. | Owners or admins need to manage durable access to spaces, sites, repositories, projects, folders, datasets, boards, environments, or sensitive objects. |
| Avoid when | The user only needs to mention or notify someone in conversation. | Users are browsing arbitrary records rather than completing a fixed set of service tasks. | The task is a single request moving through a governed approval route. | The user only needs to check their own answers before submission. | The user is selecting a structured owner, assignee, approver, or recipient field outside written content. | Any arbitrary text is valid. | The product has only occasional current-action feedback that a toast or inline status can handle. | The surface is primarily content consumption, media browsing, or article-like stream reading. | The user is requesting access after denial rather than administering access. |
| Required state | Unassigned item state. | Linked startable task row. | Queue loading and count state | Draft or submit-ready request handoff state | Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token. | Empty object lookup field with label, helper text, and current search scope. | Closed entry-point state with zero, new-unseen, and unread-but-seen counts. | Default feed state with actor, verb, object, timestamp, source, type icon, preview, scope, and destination for each activity item. | Default access list state with users, groups, guests, anonymous access, roles, and effective access. |
| Accessibility burden | Label the assignment field with the current assignee, item name, and responsibility meaning. | Use list semantics for the collection of task rows and clear heading structure for grouped task lists. | Use labelled queue name, count, filters, sort, group, row status, selection, preview, and action controls. | Use labelled request summary, approver, status, due date, decision, comment, and history regions. | Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets. | Give the lookup field a persistent label and helper text that explains the expected object type. | Announce new notification arrival with status semantics when appropriate, but avoid interrupting users repeatedly for low-priority center items. | Give the activity feed a heading and expose the current filter, layout, and unread or cleared state in text. | Use labelled tables or grids with column headers for principal, source, role, capability, status, and actions. |
| Common misuse | Treating a mention as an assignment. | Using task list as an answer summary. | Treating review queue as approval workflow and hiding many-item workload controls. | Treating the first approval as final when the rule requires more approvers. | Treating a mention suggestion list as a generic people picker and ignoring caret position, inline serialization, and notification side effects. | Treating the picker as a free text field when the system requires an existing object ID. | Treating the badge count, unread count, and total notification count as one number. | Dumping every low-level system event, presence update, typing event, or cursor movement into the feed. | Showing only direct users while group or inherited access remains active. |