Back to compare picker

Threaded discussion vs Comments vs Feed vs Notification center vs Activity log vs Review queue vs Accordion vs Pagination

Use threaded discussion for a topic-centered conversation with reply branches and participation state, comments for object-attached notes, feed for stream consumption, and notification center for cross-object inbox triage.

Learn the decision

Match the interaction to the person's task

Use threaded discussion for a topic-centered conversation with reply branches and participation state, comments for object-attached notes, feed for stream consumption, and notification center for cross-object inbox triage.

Threaded discussion

Use it when: A topic or parent message can generate multiple reply branches that users need to follow over time.

Make this state clear: Parent topic or parent message with author, timestamp, title or body, category, and reply count.

Observe the result: 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.

Study the full pattern →

Comments

Use it when: Feedback must preserve author, timestamp, reply, resolution, assignment, or moderation context.

Make this state clear: Empty comment list and first-comment composer.

Observe the result: 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.

Study the full pattern →

Feed

Use it when: Users consume a continuing stream of updates, posts, stories, comments, media, or collaboration activity.

Make this state clear: Default feed with heading, order label, rendered item count or range, and article-like items.

Observe the result: A user pauses live updates, reads three older posts, sees 2 new updates waiting, then chooses Jump to latest when ready.

Study the full pattern →

Notification center

Use it when: Users receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders.

Make this state clear: Closed entry-point state with zero, new-unseen, and unread-but-seen counts.

Observe the result: Opening the notification drawer clears the new-notification badge while unread items remain available for later triage.

Study the full pattern →

Activity log

Use it when: Users need to inspect recorded user, admin, system, security, or integration events.

Make this state clear: Default log state with event records, result count, visible timezone, retention window, and permission scope.

Observe the result: 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.

Study the full pattern →

Review queue

Use it when: A team or individual repeatedly reviews many independently queued items.

Make this state clear: Queue loading and count state

Observe the result: 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.

Study the full pattern →

Accordion

Use it when: Section headings provide a useful overview and users can choose which details to inspect.

Make this state clear: All collapsed state with every section title visible.

Observe the result: A user opens Returns, then Warranty, scans both sections, collapses Returns, and the page keeps focus and open-state feedback stable.

Study the full pattern →

Pagination

Use it when: The collection has many ordered results.

Make this state clear: First page with disabled previous control.

Observe the result: Users move through pages while query, filters, and sort persist.

Study the full pattern →

Practice the judgment: Imagine this situation: A notification opens the topic top instead of the exact reply that mentioned or answered the user. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Threaded discussionCommentsFeedNotification centerActivity logReview queueAccordionPagination
UI or UX UI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controlsUI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderationUI + UX - Dynamic stream of article-like updates that may load or insert content at either endUI + UX - Durable user-opened notification history and action drawerUI + UX - Searchable and exportable record of system, user, or administrative eventsUI + UX - Actionable queue for triaging many items that need human reviewUI + UX - Grouped show-hide sections for related page contentUI + 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.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 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 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 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 Nested replies are indented until they become unreadable on mobile and the answer is hidden below collapsed context.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.Users ignore the center because duplicate low-value messages inflate the badge.An export button downloads a different date range and timezone than the on-screen filtered log.The most urgent or oldest item is buried by default sort.Collapsed rows look like navigation links, but clicking them only reveals hidden page text.Pagination jumps around as pages load or separates controls from the result list.
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 moderator marks an answer but the thread summary still shows unanswered because answer state is stored only on the visible reply card.A user writes a long comment, loses network connection, and the draft disappears when the page reloads.The feed jumps to the top whenever a new post arrives.Users mark all notifications read and lose the only record of an export job they still need to download.A user marks a notification read and the corresponding activity evidence disappears from the only log.A reviewer marks a pull request reviewed from an old queue row after the author pushed new commits and re-requested review.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.Feedback must preserve author, timestamp, reply, resolution, assignment, or moderation context.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.Section headings provide a useful overview and users can choose which details to inspect.The collection has many ordered results.
Avoid when The surface is a broad feed of independent posts or activity cards.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 stateAll 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.Announce new notification arrival with status semantics when appropriate, but avoid interrupting users repeatedly for low-priority center items.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.Using vague activity labels that omit actor, action, object, timestamp, or result.Treating review queue as approval workflow and hiding many-item workload controls.Hiding content users must read sequentially before completing a task.Using pagination for a tiny collection.

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
Nested replies are indented until they become unreadable on mobile and the answer is hidden below collapsed context.
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 moderator marks an answer but the thread summary still shows unanswered because answer state is stored only on the visible reply card.
Best fit
A topic or parent message can generate multiple reply branches that users need to follow over time.
Avoid when
The surface is a broad feed of independent posts or activity cards.
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.

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
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.
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
Feedback must preserve author, timestamp, reply, resolution, assignment, or moderation context.
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.

Feed

UI or UX
UI + UX - Dynamic stream of article-like updates that may load or insert content at either end
UI guidance
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.
UX guidance
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.
Good UI
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.
Bad UI
New posts appear above the current paragraph and shift the page while the user is reading.
Good UX
A user pauses live updates, reads three older posts, sees 2 new updates waiting, then chooses Jump to latest when ready.
Bad UX
The feed jumps to the top whenever a new post arrives.
Best fit
Users consume a continuing stream of updates, posts, stories, comments, media, or collaboration activity.
Avoid when
The content is a finite set of objects that users need to filter, sort, select, compare, or manage.
Required state
Default feed with heading, order label, rendered item count or range, and article-like items.
Accessibility burden
Give the feed a heading or accessible label and expose the current order or filter in text.
Common misuse
Calling any vertical card list a feed even when it is a bounded object collection.

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
Users ignore the center because duplicate low-value messages inflate the badge.
Good UX
Opening the notification drawer clears the new-notification badge while unread items remain available for later triage.
Bad UX
Users mark all notifications read and lose the only record of an export job they still need to download.
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
Announce new notification arrival with status semantics when appropriate, but avoid interrupting users repeatedly for low-priority center items.
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
An export button downloads a different date range and timezone than the on-screen filtered log.
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
Using vague activity labels that omit actor, action, object, timestamp, or result.

Review queue

UI or UX
UI + UX - Actionable queue for triaging many items that need human review
UI guidance
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.
UX guidance
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.
Good UI
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.
Bad UI
The most urgent or oldest item is buried by default sort.
Good UX
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.
Bad UX
A reviewer marks a pull request reviewed from an old queue row after the author pushed new commits and re-requested review.
Best fit
A team or individual repeatedly reviews many independently queued items.
Avoid when
The task is a single request moving through a governed approval route.
Required state
Queue loading and count state
Accessibility burden
Use labelled queue name, count, filters, sort, group, row status, selection, preview, and action controls.
Common misuse
Treating review queue as approval workflow and hiding many-item workload controls.

Accordion

UI or UX
UI + UX - Grouped show-hide sections for related page content
UI guidance
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.
UX guidance
Use an accordion when a page has several related sections that users may inspect selectively while still needing an overview of all section labels.
Good UI
A product policy page shows Shipping, Returns, Warranty, and Contact sections as heading buttons with clear expanded states and one open panel.
Bad UI
Collapsed rows look like navigation links, but clicking them only reveals hidden page text.
Good UX
A user opens Returns, then Warranty, scans both sections, collapses Returns, and the page keeps focus and open-state feedback stable.
Bad UX
A user misses eligibility requirements because the only required step is hidden inside a collapsed section by default.
Best fit
Section headings provide a useful overview and users can choose which details to inspect.
Avoid when
There is only one revealable section and a simpler details disclosure is enough.
Required state
All collapsed state with every section title visible.
Accessibility burden
Use native buttons for section controls and expose expanded or collapsed state.
Common misuse
Hiding content users must read sequentially before completing a task.

Pagination

UI or UX
UI + UX - Paged navigation control
UI guidance
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
Help users move through an ordered result set with a stable sense of position, progress, and returnability.
Good UI
Current page, previous/next, disabled edges, page numbers, result range, and total count are visually clear.
Bad UI
Pagination jumps around as pages load or separates controls from the result list.
Good UX
Users move through pages while query, filters, and sort persist.
Bad UX
Changing page resets filters.
Best fit
The collection has many ordered results.
Avoid when
Users need uninterrupted reading or comparison.
Required state
First page with disabled previous control.
Accessibility burden
Use a labeled navigation region.
Common misuse
Using pagination for a tiny collection.
Decision rules
  • Choose threaded discussion when the interface centers on a topic, post, question, or channel message that can collect replies, nested replies, answer marking, follow or mute state, unread reply counts, and branch-level navigation.
  • Choose comments when feedback is attached to a specific object, document selection, file line, record, or review target; comments may have replies, but the anchor and object state matter more than topic navigation.
  • Use feed when users consume many independent updates in a stream; a threaded discussion may appear as one feed item, but opening it should reveal parent context, replies, unread state, and participation controls.
  • Use notification center when thread activity needs a cross-object inbox with unread counts, retention, and preferences; notification items should deep-link to the exact thread or reply rather than become the thread UI.
  • Use activity log when entries must prove system events or audit history; discussion replies are authored conversation and should not be treated as immutable provenance.
  • Use review queue when many discussion threads require moderation, triage, assignment, or bulk decisions; an individual thread should expose local state but not replace queue operations.
  • Use accordion or disclosure for expanding static content sections; threaded discussion needs author, time, reply target, branch depth, unread, follow or mute, moderation, and pagination behavior.
  • Use pagination or load-more controls when a thread has many replies, but preserve the parent post, reply context, focused branch, and newly loaded boundary when moving through pages.
Inspect live examples
Failure modes
  • Replies are appended to a flat list with no parent context, so users cannot tell which message each reply answers.
  • Unread counts apply to the whole discussion but do not identify which branch or reply is new.
  • A notification opens the topic top instead of the exact reply that mentioned or answered the user.
  • Deep nesting pushes replies off screen on mobile without collapse, quote, or branch navigation.
  • A marked answer is hidden inside a collapsed branch and cannot be found from the topic summary.
  • Follow, mute, resolve, answer, and moderation actions affect the wrong thread because controls are not scoped to the parent discussion.

Saved items