| UI or UX | UI + UX - Catch-up stream of recent collaboration and work events with actor, verb, object, type, destination, and triage controls | UI + UX - Dynamic stream of article-like updates that may load or insert content at either end | UI + UX - Searchable and exportable record of system, user, or administrative events | UI + UX - Durable user-opened notification history and action drawer | UI + UX - Bounded chronological record of past, current, or expected events | UI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderation | UI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguards | UI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controls | UI + UX - Person or group availability signal with status label, recency, source, privacy boundary, and action-aware affordances |
| UI guidance | 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 the feed as a labelled stream of item boundaries where each item has a source or author, timestamp, title or body summary, type, actions, and enough context to stand alone as an article-like update. | 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. | 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 the timeline as a labelled chronological sequence where each event has a visible date or time, event title, actor or system source when known, status or type, and a short summary. | 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. | 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. | 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. | Show presence controls and explanations where users act on the signal: status menu, status duration, last updated time, working-hours note, privacy restriction, stale value, co-viewer list, and action changes such as call disabled, message allowed, or notify later. |
| UX guidance | 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 feed when users consume a continuing stream of posts, updates, stories, events, or collaboration activity and need to keep their reading position while new or older content appears. | Use activity log when users need to investigate, audit, verify, or troubleshoot actions across accounts, objects, systems, settings, or security boundaries. | 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 timeline when users need to understand what happened, where they are now, and what may happen next in a case, claim, application, order, incident, or process. | Preserve comment drafts, anchors, authorship, notifications, edit history, deletion outcomes, and resolved or hidden states so conversation context remains trustworthy across reloads, permissions, moderation, and return visits. | 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 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 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 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 project feed shows source avatar, actor, timestamp, object name, excerpt, item type, unread marker, reply and save actions, and a visible queued-new-items banner while the reader is midstream. | 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 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 benefits application timeline groups events by date and shows Application submitted, Evidence requested, Evidence received, Decision pending, and Next review, with actor, timestamp, and status marker. | 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 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 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 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 feed includes every presence heartbeat and typing event, making mentions and failed deployment events impossible to find. | New posts appear above the current paragraph and shift the page while the user is reading. | An export button downloads a different date range and timezone than the on-screen filtered log. | Users ignore the center because duplicate low-value messages inflate the badge. | A dense audit table is squeezed into timeline cards and hides changed fields, exact actor identity, and retention proof. | A Notes textarea sits under a record and calls itself comments even though every user overwrites the same field. | Mention chips break when copied, pasted, edited, localized, or rendered in plain-text fallbacks. | Nested replies are indented until they become unreadable on mobile and the answer is hidden below collapsed context. | A stale active badge remains after the user has gone offline and the call button still looks primary. |
| Good UX | 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 user pauses live updates, reads three older posts, sees 2 new updates waiting, then chooses Jump to latest when ready. | 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. | Opening the notification drawer clears the new-notification badge while unread items remain available for later triage. | A caseworker filters the timeline to System events, sees two date groups hidden, restores all events, and the event order and current marker stay stable. | 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 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 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 file owner sees who has viewed the document within the same domain, respects hidden view-history settings, and uses the signal for follow-up rather than audit proof. |
| Bad UX | A user clears a notification in Activity but the notification center badge stays out of sync and the same event reappears as unread. | The feed jumps to the top whenever a new post arrives. | A user marks a notification read and the corresponding activity evidence disappears from the only log. | Users mark all notifications read and lose the only record of an export job they still need to download. | A user sees a future appointment marker styled like completed history and assumes the appointment already happened. | A user writes a long comment, loses network connection, and the draft disappears when the page reloads. | 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 moderator marks an answer but the thread summary still shows unanswered because answer state is stored only on the visible reply card. | 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 catch up on recent collaboration, app, repository, channel, project, meeting, reminder, or task activity. | Users consume a continuing stream of updates, posts, stories, comments, media, or collaboration activity. | Users need to inspect recorded user, admin, system, security, or integration events. | Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders. | Users need a chronological record of important events for one object, case, order, application, or process. | Feedback must preserve author, timestamp, reply, resolution, assignment, or moderation context. | Composed content needs to target people or groups inline. | A topic or parent message can generate multiple reply branches that users need to follow over time. | Users need to understand current or recent availability before messaging, calling, assigning, routing, or joining. |
| Avoid when | The surface is primarily content consumption, media browsing, or article-like stream reading. | The content is a finite set of objects that users need to filter, sort, select, compare, or manage. | The goal is only to show a readable milestone history for one case or process. | The product has only occasional current-action feedback that a toast or inline status can handle. | The surface is a live stream whose content keeps arriving and must preserve reader position. | The user is simply entering a long answer into a form field. | The user is selecting a structured owner, assignee, approver, or recipient field outside written content. | The surface is a broad feed of independent posts or activity cards. | The product needs a durable audit trail or compliance record. |
| Required state | Default feed state with actor, verb, object, timestamp, source, type icon, preview, scope, and destination for each activity item. | Default feed with heading, order label, rendered item count or range, and article-like items. | Default log state with event records, result count, visible timezone, retention window, and permission scope. | Closed entry-point state with zero, new-unseen, and unread-but-seen counts. | Default timeline with heading, order label, date or phase groups, and event markers. | Empty comment list and first-comment composer. | Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token. | Parent topic or parent message with author, timestamp, title or body, category, and reply count. | Manual status, automatic status, status duration, status message, working-hours state, paused-notification state, and calendar-derived state. |
| Accessibility burden | Give the activity feed a heading and expose the current filter, layout, and unread or cleared state in text. | Give the feed a heading or accessible label and expose the current order or filter in text. | Use table or structured list semantics so actor, action, object, timestamp, result, and scope are perceivable together. | Announce new notification arrival with status semantics when appropriate, but avoid interrupting users repeatedly for low-priority center items. | Use semantic list or ordered-list structure with date-group headings and text event labels. | Label the comments region with the object or selection being discussed. | Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets. | Label the thread region with the parent topic or message title. | Announce meaningful presence changes only when they affect the current task or selected person. |
| Common misuse | Dumping every low-level system event, presence update, typing event, or cursor movement into the feed. | Calling any vertical card list a feed even when it is a bounded object collection. | Using vague activity labels that omit actor, action, object, timestamp, or result. | Treating the badge count, unread count, and total notification count as one number. | Omitting dates, actors, or event summaries and expecting icons to communicate the sequence. | Using one shared Notes field as a comment system and overwriting prior contributors. | Treating a mention suggestion list as a generic people picker and ignoring caret position, inline serialization, and notification side effects. | Flattening every reply into a chronological stream and losing who replied to whom. | Treating presence as employee monitoring or audit evidence. |