Back to compare picker

Presence vs Mentions vs Notification center vs Activity log vs Comments vs Threaded discussion vs Settings management vs Permission denied state

Choose presence when users need to judge whether another person is currently available, away, busy, offline, in a meeting, focusing, presenting, viewing the same object, or recently active before interrupting, routing, assigning, joining, or waiting.

Decision dimensions

Dimension PresenceMentionsNotification centerActivity logCommentsThreaded discussionSettings managementPermission denied state
UI or UX UI + UX - Person or group availability signal with status label, recency, source, privacy boundary, and action-aware affordancesUI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguardsUI + UX - Durable user-opened notification history and action drawerUI + UX - Searchable and exportable record of system, user, or administrative eventsUI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderationUI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controlsUI + UX - Dedicated user or app configuration management surfaceUI + UX - Authorization and access-boundary state
UI guidance Render presence as a labelled availability signal near the person, team, object, or conversation it describes; pair color, shape, text, timestamp, and source so users can distinguish active, away, busy, do not disturb, offline, unknown, viewing, and recently active states.Render mentions as inline tokens or highlighted text that preserve a stable recipient identity, display name, avatar or team marker, recipient type, and selected state without breaking surrounding editable text.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 logs as evidence-oriented records with event time, actor, action, object, source system, scope, result, and technical context such as IP address or location when available.Render comments as anchored contributions with author identity, timestamp, body, optional attachment or selection context, edited state, reply target, and state labels such as open, resolved, hidden, deleted, or assigned.Render a threaded discussion around a visible parent topic or parent message, with reply rows that preserve author, timestamp, reply target, branch depth, unread or new state, and thread-scoped actions.Render settings management as a durable configuration surface with a clear Settings or Preferences entry point, grouped categories, current values, setting descriptions, ownership or scope labels, dependencies, save or immediate-apply behavior, status feedback, search or section navigation for larger sets, and reset or restore defaults where appropriate.Show the blocked object or action, current account, permission level, required role, owner, and request path when revealing that information is allowed.
UX guidance Use presence when users need to decide whether to interrupt, wait, route work, join a session, assign follow-up, or understand who is currently viewing or recently active in a shared space.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 a notification center when users receive enough asynchronous system or collaboration updates that they need a durable place to review, triage, and act later.Use activity log when users need to investigate, audit, verify, or troubleshoot actions across accounts, objects, systems, settings, or security boundaries.Use comments when users need to discuss, question, annotate, review, or leave follow-up notes on a specific object, selection, file line, record, document, or task without changing the primary content directly.Use threaded discussion when users need to follow, contribute to, or resolve a conversation that branches from one topic, question, channel message, or post and must keep replies understandable over time.Use settings management when users need to review and change persistent app, account, workspace, notification, privacy, display, integration, or system behavior outside the immediate task flow.Use permission denied state when the system knows the user is authenticated but their role, group, share, license, policy, or approval status blocks a specific object or action.
Good UI A reviewer row shows Priya as Busy in a meeting until 14:30, disables Call, keeps Message available, and offers Notify when available.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 bell opens a drawer with Unread and All filters, showing comment mentions, approval requests, export results, and background-job failures in newest-first order.An organization audit log table shows timestamp, actor, action, target object, app, IP address, result, and a Details drawer with before and after fields.A document margin comment shows the selected paragraph, author, timestamp, body text, Reply, Resolve, Assign, and Copy link actions with the composer focused on that selection.A support topic shows the original question, three top-level replies, one expanded reply branch, an accepted answer badge, unread branch marker, and thread-level Follow and Mute controls.A notification settings page groups channels, quiet hours, digest frequency, and workspace scope; each row shows current value, effect, dependency, and whether changes save immediately.A report page says Quarterly revenue report requires Finance viewer access, shows the current account, names the report owner, and offers Request access and Switch account.
Bad UI A green dot appears next to every name with no label, timestamp, or meaning.The editor highlights every @word as a mention even when it is plain text and has no recipient identity.A red badge says 42 forever because opening the drawer, reading items, and viewing related work never update the count.A page titled Activity shows vague entries such as Changed settings with no actor, target, timestamp, or source.A Notes textarea sits under a record and calls itself comments even though every user overwrites the same field.All replies are rendered as identical flat messages with no indication of which parent or branch they answer.A page called Settings mixes billing invoices, destructive account deletion, onboarding tips, profile setup, search results, and global navigation with no grouping or save model.A denial page says Something went wrong and shows Retry even though the user lacks a required group.
Good UX A user sees that Dana is in Do not disturb, sends a message without a banner interruption, and schedules a reminder to follow up when Dana is available.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.Opening the notification drawer clears the new-notification badge while unread items remain available for later triage.An admin filters to failed SSO events, expands one entry, copies the event ID, exports the filtered range, and sees that records older than 180 days require a different archive.A reviewer comments on a selected line, adds an action item for Dana, receives a reply, resolves the comment, and can reopen it from the resolved filter.A user opens a notification to a specific unread reply, sees the parent post and branch context, replies, marks the answer, and mutes future replies after resolution.A user turns off weekly digest emails, sees the setting save immediately, keeps urgent security emails enabled, and understands the workspace-level override.A user opens a restricted report, sees which account is signed in, requests viewer access with a reason, then sees that the request is pending with the owner.
Bad UX A manager treats Away as an attendance record even though it came from device inactivity and privacy-limited activity data.A user mentions someone in a private channel, the person is not notified, and the sender receives no warning or recovery path.A payment failure that blocks the current checkout is only stored in the notification center and never appears in the task.A user marks a notification read and the corresponding activity evidence disappears from the only log.A user writes a long comment, loses network connection, and the draft disappears when the page reloads.A user clicks New reply and lands at the top of a long topic with no highlight, branch context, or last-read position.A user changes a privacy setting thinking it affects only one project, but the value applies to the whole account.The app returns a blank screen for a restricted file, so the user cannot tell whether the file is gone, private, or opened with the wrong account.
Best fit Users need to understand current or recent availability before messaging, calling, assigning, routing, or joining.Composed content needs to target people or groups inline.Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders.Users need to inspect recorded user, admin, system, security, or integration events.Users need object-attached discussion without changing the primary object content directly.A topic or parent message can generate multiple reply branches that users need to follow over time.Users need to inspect and change persistent app, account, workspace, privacy, notification, display, integration, device, or system behavior.A signed-in user lacks permission to view, edit, publish, export, delete, approve, share, administer, or configure a resource.
Avoid when The product needs a durable audit trail or compliance record.The user is selecting a structured owner, assignee, approver, or recipient field outside written content.The product has only occasional current-action feedback that a toast or inline status can handle.The goal is only to show a readable milestone history for one case or process.The user is simply entering a long answer into a form field.The feedback is a simple object-attached comment with no navigable topic discussion.The task is a one-time transaction, submission, setup wizard, or onboarding flow.The user is not signed in and the next step is authentication rather than authorization.
Required state Available, active, away, busy, in a meeting, in a call, presenting, focusing, do not disturb, out of office, offline, unknown, and hidden states where supported.Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.Closed entry-point state with zero, new-unseen, and unread-but-seen counts.Default log state with event records, result count, visible timezone, retention window, and permission scope.Empty comment list and first-comment composer.Parent topic or parent message with author, timestamp, title or body, category, and reply count.Settings overview with categories and current valuesWhole-object access denied state.
Accessibility burden Expose presence state as text, such as Dana Lee, Busy in a meeting until 14:30, not just a colored dot.Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.Give the entry-point control an accessible name that includes new or unread count without relying only on a red dot.Use table or structured list semantics so actor, action, object, timestamp, result, and scope are perceivable together.Label the comments region with the object or selection being discussed.Label the thread region with the parent topic or message title.Use headings, section labels, fieldsets, and persistent labels so settings groups and controls have clear programmatic names.Use a heading that identifies the access boundary and a text description that does not rely on lock icons or red color alone.
Common misuse Using only color dots without text labels, source, or recency.Parsing @words after submit without requiring the sender to choose a real recipient.Treating the badge count, unread count, and total notification count as one number.Calling a social feed or notification drawer an activity log without event evidence.Using one shared Notes field as a comment system and overwriting prior contributors.Flattening every reply into a chronological stream and losing who replied to whom.Using settings as a dumping ground for unrelated navigation, billing, help, profile setup, onboarding, or destructive account actions.Treating authorization denial as a generic retryable error.

Presence

UI or UX
UI + UX - Person or group availability signal with status label, recency, source, privacy boundary, and action-aware affordances
UI guidance
Render presence as a labelled availability signal near the person, team, object, or conversation it describes; pair color, shape, text, timestamp, and source so users can distinguish active, away, busy, do not disturb, offline, unknown, viewing, and recently active states.
UX guidance
Use presence when users need to decide whether to interrupt, wait, route work, join a session, assign follow-up, or understand who is currently viewing or recently active in a shared space.
Good UI
A reviewer row shows Priya as Busy in a meeting until 14:30, disables Call, keeps Message available, and offers Notify when available.
Bad UI
A green dot appears next to every name with no label, timestamp, or meaning.
Good UX
A user sees that Dana is in Do not disturb, sends a message without a banner interruption, and schedules a reminder to follow up when Dana is available.
Bad UX
A manager treats Away as an attendance record even though it came from device inactivity and privacy-limited activity data.
Best fit
Users need to understand current or recent availability before messaging, calling, assigning, routing, or joining.
Avoid when
The product needs a durable audit trail or compliance record.
Required state
Available, active, away, busy, in a meeting, in a call, presenting, focusing, do not disturb, out of office, offline, unknown, and hidden states where supported.
Accessibility burden
Expose presence state as text, such as Dana Lee, Busy in a meeting until 14:30, not just a colored dot.
Common misuse
Using only color dots without text labels, source, or recency.

