My learning 0 of 20 lessons complete
Start lesson 1 →
Back to compare picker

Live cursors vs Presence vs Comments vs Mentions vs Threaded discussion vs Notification center vs Activity log vs Sync state vs Offline state vs Tooltip

Use live cursors for ephemeral real-time pointer or selection awareness, presence for availability, comments for durable object-attached discussion, and mentions for targeted attention inside authored content.

Learn the decision

Match the interaction to the person's task

Use live cursors for ephemeral real-time pointer or selection awareness, presence for availability, comments for durable object-attached discussion, and mentions for targeted attention inside authored content.

Live cursors

Use it when: Collaborators need real-time spatial awareness in a shared visual or text surface.

Make this state clear: Local pointer visible, local pointer hidden, remote pointer visible, remote pointer hidden, and reduced-cursor mode.

Observe the result: A presenter enables live pointers during a design review, follows Dana's cursor to a problem area, then hides extra cursors while editing text.

Study the full pattern →

Presence

Use it when: Users need to understand current or recent availability before messaging, calling, assigning, routing, or joining.

Make this state clear: Manual status, automatic status, status duration, status message, working-hours state, paused-notification state, and calendar-derived state.

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

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 →

Mentions

Use it when: Composed content needs to target people or groups inline.

Make this state clear: Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token.

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

Study the full pattern →

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 →

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 →

Sync state

Use it when: Local changes, files, messages, uploads, or records need to reconcile with a remote service or another device.

Make this state clear: Queued state for work waiting for a sync attempt.

Observe the result: A user reconnects after editing offline and sees the queue move from local saved to syncing, then to one failed photo with retry while the accepted notes remain synced.

Study the full pattern →

Offline state

Use it when: Connection loss or server reachability changes the user's current task.

Make this state clear: Offline banner or local status that names affected scope.

Observe the result: A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.

Study the full pattern →

Tooltip

Use it when: A compact control needs a brief supplemental explanation.

Make this state clear: Keyboard focus state where the tooltip appears and focus remains on the trigger.

Observe the result: Tabbing to Archive keeps focus on the button, shows a short description, Escape hides it, and focus remains on Archive.

Study the full pattern →

