UI + UX Collaboration And Social Interaction established

Threaded discussion

Provide a thread surface with persistent parent context, reply targets, branch depth, unread and last-read state, follow or mute controls, answer or resolution state, scoped moderation, pagination or load-more behavior, and direct links to specific replies.

Decision first

Choose this pattern when the problem matches

Use when

  • A topic or parent message can generate multiple reply branches that users need to follow over time.
  • Users need per-thread follow, mute, unread, answer, or resolved state.
  • Notifications, search results, or copied links must return users to a specific reply and branch.
  • The conversation benefits from local reply context rather than interrupting a broader channel or feed.

Avoid when

  • The feedback is a simple object-attached comment with no navigable topic discussion.
  • The surface is a broad feed of independent posts or activity cards.
  • The entries are immutable system events or audit records.
  • The product cannot preserve parent reply relationships, notification targets, unread state, or mobile-readable branch context.

Problem it prevents

Topic conversations become hard to follow when replies flatten into one stream, parent context disappears, notification links lose position, branch depth breaks mobile reading, or answer and unread state are not tied to the right reply branch.

Pattern anatomy

What a strong implementation has to make clear

User need

Users are discussing one topic, question, announcement, channel message, support issue, forum post, design proposal, or community thread.

Pattern promise

Provide a thread surface with persistent parent context, reply targets, branch depth, unread and last-read state, follow or mute controls, answer or resolution state, scoped moderation, pagination or load-more behavior, and direct links to specific replies.

Required state

Parent topic or parent message with author, timestamp, title or body, category, and reply count.

Recovery path

A direct link opens the parent topic but not the targeted reply.

Access contract

Label the thread region with the parent topic or message title.

Quality bar

The difference between expert and weak execution

Strong implementation

Specific, visible, recoverable

  • 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 channel message opens a side thread with parent message pinned at the top, reply composer at the bottom, and a checkbox to also share the reply back to the main channel.
  • 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 loads older replies, collapses an off-topic branch, follows only the current thread, and returns later to the exact last-read reply.
Weak implementation

Vague, hidden, hard to recover from

  • All replies are rendered as identical flat messages with no indication of which parent or branch they answer.
  • Nested replies are indented until they become unreadable on mobile and the answer is hidden below collapsed context.
  • A user clicks New reply and lands at the top of a long topic with no highlight, branch context, or last-read position.
  • A moderator marks an answer but the thread summary still shows unanswered because answer state is stored only on the visible reply card.
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.
  • Show participation controls such as reply, follow, mute, mark read, mark answer, copy thread link, collapse branch, load replies, and moderation as controls scoped to the thread or branch they affect.
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 parent context, reply target, branch position, unread counts, answer state, pagination boundary, and notification return point across route changes, loading, moderation, and mobile layout.
Implementation contract

What the implementation must handle

States

  • Parent topic or parent message with author, timestamp, title or body, category, and reply count.
  • Top-level reply, nested reply, quoted parent snippet, and collapsed branch states.
  • Unread reply, last-read marker, followed, muted, mentioned, and notification-deep-linked reply states.
  • Reply composer, draft reply, saving reply, failed reply, retry, and recovered draft states.

Interaction

  • Starting a reply records the exact parent topic or parent reply being answered and shows that target while composing.
  • Submitting a reply appends it to the correct branch, updates reply count, unread state, subscribed state, and any notification or broadcast behavior.
  • Following or muting a thread changes notifications for that thread without changing channel, feed, or global notification preferences by accident.
  • Marking an answer or resolving a branch updates the thread summary and keeps the marked reply findable when the branch is collapsed or paginated.

Accessibility

  • Label the thread region with the parent topic or message title.
  • Expose reply hierarchy with headings, list structure, quoted parent snippets, or accessible labels rather than visual indentation alone.
  • Name reply controls with the author or branch they affect, such as Reply to Dana or Mark Maya's reply as answer.
  • Announce newly loaded replies, unread markers, answer changes, follow or mute changes, and moderation outcomes.

