Filtering
The V2 sidebar exposes its filter, sort, group, and search behavior declaratively through inputs. Filters and sorts are described as data; the sidebar renders the matching surfaces and applies the selections client-side viaapplyCommentSidebarClientFilters().
There are three filter surfaces, each driven by its own input:
filters— the Main Filter bottom-sheet/menu surface.miniFilters— a single header funnel dropdown.minimalFilters— multiple header dropdowns. When present, these replace the single funnel dropdown.
filters
- Define the Main Filter panel sections.
- Pass an array of
FilterFieldto define sections. Built-in fields are referenced byfieldid; custom fields usevaluePath. - When passed an object keyed by field (e.g.
{ status: ['open'] }) instead ofFilterField[], it is treated as a set of active filter selections and applied directly.
[]
- React / Next.js
- Other Frameworks
FilterField[] to apply active filter selections directly:
- React / Next.js
- Other Frameworks
miniFilters
- Render a single header funnel dropdown with one section per field.
[]
- React / Next.js
- Other Frameworks
minimalFilters
- Renders one or more dropdowns in the sidebar header (these replace the single
miniFiltersfunnel when present). - Each entry in the array creates one dropdown. The entry’s
typedecides what that dropdown contains, and the matching input (fields,sorts, oractions) provides its content.
[]
Filter-dropdown type scoping
type | The dropdown shows | Built from |
|---|---|---|
filter | Category checkbox sections (e.g. status, priority, assignee) | fields |
sort | Single-select sort options (e.g. by date or unread) | sorts |
quick | One-click filters (presets and/or path predicates) | actions |
actions | A combined menu: a sort group and a quick group separated by a divider | sorts + actions |
| (unset) | Default quick presets plus any configured sections | — |
{ path: 'from.userId', value: '1.1' } keeps comments authored by the user with id 1.1. The value is a literal (there is no @me token), and paths auto-flatten nested arrays (e.g. comments.taggedUserContacts.contact.userId).
Each dropdown is rendered by the filter-dropdown primitive (VeltCommentSidebarV2FilterDropdown / velt-comment-sidebar-filter-dropdown-v2).
The examples below show one dropdown per type.
filter — category checkboxes (built from fields):
- React / Next.js
- Other Frameworks
sort — sort options (built from sorts):
- React / Next.js
- Other Frameworks
quick — one-click filters (built from actions — presets and/or path predicates):
- React / Next.js
- Other Frameworks
conditions plus an operator:
- React / Next.js
- Other Frameworks
actions — combined sort + quick menu (built from sorts + actions, separated by a divider):
- React / Next.js
- Other Frameworks
- React / Next.js
- Other Frameworks
Prefer configuring dropdowns through
minimalFilters as shown above. If you need to place or restyle a dropdown directly in your own markup, you can set these same inputs on the filter-dropdown primitive — see Comment Sidebar V2 Primitives.defaultMinimalFilter
- Set the default active quick filter applied on load (one of the
minimalFiltersquick presets). - Type:
'all' | 'read' | 'unread' | 'resolved' | 'open' | 'assignedToMe' | 'reset'
- React / Next.js
- Other Frameworks
filterOperator
- Control how active selections across different filter sections combine.
- Options:
andoror
and
- React / Next.js
- Other Frameworks
filterPanelLayout
- Change the layout of the Main Filter panel.
- Options:
bottomSheetormenu
bottomSheet
- React / Next.js
- Other Frameworks
filterOptionLayout
- Change how options render within a filter section.
- Options:
dropdownorcheckbox
dropdown
- React / Next.js
- Other Frameworks
filterCount
- Show per-option facet counts. Disabling improves performance.
true
- React / Next.js
- Other Frameworks
systemFiltersOperator
- Specify whether system filters are combined with an
andororoperator.
and
- React / Next.js
- Other Frameworks
Using Props:Using API:
filterGhostCommentsInSidebar
- Filter out and hide ghost comments from the sidebar.
false
- React / Next.js
- Other Frameworks
Using Props:Using API:
excludeLocationIds
- Filter out comments from certain locations. These comments are not displayed in the sidebar.
[]
- React / Next.js
- Other Frameworks
Using Props:Using API:
customActions
- Enable custom actions in the sidebar so you can add your own wireframe-driven controls.
false
- React / Next.js
- Other Frameworks
Using Props:Using API:
applyCommentSidebarClientFilters
- Apply client-provided
CommentSidebarFiltersto a set of annotations, honoring the currentsystemFiltersOperator.
- React / Next.js
- Other Frameworks
Sorting
sortBy
- Set the default sort field. This sets the default sort, it does not render a sort dropdown.
- Type:
SortBy— a built-in preset (e.g.'date','unread') or a custom field key / dot-path (e.g.'comments.createdAt').
- React / Next.js
- Other Frameworks
sortOrder
- Set the default sort direction.
- Type:
SortOrder('asc' | 'desc')
- React / Next.js
- Other Frameworks
sortData
- Provide a custom-field sort path used when sorting by a custom field.
- React / Next.js
- Other Frameworks
Grouping
groupConfig
- Configure grouping in the sidebar. Grouping defaults to by-location when enabled.
- React / Next.js
- Other Frameworks
Navigation
onCommentClick
- Listen for click events on comments in the sidebar to trigger actions like navigation.
- The event callback provides access to the clicked comment’s annotation object, which includes
locationandcontextdata.
- React / Next.js
- Other Frameworks
onCommentNavigationButtonClick
- Triggered when the navigation button in the comment dialog in the sidebar is clicked.
- Use this event to implement custom navigation logic.
- React / Next.js
- Other Frameworks
urlNavigation
- Enable automatic URL navigation when clicking comments in the sidebar.
- By default, clicking a comment doesn’t update the page URL where the comment was added.
false
- React / Next.js
- Other Frameworks
Using Props:Using API:
enableUrlNavigation is a deprecated alias for urlNavigation. Prefer urlNavigation.queryParamsComments
- Sync the selected comment to URL query params.
false
- React / Next.js
- Other Frameworks
UI
pageMode
- Adds a composer in the sidebar where users can add comments without attaching them to any specific element.
false
- React / Next.js
- Other Frameworks
focusedThreadMode
- When you click a comment in the sidebar, it opens the thread in an expanded view within the sidebar itself.
- Other threads and actions like filters and search are hidden behind a back button.
- Enabling this mode also adds a navigation button in the comment dialog.
false
- React / Next.js
- Other Frameworks
openAnnotationInFocusMode
- When enabled, opens the comment dialog in focus mode when
focusedThreadModeis enabled and either the reply button is clicked or a comment is selected viaselectCommentByAnnotationId(). - Requires
focusedThreadModeto be enabled.
false
- React / Next.js
- Other Frameworks
readOnly
- Make comment dialogs in the sidebar read-only to prevent users from editing comments.
false
- React / Next.js
- Other Frameworks
embedMode
- Add the sidebar inline within your component; it takes up the full width and height of its container.
- In embed mode, the sidebar does not have a close button. Implement your own open/close on the host component.
null
- React / Next.js
- Other Frameworks
floatingMode
- Open the sidebar in an overlay panel that floats over the page content.
- If you use this mode, do not add the sidebar component to your app separately.
false
- React / Next.js
- Other Frameworks
position
- Change the side of the viewport the sidebar opens from.
- Options:
leftorright
right
- React / Next.js
- Other Frameworks
variant
- Set the layout variant of the sidebar.
sidebar
- React / Next.js
- Other Frameworks
dialogVariant
- Set the variant for the embedded comment dialog rendered in the list.
sidebar
- React / Next.js
- Other Frameworks
focusedThreadDialogVariant
- Set the variant for the focused-thread dialog.
sidebar
- React / Next.js
- Other Frameworks
pageModeComposerVariant
- Set the variant for the page-mode composer.
sidebar
- React / Next.js
- Other Frameworks
forceClose
- Force the sidebar to close on outside click, even when opened programmatically via API.
true
This does not affect embed mode sidebar.
- React / Next.js
- Other Frameworks
fullScreen
- Add a fullscreen toggle button to the header. In fullscreen mode the sidebar expands to fill the viewport.
- Observe state changes with the
onFullscreenClickevent.
false
- React / Next.js
- Other Frameworks
Using Props:Using API:
fullExpanded
- Render the sidebar fully expanded.
false
- React / Next.js
- Other Frameworks
shadowDom
- Render the sidebar body inside a shadow root for style isolation.
- Shadow-DOM isolation is enabled by default. Opt out by setting
shadow-dom="false"or callingdisableSidebarShadowDOM().
- React / Next.js
- Other Frameworks
currentLocationSuffix
- Adds a “(this page)” suffix to the group name when the current location matches the group’s location.
false
- React / Next.js
- Other Frameworks
dialogSelection
- When disabled, clicking a comment in the sidebar triggers a click event instead of opening the dialog inline.
true
- React / Next.js
- Other Frameworks
expandOnSelection
- Control whether comment dialogs automatically expand when selected in the sidebar.
true
- React / Next.js
- Other Frameworks
searchPlaceholder
- Customize the placeholder text shown in the search input of the sidebar.
Search comments
- React / Next.js
- Other Frameworks
commentPlaceholder
- Customize the placeholder text for the dialog composer (the comment input that appears in comment dialogs/threads).
- React / Next.js
- Other Frameworks
replyPlaceholder
- Customize the placeholder text for reply input fields in the sidebar.
- React / Next.js
- Other Frameworks
pageModePlaceholder
- Customize the placeholder text for the page-mode composer.
- React / Next.js
- Other Frameworks
editPlaceholder
- Customize the placeholder text shown when editing an existing comment or reply.
- Use
editCommentPlaceholderfor the first comment andeditReplyPlaceholderfor replies; both take precedence overeditPlaceholder.
- React / Next.js
- Other Frameworks
sidebarButtonCountType
- Change what the sidebar button count reflects.
default: total count of comments in open and in-progress states.filter: count of filtered comments.
- React / Next.js
- Other Frameworks
Using Props:Using API:
context
- Pass custom context data to page-mode composer comments in the sidebar. The provided context object is attached to any comment added via the page-mode composer.
null
- React / Next.js
- Other Frameworks
Virtual scrolling
- The V2 list uses virtual scrolling. Tune it with
measuredSize(estimated row size in px),minBufferPx, andmaxBufferPx.
measuredSize = 220, minBufferPx = 1000, maxBufferPx = 2000
- React / Next.js
- Other Frameworks
Events
onSidebarOpen
- Callback fired when the sidebar opens.
- React / Next.js
- Other Frameworks
onSidebarClose
- Callback fired when the sidebar closes.
- React / Next.js
- Other Frameworks
Sidebar controls
openCommentSidebar / closeCommentSidebar / toggleCommentSidebar
- Programmatically open, close, or toggle the sidebar.
- React / Next.js
- Other Frameworks
For V2 wireframe and primitive customization, see Comment Sidebar V2 Structure and Comment Sidebar V2 Primitives. The sidebar is shadow-DOM isolated by default.