Practice the judgment: Imagine this situation: Every pointer movement triggers layout, notification, or history updates, turning ephemeral awareness into noise. 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 Live cursorsPresenceCommentsMentionsThreaded discussionNotification centerActivity logSync stateOffline stateTooltip
UI or UX UI + UX - Ephemeral collaborator pointer and selection awareness with identity, color, recency, privacy, visibility controls, and stale-state handlingUI + UX - Person or group availability signal with status label, recency, source, privacy boundary, and action-aware affordancesUI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderationUI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguardsUI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controlsUI + UX - Durable user-opened notification history and action drawerUI + UX - Searchable and exportable record of system, user, or administrative eventsUI + UX - Local-and-remote reconciliation statusUI + UX - Connectivity-mode and local-work continuity stateUI + UX - Short noninteractive description tied to a trigger
UI guidance Provide controls for showing or hiding the user's pointer, reducing other users' cursor noise, following a collaborator, pinning cursor chat, and distinguishing pointer, text cursor, selection range, viewport, and temporary cursor-attached message states.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.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.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.Show sync state close to the object or queue it describes, using labels such as Local saved, Queued, Syncing, Synced, Partially synced, Failed, Paused, and Conflict needs review.Show offline status where it changes the current task, naming what remains available such as cached reports, local draft editing, queued saves, or read-only history.Render a tooltip as a small text-only bubble visually tied to a focusable trigger, with concise copy, readable contrast, stable placement, and an optional arrow that points to the target.
UX guidance Use live cursors when collaborators need immediate spatial awareness of where other people are pointing, selecting, hovering, typing, or presenting in the same shared surface.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.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 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 sync state to keep users confident while local changes, remote copies, attachments, messages, or records reconcile across devices, services, or background workers.Use offline state to preserve trust and task continuity when connection loss changes what users can read, edit, submit, sync, refresh, or share.Help the person reach a clear task outcome.
Good UI A whiteboard shows Priya's pointer with a labelled color chip, Dana's text selection range, a stale cursor fading after reconnect loss, and a toggle to hide your pointer.A reviewer row shows Priya as Busy in a meeting until 14:30, disables Call, keeps Message available, and offers Notify when available.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 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 field report queue shows 5 local changes: notes synced, two photos uploading, meter reading queued, signature failed with Retry, and supervisor comment needs review.A field report says Offline: 3 edits saved on this device, cached customer history shown from 10:42, Submit disabled until connection returns, and Retry connection.A labelled Archive icon button receives focus and shows a short tooltip that says Moves this report to archived reports.
Bad UI Remote cursors are unlabeled colored arrows that overlap form controls and stay frozen after users leave.A stale active badge remains after the user has gone offline and the call button still looks primary.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.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.A single green Saved badge appears while several attachments are still queued.A blank page says You are offline even though the app has cached drafts and help content.The tooltip appears only on mouse hover.
Good UX A presenter enables live pointers during a design review, follows Dana's cursor to a problem area, then hides extra cursors while editing text.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.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.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 user reconnects after editing offline and sees the queue move from local saved to syncing, then to one failed photo with retry while the accepted notes remain synced.A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.Tabbing to Archive keeps focus on the button, shows a short description, Escape hides it, and focus remains on Archive.
Bad UX Cursor overlays are offset after zoom, scroll, pan, or resize.A manager treats Away as an attendance record even though it came from device inactivity and privacy-limited activity data.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.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.The offline banner disappears after reconnect, but hidden queued changes keep failing in the background.A submitted offline form disappears from the screen even though it was neither queued nor accepted by the server.A user presses Escape to hide the tooltip and focus jumps to the top of the page.
Best fit Collaborators need real-time spatial awareness in a shared visual or text surface.Users need to understand current or recent availability before messaging, calling, assigning, routing, or joining.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 receive multiple asynchronous updates across objects, jobs, collaborators, approvals, or reminders.Users need to inspect recorded user, admin, system, security, or integration events.Local changes, files, messages, uploads, or records need to reconcile with a remote service or another device.Connection loss or server reachability changes the user's current task.A compact control needs a brief supplemental explanation.
Avoid when The collaboration is asynchronous and durable comments or annotations would be more useful.The product needs a durable audit trail or compliance record.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 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.A confirmed failure blocks the whole view and needs a full error recovery surface.A single request failed while the rest of the app is reachable and an error state is clearer.The text is the only label or action name.
Required state Local pointer visible, local pointer hidden, remote pointer visible, remote pointer hidden, and reduced-cursor mode.Manual status, automatic status, status duration, status message, working-hours state, paused-notification state, and calendar-derived state.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.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.Queued state for work waiting for a sync attempt.Offline banner or local status that names affected scope.Keyboard focus state where the tooltip appears and focus remains on the trigger.
Accessibility burden Provide text labels for cursor owner, role, and state rather than color-only cursor identity.Announce meaningful presence changes only when they affect the current task or selected person.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 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.Expose sync summaries through polite status updates when state changes matter to the current task.Announce significant connectivity changes with status messaging when they affect the current task.Use tooltip text as a description with aria-describedby when it supplements the trigger.
Common misuse Using live cursors as durable comments, decision records, or audit history.Treating presence as employee monitoring or audit evidence.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 the badge count, unread count, and total notification count as one number.Using vague activity labels that omit actor, action, object, timestamp, or result.Calling local persistence Synced before remote acceptance.Showing only a browser-style offline page when useful cached or local content exists.Using hover-only tooltip text as the only label for an icon button.

Live cursors