Review

  • What parent topic or message owns this thread?
  • Can users tell which reply each nested reply is answering?
  • What happens when a notification points to a reply that is collapsed, hidden, paginated, or deleted?
  • How do follow, mute, mention, unread, and last-read states interact?
Interactive lab

Inspect the states before you copy the pattern

Follow a branched topic discussion

Open a parent topic, reply to a branch, follow and mute the thread, mark unread branches read, mark a nested reply as answer, deep-link to a reply, load older replies, collapse a branch, and compare flat-replies, lost-parent, hidden-answer, unread-whole-thread, deep-indent, and wrong-thread-action failures.

Threaded discussion
Interactive demo is ready

Launch the live UI/UX lab when you want to inspect states, keyboard behavior, and common failure modes.

State To Inspect

Parent topic or parent message with author, timestamp, title or body, category, and reply count.

Keyboard / Access

Tab reaches the parent topic actions, top-level replies, nested branch controls, reply composer, load controls, and follow or mute controls in logical order.

Avoid Generating

Flattening every reply into a chronological stream and losing who replied to whom.

Evidence trail

Source-backed claims behind this guidance

Slack supports organized discussions around specific messages, thread replies, optional broadcast back to channel or DM, thread windows, notification controls, all-thread views, unread ordering, reactions, save, and open-in-channel behavior.

GitHub Docs: Participating in a discussion

GitHub Docs - checked

GitHub Discussions supports original-topic comments, threaded replies to individual comments, reactions, upvotes, discussion creation, answer marking, threaded-comment answer marking, and unmarking answers.

Slack Developer Docs: conversations.replies

Slack Developer Docs - checked

Slack API supports thread message retrieval with parent timestamp, parent user id, reply count, subscribed state, last-read and unread counts, cursor pagination, has_more, and access errors.

Full agent/debug reference

Problem Context

  • Users are discussing one topic, question, announcement, channel message, support issue, forum post, design proposal, or community thread.
  • Replies may be top-level, nested under another reply, marked as an answer, collapsed, hidden, moderated, unread, followed, muted, paginated, or broadcast back to a main channel.
  • The same activity may also appear in feeds or notifications, but the discussion surface owns the parent topic, branch context, reply relationships, and participation state.
  • The conversation may continue over hours or days and users may return through unread lists, direct reply links, search, or notification center.

Selection Rules

  • Choose threaded discussion when the core unit is a topic or parent message with replies that need branch context and participation state.
  • Use comments when feedback is anchored to a specific object, selection, file line, record, or task rather than a navigable topic conversation.
  • Use feed when users primarily browse a stream of many independent posts, not one open discussion with reply hierarchy.
  • Use notification center when users need cross-object unread triage, retention, and preference controls rather than the thread's full reply context.
  • Use activity log when entries are system facts or audit events, not authored replies that can branch, react, or be marked as answers.
  • Use review queue when many threads need moderation, assignment, bulk triage, or SLA processing.
  • Avoid deep visual indentation beyond a readable mobile depth; switch to branch cards, quoted parent snippets, or collapse controls.
  • Keep answer, resolved, unread, followed, muted, and hidden states attached to the exact branch or reply they describe.

Required States

  • Parent topic or parent message with author, timestamp, title or body, category, and reply count.
  • Top-level reply, nested reply, quoted parent snippet, and collapsed branch states.
  • Unread reply, last-read marker, followed, muted, mentioned, and notification-deep-linked reply states.
  • Reply composer, draft reply, saving reply, failed reply, retry, and recovered draft states.
  • Accepted answer, unmarked answer, resolved branch, reopened branch, hidden or moderated reply, and deleted reply states.
  • Load newer, load older, has more replies, empty branch, access-limited branch, and outdated or moved parent states.
  • Mobile stacked state where parent context and reply target remain visible without excessive indentation.
  • Direct-linked reply state that scrolls and focuses the target while keeping parent topic context visible.