Mentions

UI or UX
UI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguards
UI guidance
Render mentions as inline tokens or highlighted text that preserve a stable recipient identity, display name, avatar or team marker, recipient type, and selected state without breaking surrounding editable text.
UX guidance
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.
Good UI
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.
Bad UI
The editor highlights every @word as a mention even when it is plain text and has no recipient identity.
Good UX
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.
Bad UX
A user mentions someone in a private channel, the person is not notified, and the sender receives no warning or recovery path.
Best fit
Composed content needs to target people or groups inline.
Avoid when
The user is selecting a structured owner, assignee, approver, or recipient field outside written content.
Required state
Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.
Accessibility burden
Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.
Common misuse
Parsing @words after submit without requiring the sender to choose a real recipient.

Notification center

UI or UX
UI + UX - Durable user-opened notification history and action drawer
UI guidance
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.
UX guidance
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.
Good UI
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.
Bad UI
A red badge says 42 forever because opening the drawer, reading items, and viewing related work never update the count.
Good UX
Opening the notification drawer clears the new-notification badge while unread items remain available for later triage.
Bad UX
A payment failure that blocks the current checkout is only stored in the notification center and never appears in the task.
Best fit
Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders.
Avoid when
The product has only occasional current-action feedback that a toast or inline status can handle.
Required state
Closed entry-point state with zero, new-unseen, and unread-but-seen counts.
Accessibility burden
Give the entry-point control an accessible name that includes new or unread count without relying only on a red dot.
Common misuse
Treating the badge count, unread count, and total notification count as one number.

Activity log

UI or UX
UI + UX - Searchable and exportable record of system, user, or administrative events
UI guidance
Render activity logs as evidence-oriented records with event time, actor, action, object, source system, scope, result, and technical context such as IP address or location when available.
UX guidance
Use activity log when users need to investigate, audit, verify, or troubleshoot actions across accounts, objects, systems, settings, or security boundaries.
Good UI
An organization audit log table shows timestamp, actor, action, target object, app, IP address, result, and a Details drawer with before and after fields.
Bad UI
A page titled Activity shows vague entries such as Changed settings with no actor, target, timestamp, or source.
Good UX
An admin filters to failed SSO events, expands one entry, copies the event ID, exports the filtered range, and sees that records older than 180 days require a different archive.
Bad UX
A user marks a notification read and the corresponding activity evidence disappears from the only log.
Best fit
Users need to inspect recorded user, admin, system, security, or integration events.
Avoid when
The goal is only to show a readable milestone history for one case or process.
Required state
Default log state with event records, result count, visible timezone, retention window, and permission scope.
Accessibility burden
Use table or structured list semantics so actor, action, object, timestamp, result, and scope are perceivable together.
Common misuse
Calling a social feed or notification drawer an activity log without event evidence.