UI or UX
UI + UX - Ephemeral collaborator pointer and selection awareness with identity, color, recency, privacy, visibility controls, and stale-state handling
UI guidance
Provide controls for showing or hiding the user's pointer, reducing other users' cursor noise, following a collaborator, pinning cursor chat, and distinguishing pointer, text cursor, selection range, viewport, and temporary cursor-attached message states.
UX guidance
Use live cursors when collaborators need immediate spatial awareness of where other people are pointing, selecting, hovering, typing, or presenting in the same shared surface.
Good UI
A whiteboard shows Priya's pointer with a labelled color chip, Dana's text selection range, a stale cursor fading after reconnect loss, and a toggle to hide your pointer.
Bad UI
Remote cursors are unlabeled colored arrows that overlap form controls and stay frozen after users leave.
Good UX
A presenter enables live pointers during a design review, follows Dana's cursor to a problem area, then hides extra cursors while editing text.
Bad UX
Cursor overlays are offset after zoom, scroll, pan, or resize.
Best fit
Collaborators need real-time spatial awareness in a shared visual or text surface.
Avoid when
The collaboration is asynchronous and durable comments or annotations would be more useful.
Required state
Local pointer visible, local pointer hidden, remote pointer visible, remote pointer hidden, and reduced-cursor mode.
Accessibility burden
Provide text labels for cursor owner, role, and state rather than color-only cursor identity.
Common misuse
Using live cursors as durable comments, decision records, or audit history.

Presence

UI or UX
UI + UX - Person or group availability signal with status label, recency, source, privacy boundary, and action-aware affordances
UI guidance
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
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 stale active badge remains after the user has gone offline and the call button still looks primary.
Good UX
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 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
Manual status, automatic status, status duration, status message, working-hours state, paused-notification state, and calendar-derived state.
Accessibility burden
Announce meaningful presence changes only when they affect the current task or selected person.
Common misuse
Treating presence as employee monitoring or audit 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
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.

Mentions

UI or UX
UI + UX - Inline recipient reference with autocomplete, stable recipient identity, notification routing, access checks, and broad-audience safeguards
UI guidance
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.
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
Mention chips break when copied, pasted, edited, localized, or rendered in plain-text fallbacks.
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 mention notification opens the record homepage rather than the exact comment sentence, forcing the recipient to search for why they were pulled in.
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
Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token.
Accessibility burden
Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.
Common misuse
Treating a mention suggestion list as a generic people picker and ignoring caret position, inline serialization, and notification side effects.

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.

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.

Sync state

UI or UX
UI + UX - Local-and-remote reconciliation status
UI guidance
Show sync state close to the object or queue it describes, using labels such as Local saved, Queued, Syncing, Synced, Partially synced, Failed, Paused, and Conflict needs review.
UX guidance
Use sync state to keep users confident while local changes, remote copies, attachments, messages, or records reconcile across devices, services, or background workers.
Good UI
A field report queue shows 5 local changes: notes synced, two photos uploading, meter reading queued, signature failed with Retry, and supervisor comment needs review.
Bad UI
A single green Saved badge appears while several attachments are still queued.
Good UX
A user reconnects after editing offline and sees the queue move from local saved to syncing, then to one failed photo with retry while the accepted notes remain synced.
Bad UX
The offline banner disappears after reconnect, but hidden queued changes keep failing in the background.
Best fit
Local changes, files, messages, uploads, or records need to reconcile with a remote service or another device.
Avoid when
A confirmed failure blocks the whole view and needs a full error recovery surface.
Required state
Queued state for work waiting for a sync attempt.
Accessibility burden
Expose sync summaries through polite status updates when state changes matter to the current task.
Common misuse
Calling local persistence Synced before remote acceptance.

Offline state