Interaction Contract

  • Starting a reply records the exact parent topic or parent reply being answered and shows that target while composing.
  • Submitting a reply appends it to the correct branch, updates reply count, unread state, subscribed state, and any notification or broadcast behavior.
  • Following or muting a thread changes notifications for that thread without changing channel, feed, or global notification preferences by accident.
  • Marking an answer or resolving a branch updates the thread summary and keeps the marked reply findable when the branch is collapsed or paginated.
  • Direct links, unread lists, and notifications open the exact reply or branch, highlight it, and preserve parent context.
  • Loading more replies preserves the user's position and announces the new reply boundary rather than shifting focus unexpectedly.
  • Moderation actions such as hide, delete, lock, or report remain scoped to the selected reply or branch and leave appropriate reason or history evidence.

Implementation Checklist

  • Model parent discussion, reply id, parent reply id, branch path, author, timestamp, body, answer state, unread state, subscription state, moderation state, and pagination cursor separately.
  • Design parent context, reply cards, nested branch affordance, composer target, branch collapse, load controls, and last-read marker before adding reactions or badges.
  • Provide follow, mute, mark read, reply, quote, mark answer, copy link, collapse, load more, report, hide, delete, and lock behavior only where product rules support them.
  • Preserve drafts, scroll position, focused branch, and reply target across reload, route return, failed save, offline retry, and permission changes.
  • Keep mobile layouts readable by limiting visual indentation and using quoted parent context or branch headers for deep replies.
  • Test direct links, unread return, answer marking, collapsed branches, pagination, hidden replies, deleted parent replies, permission-limited threads, and long nested conversations.

Common Generated-UI Mistakes

  • Flattening every reply into a chronological stream and losing who replied to whom.
  • Using a threaded discussion for simple object comments where the anchor matters more than topic navigation.
  • Letting nested indentation consume the viewport on mobile.
  • Showing unread count for the whole thread without identifying which branch changed.
  • Hiding accepted answers, resolved replies, or moderation state inside collapsed branches.
  • Broadcasting every thread reply back to a main channel and recreating the noise threading was meant to reduce.
  • Using feed ranking inside a thread so reply order and branch context become unpredictable.
  • Treating a thread as an audit log and allowing edited or deleted replies to erase decision evidence.

Critique Questions

  • What parent topic or message owns this thread?
  • Can users tell which reply each nested reply is answering?
  • What happens when a notification points to a reply that is collapsed, hidden, paginated, or deleted?
  • How do follow, mute, mention, unread, and last-read states interact?
  • Can answer, resolved, hidden, or deleted state be found from the thread summary?
  • Does the mobile layout preserve branch context without deep indentation?
Accessibility
  • Label the thread region with the parent topic or message title.
  • Expose reply hierarchy with headings, list structure, quoted parent snippets, or accessible labels rather than visual indentation alone.
  • Name reply controls with the author or branch they affect, such as Reply to Dana or Mark Maya's reply as answer.
  • Announce newly loaded replies, unread markers, answer changes, follow or mute changes, and moderation outcomes.
  • Keep collapsed branches, hidden replies, load-more controls, and direct-linked replies reachable by keyboard and screen reader.
  • Avoid relying only on color or indentation to communicate nesting, unread state, answer state, or moderation state.
Keyboard Behavior
  • Tab reaches the parent topic actions, top-level replies, nested branch controls, reply composer, load controls, and follow or mute controls in logical order.
  • Reply opens a composer associated with the selected parent reply and places focus in the composer without losing the quoted target.
  • Escape closes transient menus or branch previews without discarding a draft unless the user confirms.
  • After submitting, focus moves to the new reply or a status message that names the branch updated.
  • Direct-linked replies receive focus or a visible highlight after loading, even when older replies must be fetched first.
  • Collapsed branches and pagination controls are keyboard reachable and announce how many replies they reveal.
Variants
  • Channel message thread
  • Forum discussion thread
  • Q&A answer thread
  • Nested reply thread
  • Moderated discussion thread
  • Followed thread inbox
  • Resolved discussion thread
  • Announcement thread
  • Paginated long thread

Verification

Last verified: