| UI or UX | UI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controls | UI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderation | UI + UX - Dynamic stream of article-like updates that may load or insert content at either end | UI + UX - Durable user-opened notification history and action drawer | UI + UX - Searchable and exportable record of system, user, or administrative events | UI + UX - Actionable queue for triaging many items that need human review | UI + UX - Grouped show-hide sections for related page content | UI + UX - Paged navigation control |
| 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. | 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 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. | 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 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 each section title as a real button inside an appropriate heading, expose expanded or collapsed state, and connect the button to the panel it controls. | Render a labeled pagination nav near the affected results with current page, previous, next, nearby pages, optional first/last or ellipsis, and clear disabled edge states. |
| 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. | 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 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 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 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. | Use an accordion when a page has several related sections that users may inspect selectively while still needing an overview of all section labels. | Help users move through an ordered result set with a stable sense of position, progress, and returnability. |
| 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. | 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 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. | 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 support queue shows New triage, SLA at risk, owner, customer, status, priority, age, preview text, assignment, and next actions without opening every ticket. | A product policy page shows Shipping, Returns, Warranty, and Contact sections as heading buttons with clear expanded states and one open panel. | Current page, previous/next, disabled edges, page numbers, result range, and total count are visually clear. |
| Bad UI | All replies are rendered as identical flat messages with no indication of which parent or branch they answer. | A Notes textarea sits under a record and calls itself comments even though every user overwrites the same field. | New posts appear above the current paragraph and shift the page while the user is reading. | 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 review queue shows a flat list of titles with no reason, age, owner, status, priority, or action controls. | A page hides every required instruction behind plus icons with no headings, state, or expand-all route. | Tiny numbers with no current state. |
| 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. | 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 pauses live updates, reads three older posts, sees 2 new updates waiting, then chooses Jump to latest when ready. | 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 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 user opens Returns, then Warranty, scans both sections, collapses Returns, and the page keeps focus and open-state feedback stable. | Users move through pages while query, filters, and sort persist. |
| 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. | A user writes a long comment, loses network connection, and the draft disappears when the page reloads. | A feed keeps loading forever, hides the footer, and gives no way to resume from a saved position. | 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. | Two reviewers open the same unclaimed item, both act, and the second decision overwrites the first with no stale-row warning. | A user misses eligibility requirements because the only required step is hidden inside a collapsed section by default. | Changing page resets filters. |
| Best fit | A topic or parent message can generate multiple reply branches that users need to follow over time. | Users need object-attached discussion without changing the primary object content directly. | Users consume a continuing stream of updates, posts, stories, comments, media, or collaboration activity. | Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders. | Users need to inspect recorded user, admin, system, security, or integration events. | A team or individual repeatedly reviews many independently queued items. | A page has several related sections and users do not need all details visible at once. | The collection has many ordered results. |
| Avoid when | The feedback is a simple object-attached comment with no navigable topic discussion. | The user is simply entering a long answer into a form field. | The content is a finite set of objects that users need to filter, sort, select, compare, or manage. | 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 task is a single request moving through a governed approval route. | There is only one revealable section and a simpler details disclosure is enough. | Users need uninterrupted reading or comparison. |
| Required state | Parent topic or parent message with author, timestamp, title or body, category, and reply count. | Empty comment list and first-comment composer. | Default feed with heading, order label, rendered item count or range, and article-like items. | 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. | Queue loading and count state | All collapsed state with every section title visible. | First page with disabled previous control. |
| Accessibility burden | Label the thread region with the parent topic or message title. | Label the comments region with the object or selection being discussed. | Give the feed a heading or accessible label and expose the current order or filter in text. | 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. | Use labelled queue name, count, filters, sort, group, row status, selection, preview, and action controls. | Use native buttons for section controls and expose expanded or collapsed state. | Use a labeled navigation region. |
| Common misuse | Flattening every reply into a chronological stream and losing who replied to whom. | Using one shared Notes field as a comment system and overwriting prior contributors. | Calling any vertical card list a feed even when it is a bounded object collection. | 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 an ordinary table with no review reason, urgency, ownership, or decision actions. | Using divs or links as section toggles without button semantics or expanded state. | Using pagination for a tiny collection. |