UI or UX
UI + UX - Connectivity-mode and local-work continuity state
UI guidance
Show offline status where it changes the current task, naming what remains available such as cached reports, local draft editing, queued saves, or read-only history.
UX guidance
Use offline state to preserve trust and task continuity when connection loss changes what users can read, edit, submit, sync, refresh, or share.
Good UI
A field report says Offline: 3 edits saved on this device, cached customer history shown from 10:42, Submit disabled until connection returns, and Retry connection.
Bad UI
A blank page says You are offline even though the app has cached drafts and help content.
Good UX
A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.
Bad UX
A submitted offline form disappears from the screen even though it was neither queued nor accepted by the server.
Best fit
Connection loss or server reachability changes the user's current task.
Avoid when
A single request failed while the rest of the app is reachable and an error state is clearer.
Required state
Offline banner or local status that names affected scope.
Accessibility burden
Announce significant connectivity changes with status messaging when they affect the current task.
Common misuse
Showing only a browser-style offline page when useful cached or local content exists.

Tooltip

UI or UX
UI + UX - Short noninteractive description tied to a trigger
UI guidance
Render a tooltip as a small text-only bubble visually tied to a focusable trigger, with concise copy, readable contrast, stable placement, and an optional arrow that points to the target.
UX guidance
Help the person reach a clear task outcome.
Good UI
A labelled Archive icon button receives focus and shows a short tooltip that says Moves this report to archived reports.
Bad UI
The tooltip appears only on mouse hover.
Good UX
Tabbing to Archive keeps focus on the button, shows a short description, Escape hides it, and focus remains on Archive.
Bad UX
A user presses Escape to hide the tooltip and focus jumps to the top of the page.
Best fit
A compact control needs a brief supplemental explanation.
Avoid when
The text is the only label or action name.
Required state
Keyboard focus state where the tooltip appears and focus remains on the trigger.
Accessibility burden
Use tooltip text as a description with aria-describedby when it supplements the trigger.
Common misuse
Using hover-only tooltip text as the only label for an icon button.
Decision rules
  • Choose live cursors when collaborators need to see where other people are pointing, selecting, hovering, typing, or focused in the same document, canvas, slide, diagram, whiteboard, code editor, or design file right now.
  • Choose presence when the question is whether a person is available, away, busy, offline, unknown, viewing, or recently active; presence can feed live cursors, but it does not show exact pointer or selection location.
  • Choose comments when feedback must persist on a specific object, region, line, or selection with author, timestamp, reply, resolve, edit, and moderation state; live cursors disappear when the collaboration session ends.
  • Choose mentions when a user needs to call someone's attention inside a message, comment, task, or document; mentions may bring someone into a shared surface, but they are not a pointer stream.
  • Choose threaded discussion when the work is a topic conversation with branches, unread state, answer marking, follow, or mute behavior; live cursors may show who is reading the topic but should not carry discussion state.
  • Use notification center when cursor-related activity needs retained inbox behavior such as someone requesting attention or following a pointer session; raw cursor movement should not become notification history.
  • Use activity log when the product must record a durable event such as a shared session start, annotation creation, or handoff; cursor coordinates and hover paths are ephemeral awareness data unless explicitly captured.
  • Use sync state when cursor positions are delayed, disconnected, stale, or reconnecting; show cursor freshness separately from document-save state so users do not mistake lag for content loss.
  • Use offline state when the current user cannot send or receive live cursor updates; hide or mark remote cursors stale instead of freezing them as if live.
  • Use tooltip for static contextual help; cursor labels, pointer names, and cursor chat are transient collaborator signals and need identity, color, recency, and privacy behavior.
Inspect live examples
Failure modes
  • Remote cursors stay visible after collaborators disconnect and the UI gives no stale or last-seen state.
  • Every pointer movement triggers layout, notification, or history updates, turning ephemeral awareness into noise.
  • Cursor labels rely only on color, so users cannot identify people with low vision or many collaborators.
  • A user cannot hide their own pointer or reduce other users' cursors during focused work or presenting.
  • Cursor chat is treated as durable feedback even though the message is temporary and not attached to an object or timeline.
  • A live cursor on a private object reveals hidden position, selection, or viewing behavior across a permission boundary.

Saved items