Comments

UI or UX
UI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderation
UI guidance
Render comments as anchored contributions with author identity, timestamp, body, optional attachment or selection context, edited state, reply target, and state labels such as open, resolved, hidden, deleted, or assigned.
UX guidance
Use comments when users need to discuss, question, annotate, review, or leave follow-up notes on a specific object, selection, file line, record, document, or task without changing the primary content directly.
Good UI
A document margin comment shows the selected paragraph, author, timestamp, body text, Reply, Resolve, Assign, and Copy link actions with the composer focused on that selection.
Bad UI
A Notes textarea sits under a record and calls itself comments even though every user overwrites the same field.
Good UX
A reviewer comments on a selected line, adds an action item for Dana, receives a reply, resolves the comment, and can reopen it from the resolved filter.
Bad UX
A user writes a long comment, loses network connection, and the draft disappears when the page reloads.
Best fit
Users need object-attached discussion without changing the primary object content directly.
Avoid when
The user is simply entering a long answer into a form field.
Required state
Empty comment list and first-comment composer.
Accessibility burden
Label the comments region with the object or selection being discussed.
Common misuse
Using one shared Notes field as a comment system and overwriting prior contributors.

Threaded discussion

UI or UX
UI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controls
UI guidance
Render a threaded discussion around a visible parent topic or parent message, with reply rows that preserve author, timestamp, reply target, branch depth, unread or new state, and thread-scoped actions.
UX guidance
Use threaded discussion when users need to follow, contribute to, or resolve a conversation that branches from one topic, question, channel message, or post and must keep replies understandable over time.
Good UI
A support topic shows the original question, three top-level replies, one expanded reply branch, an accepted answer badge, unread branch marker, and thread-level Follow and Mute controls.
Bad UI
All replies are rendered as identical flat messages with no indication of which parent or branch they answer.
Good UX
A user opens a notification to a specific unread reply, sees the parent post and branch context, replies, marks the answer, and mutes future replies after resolution.
Bad UX
A user clicks New reply and lands at the top of a long topic with no highlight, branch context, or last-read position.
Best fit
A topic or parent message can generate multiple reply branches that users need to follow over time.
Avoid when
The feedback is a simple object-attached comment with no navigable topic discussion.
Required state
Parent topic or parent message with author, timestamp, title or body, category, and reply count.
Accessibility burden
Label the thread region with the parent topic or message title.
Common misuse
Flattening every reply into a chronological stream and losing who replied to whom.

Settings management

UI or UX
UI + UX - Dedicated user or app configuration management surface
UI guidance
Render settings management as a durable configuration surface with a clear Settings or Preferences entry point, grouped categories, current values, setting descriptions, ownership or scope labels, dependencies, save or immediate-apply behavior, status feedback, search or section navigation for larger sets, and reset or restore defaults where appropriate.
UX guidance
Use settings management when users need to review and change persistent app, account, workspace, notification, privacy, display, integration, or system behavior outside the immediate task flow.
Good UI
A notification settings page groups channels, quiet hours, digest frequency, and workspace scope; each row shows current value, effect, dependency, and whether changes save immediately.
Bad UI
A page called Settings mixes billing invoices, destructive account deletion, onboarding tips, profile setup, search results, and global navigation with no grouping or save model.
Good UX
A user turns off weekly digest emails, sees the setting save immediately, keeps urgent security emails enabled, and understands the workspace-level override.
Bad UX
A user changes a privacy setting thinking it affects only one project, but the value applies to the whole account.
Best fit
Users need to inspect and change persistent app, account, workspace, privacy, notification, display, integration, device, or system behavior.
Avoid when
The task is a one-time transaction, submission, setup wizard, or onboarding flow.
Required state
Settings overview with categories and current values
Accessibility burden
Use headings, section labels, fieldsets, and persistent labels so settings groups and controls have clear programmatic names.
Common misuse
Using settings as a dumping ground for unrelated navigation, billing, help, profile setup, onboarding, or destructive account actions.

