Skip to main content
Source of truth: exhaustive for what it covers. Generated from Velt customization metadata. If a name isn’t on this page, it doesn’t exist: don’t use it. Never invent or guess a name; use only identifiers that appear verbatim here or that you verified against ground truth and added here. Scope: exhaustive for the comments + notifications + core default-state flags, the provider config object’s customizer-critical keys, and the UI-affecting component flag-props. Out-of-scope features (recorder internals, huddle, video-editor, view-analytics, follow/live-state) appear only where they share a <VeltComments>/provider flag.
If your design shows a component/feature that doesn’t appear out of the box, it is often off by default. Check here first: most features just need one prop (or an imperative enable…() call). Don’t rebuild something Velt already has. How to read:
  • Default = the SDK’s built-in state before you touch anything.
  • Enable via = the exact React prop (on which component) and/or the imperative element method.
  • React props have no defaults of their own. A prop you omit falls through to the SDK default below. So “OFF by default” features need you to pass the prop or call the method; “ON by default” features are turned off with ={false}.

The two you asked about

FeatureDefaultEnable via
Reply avatars (stacked reply-author avatars on the dialog)OFFreplyAvatars on <VeltComments> · or commentElement.enableReplyAvatars(). Cap with maxReplyAvatars / setMaxReplyAvatars().
Sidebar button on the comment dialogOFFsidebarButtonOnCommentDialog on <VeltComments> · or commentElement.enableSidebarButtonOnCommentDialog(). Click event: onSidebarButtonOnCommentDialogClick. Use the prop sidebarButtonOnCommentDialog; sidebarButtonOnCommentDialogVisible is the internal name, not a prop.

<VeltComments>: OFF by default (pass the prop / call enable to show)

FeatureReact propImperative
Priority fieldpriorityenablePriority() (custom via customPriority / setCustomPriority())
Visibility (private/team) optionsvisibilityOptionsenableVisibilityOptions()
Private commentsprivateCommentMode (deprecated)enablePrivateMode(config)
Reply avatarsreplyAvatarsenableReplyAvatars()
Sidebar button on dialogsidebarButtonOnCommentDialogenableSidebarButtonOnCommentDialog()
Device info on pinsdeviceInfoenableDeviceInfo() (same flag as enableDeviceIndicatorOnCommentPins())
Minimapminimap (+ minimapPosition)enableMinimap()
Ghost commentsghostCommentsenableGhostComments() (≠ ghost-comment indicator, which is ON)
Collapsed commentscollapsedCommentsenableCollapsedComments()
Collapsed replies previewcollapsedRepliesPreviewenableCollapsedRepliesPreview()
Persistent comment modepersistentCommentModeenablePersistentCommentMode()
Paginated contact listpaginatedContactListenablePaginatedContactList()
Auto-categorizeautoCategorizeenableAutoCategorize()
Moderator modemoderatorModeenableModeratorMode()
Format options (rich-text toolbar)formatOptionsenableFormatOptions() (config: setFormatConfig())
Popover modepopoverModeenablePopoverMode()
Multi-threadmultiThreadenableMultiThread()
Group matched commentsNoneenableGroupMatchedComments()
Screenshot capturescreenshotenableScreenshot()
Enter key to submitenterKeyToSubmitenableEnterKeyToSubmit()
Comment index numberingcommentIndexenableCommentIndex()
Bubble on pinbubbleOnPinenableBubbleOnPin() (bubble-on-pin-hover is ON)
Dialog on target-element clickdialogOnTargetElementClickenableDialogOnTargetElementClick()
Inbox modeinboxModeenableInboxMode()
Stream modestreamModeenableStreamMode()
Sign-in buttonsignInButtonenableSignInButton()
Upgrade buttonupgradeButtonenableUpgradeButton()
HotkeyhotkeyenableHotkey()
Comment pin highlightercommentPinHighlighterenableCommentPinHighlighter()
Read-onlyreadOnlyenableReadOnly()
Dark mode (container)darkModeenableDarkMode() (sub-area: dialogDarkMode, pinDarkMode, …)
Context in page-mode composercontextInPageModeComposer (on <VeltCommentTool>)enableContextInPageModeComposer(): see Context
@here mentionatHereEnabledcontactElement.enableAtHere() (+ setAtHereLabel/setAtHereDescription)
Add-comment / comment modeNoneenableAddCommentMode() (alias enableCommentMode())
Change detection in comment modechangeDetectionInCommentModeenableChangeDetectionInCommentMode()
Comment to nearest allowed elementcommentToNearestAllowedElementenableCommentToNearestAllowedElement()
Custom autocomplete searchcustomAutocompleteSearchenableCustomAutocompleteSearch()
Delete-reply confirmationdeleteReplyConfirmationenableDeleteReplyConfirmation()
Filter comments on DOMfilterCommentsOnDomenableFilterCommentsOnDom()
Filter ghost comments in sidebarfilterGhostCommentsInSidebar (on <VeltCommentsSidebar>)enableFilterGhostCommentsInSidebar()
Force-close all on EscforceCloseAllOnEscenableForceCloseAllOnEsc()
Full-expanded dialogfullExpandedenableFullExpanded()
Full-screen in sidebar(sidebar prop is fullScreen)enableFullScreenInSidebar()
Inline comment modeinlineCommentModeenableInlineCommentMode()
Link callbacklinkCallbackenableLinkCallback()
Query-params commentsqueryParamsComments (on <VeltCommentsSidebar>)enableQueryParamsComments()
Resolve status: admin onlyresolveStatusAccessAdminOnlyenableResolveStatusAccessAdminOnly()
Sidebar custom actions(sidebar prop is customActions)enableSidebarCustomActions()
Sidebar URL navigation(sidebar prop is urlNavigation)enableSidebarUrlNavigation()
Suggestion modesuggestionModeenableSuggestionMode()
SVG as <img> (screenshot)svgAsImgenableSvgAsImg()