Permission denied state

UI or UX
UI + UX - Authorization and access-boundary state
UI guidance
Show the blocked object or action, current account, permission level, required role, owner, and request path when revealing that information is allowed.
UX guidance
Use permission denied state when the system knows the user is authenticated but their role, group, share, license, policy, or approval status blocks a specific object or action.
Good UI
A report page says Quarterly revenue report requires Finance viewer access, shows the current account, names the report owner, and offers Request access and Switch account.
Bad UI
A denial page says Something went wrong and shows Retry even though the user lacks a required group.
Good UX
A user opens a restricted report, sees which account is signed in, requests viewer access with a reason, then sees that the request is pending with the owner.
Bad UX
The app returns a blank screen for a restricted file, so the user cannot tell whether the file is gone, private, or opened with the wrong account.
Best fit
A signed-in user lacks permission to view, edit, publish, export, delete, approve, share, administer, or configure a resource.
Avoid when
The user is not signed in and the next step is authentication rather than authorization.
Required state
Whole-object access denied state.
Accessibility burden
Use a heading that identifies the access boundary and a text description that does not rely on lock icons or red color alone.
Common misuse
Treating authorization denial as a generic retryable error.
Decision rules
  • Choose presence when users need to judge whether another person is currently available, away, busy, offline, in a meeting, focusing, presenting, viewing the same object, or recently active before interrupting, routing, assigning, joining, or waiting.
  • Choose mentions when a composer needs to target a person or group inside a message, comment, issue, task, or document; mention delivery may use presence context, but the mention is an authored attention event rather than an availability signal.
  • Use notification center when users need a retained inbox of unread items, reminders, and preference controls; presence may explain why a recipient may not respond now, but it should not become the inbox itself.
  • Use activity log when the product must prove who viewed, changed, routed, or was notified about something; presence and view history can inform follow-up, but they are not sufficient compliance evidence unless explicitly captured as audit events.
  • Use comments or threaded discussion when the primary task is participating in a conversation; presence can show who is viewing, replying, or available, but it should not replace author, reply, resolve, branch, unread, or moderation state.
  • Use profile setup for durable identity details such as name, role, avatar, pronouns, and time zone; presence is a transient signal that can change automatically by activity, calendar, device, or manual override.
  • Use settings management when users configure availability defaults, working hours, privacy mode, external sharing, status duration, and automatic status rules; do not hide these controls inside every presence badge.
  • Use permission-denied state when a person cannot view presence or activity due to privacy, external access, domain, or object permission limits; show restricted or unknown states rather than inventing availability.
  • Use sync state when the problem is whether data has been sent, saved, or refreshed; presence recency should name freshness and source so stale availability is not mistaken for a live connection.
  • Use offline state for the current user's connectivity and recovery path; another person's offline or away presence should not imply this user's app is offline.
Inspect live examples
Failure modes
  • Presence is shown as a green dot with no label, source, timestamp, or privacy state, leaving users to guess whether it means online, available, viewing, or recently active.
  • An old presence value remains visible after a device disconnects and the UI does not show stale, unknown, or last-updated state.
  • A busy or do-not-disturb person receives intrusive calls or banners because action controls ignore presence and priority rules.
  • The interface exposes view activity or presence across domains, guests, private files, or external organizations without honoring privacy settings.
  • Presence is used as a performance or attendance record even though the underlying source is automatic, delayed, preference-limited, or explicitly not an audit record.
  • A co-viewing indicator says three people are here but gives no names, roles, access scope, screen-reader label, or way to follow up.