<VeltComments>: ON by default (turn off with ={false})

reactions, attachments, attachmentDownload, status, userMentions, seenByUsers, resolve button (enableResolve), scrollToComment, dialogOnHover, floatingCommentDialog, commentTool, textMode (the prop is textMode, not textComments: textComments does not exist), deleteOnBackspace, areaComment, bubbleOnPinHover, pinDrag, ghost-comment indicator, and the shadow-DOM flags: <VeltComments> exposes shadowDom/pinShadowDom/dialogShadowDom (no sidebarShadowDom here); <VeltCommentsSidebar> uses shadowDom; sidebarShadowDom lives on the sidebar-button components. These are also ON by default: turn off with ={false} (or the imperative disable…()): anonymousEmail (enableAnonymousEmail()), draftMode (enableDraftMode()), floating comments (enableFloatingComments(): sidebar prop is floatingMode), ghostCommentsMessage (enableGhostCommentsMessage()), mobileMode (enableMobileMode()), popoverTriangleComponent (enablePopoverTriangleComponent()), recordingSummary (enableRecordingSummary(), deprecated alias of recording transcription), shortUserName (enableShortUserName()).
recordings is a CSV string, not a boolean. Default = all on (audio,video,screen); set recordings="none" to disable, or e.g. recordings="audio,screen". (Also setRecordings().)

Other components

<VeltPresence>: self (include self in the presence list) is ON (disable with self={false}; imperative presenceElement.enableSelf() / disableSelf(): backed by the service’s includeSelf). Flock/follow mode is OFFflockMode / presenceElement.enableFlockMode(). <VeltCursor>: avatar-mode cursors OFFavatarMode (no imperative pair). <VeltReactionTool>: dark mode OFFreactionElement.enableDarkMode() (no React prop on the reaction tool). Notifications (<VeltNotificationsTool>/Panel): settings UI OFFsettings / enableSettings(); org-level settings OFFenableSettingsAtOrganizationLevel (imperative enableSettingsAtOrganizationLevel(), backed by the service’s enableSettingsConfigByOrganization); self notifications OFFselfNotifications / enableSelfNotifications(); read-on-ForYou OFFreadNotificationsOnForYouTab / enableReadNotificationsOnForYouTab(); cross-org feed OFFenableCrossOrganization / notificationElement.enableCrossOrganization().

Imperative-only gates (no React prop: call element.enable…())

  • Recorder: video editor OFFrecorderElement.enableVideoEditor(); also enableOnboardingTooltip(), enableRetakeOnVideoEditor(), enablePictureInPicture(). Countdown/transcription/playback-on-preview are ON (disableRecordingCountdown(), disableRecordingTranscription(), disablePlaybackOnPreviewClick()). (Recorder dark mode + mic are tri-state null: neither on nor off until set: enableDarkMode()/disableDarkMode(), enableRecordingMic()/disableRecordingMic().)
  • Notifications: current-document-only scope OFFnotificationElement.enableCurrentDocumentOnly().

Provider config object (<VeltProvider config={…}>)

The provider’s config object governs the whole SDK before any component renders: the single biggest lever for a customizer. Keys below are verified against the Config type. All are optional.
KeyTypeDefaultWhat it does
featureAllowListFeatureType[]all features onAllow-list of features/components that may run. If set, only the listed features render: everything else is suppressed before the UI renders. Use to ship comments-only or notifications-only.
globalStylesbooleantrueWhether Velt’s global stylesheet loads at all. Set false for fully bespoke styling (you then own all CSS).
usePrefersColorSchemebooleanNoneWhen true, Velt follows the OS prefers-color-scheme media query to pick light/dark globally.
debugModebooleanNoneEnables debug logging (applies after a page refresh).
proxyConfigProxyConfigNoneRoutes SDK traffic through reverse proxies. Sub-fields: cdnHost, apiHost, v2DbHost, v1DbHost, storageHost, authHost (all string), forceLongPolling (boolean).
urlAllowListstring[]NoneRestrict Velt to specific page URLs.
userPlanAllowListstring[]NoneRestrict Velt to specific user plans.
userIdAllowListstring[]NoneRestrict Velt to specific user IDs.
userGroupIdAllowListstring[]NoneRestrict Velt to specific group/team IDs.
advancedQueriesDisabledbooleanNoneToggle advanced queries off.
apiProxyDomainstringNoneDeprecated: use proxyConfig.apiHost.
Absence: Config has no top-level theme, css, or darkMode key. Theming at the provider level is usePrefersColorScheme; stylesheet loading is globalStyles; darkMode is a per-component prop only.

UI-affecting component flag-props (layout / variant / placeholders)

Beyond on/off feature flags, these props change a component’s layout, variant, or copy. Verified verbatim on the React components. <VeltCommentsSidebar>
PropTypeWhat it does
position'right' | 'left'Which side the sidebar docks to.
embedModestringEmbed the sidebar inline vs floating.
variantstringNamed visual variant of the sidebar.
filterPanelLayout'menu' | 'bottomSheet'Layout of the filter panel.
filterOptionLayout'checkbox' | 'dropdown'Layout of individual filter options.
placeholdersstring eachpageModePlaceholder, searchPlaceholder, commentPlaceholder, replyPlaceholder, editPlaceholder, editCommentPlaceholder, editReplyPlaceholder (individual props: there is no single placeholders object).
Notifications (<VeltNotificationsPanel> / <VeltNotificationsTool>)
PropTypeWhat it does
panelOpenModeNotificationPanelMode (panel) / 'popover' | 'sidebar' (tool)How the panel opens.
tabConfigNotificationTabConfigConfigure which notification tabs show.
settingsLayoutNotificationSettingsLayoutLayout of the settings screen.
variantstringNamed visual variant. (Tool-only: panelVariant, panelShadowDom.)
<VeltComments>
PropTypeWhat it does
composerMode'default' | 'expanded'Comment composer display mode.
unreadIndicatorMode'minimal' | 'verbose'Style of the unread indicator.
customStatusobjectCustom comment statuses. (Singular: customStatuses does not exist.)
customReactionsReactionMapCustom reaction set.
placeholdersstring eachcommentPlaceholder, replyPlaceholder, editPlaceholder, editCommentPlaceholder, editReplyPlaceholder (individual props).
shadow-DOM scopesboolean eachshadowDom, pinShadowDom, dialogShadowDom.

How to use this when matching a design

  1. The design shows something not visible by default (priority chip, reply avatars, minimap, @here, device badge, …)? Find it above → pass the prop / call enable.
  2. The design omits something Velt shows by default (reactions, status, attachments)? Turn it off with ={false}: don’t display:none it (R7).
  3. Then style/restructure it with CSS / wireframes / primitives as usual.
Defaults verified against the SDK’s feature services. A few advanced enable…() methods exist whose default is not documented here. If a feature isn’t listed, call the matching enable<Feature>() on the relevant element and confirm by testing.