Changelog
New Features
- [Recorder]: Added a feature to download the latest version of a recording.
-
It’s available in the UI by default. Wireframe added.
-
Added an API method to trigger download programmatically:
-
Improvements
- [Recorder]: Changed the background of removed video segments to a diagonal stripe pattern to clearly indicate removal (instead of waveform/thumbnails).
- [Recorder]: Added a center focal point to the zoom selection rectangle for better UX.
- [Recorder]: Added Edit button Wireframe in the recorder player.
Bug Fixes
- [Recorder]: Implemented several UX fixes for the video editor:
- Maintained correct aspect ratio for the zoom selection rectangle during resizing.
- Ensured the zoom selection rectangle maintains its original position while resizing with aspect ratio locked.
- Ensured video preview displays correct content at responsive widths.
- Prevented the zoom selection rectangle from moving outside the video content area.
- Corrected corner dragging behavior to ensure the zoom selection stays within boundaries.
- Fixed an issue where a small zoom selection at the boundary would go out of bounds when decreasing scale.
- Updated
recorderTime.duration
logic to store precise millisecond values. - Resolved an issue where dragging the trim/scale handler during video playback affected both operations simultaneously.
- Reduced the drag threshold for improved responsiveness of drag operations.
- [Recorder]: Fixed an issue where playback on the mini video player would not stop when the video player was expanded.
Bug Fixes
- [Comments]: Fixed an issue where folderId was getting unset when switching between documents too quickly.
Improvements
- [Comments]: Render default comment sidebar only when it is opened. Note this is not applicable for sidebar in embed mode.
- [Comments]: Added a dynamic class for unread comment annotation in comment pin component:
velt-comment-pin-unread-comment
.
New Features
- [Presence]: Added event to track changes in user’s presence state:
online
,offline
,away
.
Using Hook:
Using API:
Using Hook:
Using API:
- [Presence]: Added api and hook to fetch presence data with query filters.
Using Hook:
Using API:
Using Hook:
Using API:
- [Workspace]: Added API to add and delete domains to the allowed domains list. Learn more
New Features
- [Comments]: Added a new
Document Filter Dropdown
component to the Comment Sidebar. This feature allows users to filter comments based on documents.- By default, this filter is disabled. You need to enable it in filter config.
- This works when you are using multiple documents or folders.
Improvements
- [Comments]: Added support to add
context
inVelt Comment Tool
component as well. Previously, context for comments could only be added via event callbacks or APIs. With this update, you can now predefine context directly within theVelt Comment Tool
component itself. Currently, this feature is specific to popover comments, allowing you to, for example, assign unique context to each cell in a table.
- [Recorder]: Enhanced error handling for the recorder by introducing a new
RecordingErrorEvent
event. It will be triggered when the following errors occur:transcriptionFailed
: When transcription fails.editFailed
: When a video edit operation fails.recordingFailed
: When a recording fails.
- [Recorder]: Added
RecordingSaveInitiatedEvent
event. This event is dispatched before the actual save operation begins for original or edited recording.
- [Recorder]: Changed background color for video in the editor to gray when the editor is resized to a smaller size.
- [Recorder]: Video playback now stops upon reaching the end and the player state is reset.
- [Recorder]: Improved type for the legacy
onRecordedData
callback.
Bug Fixes
- [Single Editor Mode]: Fixed an issue where the editor sometimes lost edit access when opening the document in another tab when additional users were also present in the document.
Features
- [SDK]: Added
apiProxyDomain
support, allowing Velt API calls to be proxied through your own domain. Learn more.
Bug Fixes
- [Comments]: Fixed an issue where Thread Card Dropdown Options: Delete Thread and Delete Comment button wireframes text was not updated correctly.
Improvements
-
[Recorder]: Improved the post processing speed for zoom in effect by 90%.
-
[Recorder]: Added configuration API to specify recording quality constraints and encoding options. This provides finer control over the video and audio output of recordings.
Bug Fixes
- [Recorder]: Removed loading animation in the apply button which was causing performance issues.
- [Recorder]: Fixed the issue where disabled buttons were still clickable.
Improvements
- [Presence]: Added ability to configure when user is considered offline after being inactive. Default value:
600000
ms (10 minutes).
-
[Presence]: Added
isUserIdle
andisTabAway
fields in presence user objects.- When a user navigates away from the current tab, their status will be marked as
away
, and theisTabAway
field in their presence object will be set totrue
. - If a user remains inactive (no mouse movement) for a duration defined by
inactivityTime
(default: 5 minutes), their status will be set toaway
, and theisUserIdle
field in their presence object will be set totrue
.
- When a user navigates away from the current tab, their status will be marked as
-
[Single Editor Mode]: Added new events for Single Editor Mode, enabling finer-grained tracking of collaborative states and user interactions. The new events are:
accessRequested
: When a user requests editor access.accessRequestCanceled
: When a user cancels their request for editor access.accessAccepted
: When a user’s request for editor access is accepted.accessRejected
: When a user’s request for editor access is rejected.editorAssigned
: When a user is assigned as the editor.viewerAssigned
: When a user is assigned as a viewer.editorOnDifferentTabDetected
: When the current editor navigates away to a different browser tab or window.
Using Hooks:
Using API:
Using Hooks:
Using API:
-
[Comments]: The
updateContext
method is now supported even when multiple documents are initialized.
New Features
- [Recorder]: Added zooming functionality. Users can now add smooth zoom in and out effects on the video scenes. Note: This is in beta and currently the processing time for zoom in effect is quite high. We are working to optimize it.
Improvements
-
[Recorder]: Improved wireframes for video editor elements with mouse events to remove all styles if children are provided in the wireframe. Earlier for these elements, some residual styles were required to be overridden via CSS.
-
[Recorder]: Added the
recordingEditDone
event. This event fires the recording edits are done processing and the new recording file is generated. -
[Recorder]: Added the
deleteRecordings
API method to delete recordings.
Using API:
Using API:
Bug Fixes
- [Comments]: Fixed an issue where the
velt-comment-sidebar-filter-item--Added
class was not being applied correctly in the people filter. - [Notifications]: Fixed an issue where
setNotificationAsRead
was not working as expected in some scenarios.
Bug Fixes
- [Live State Sync]: Fixed an issue where
serverConnectionState
value was not updating correctly in some scenarios.
Improvements
- [Comments]: Added support to specify whether the system filters (e.g., “me”, “this page”) should be combined with an “and” or “or” operator. Default is
and
.
Using Props:
Using API:
Using Props:
Using API:
- [Comments]: Improved filters for comments author in the sidebar.
Bug Fixes
- [SDK]: Fixed an issue where delete notification REST API was causing some older notifications to be hidden in the frontend component.
Improvements
- [REST APIs]: Added realtime updates to SDK when notifications are deleted via the REST APIs.
- [REST APIs]: Added support for marking notifications as read through
Update Notifications
REST API.
Bug Fixes
- [Single Editor Mode]: Fixed accept reject buttons disappearing issue when multiple users request access in single editor mode.
Improvements
- [Live State Sync]: Improved types in
getLiveStateData
,setLiveStateData
methods and hooks. - [Comments Sidebar]: Ensured that “me” and “this page” options are on the top of the comments sidebar filters.
- [Notifications]: Added missing
panelOpenMode
prop toVeltNotificationsPanel
in React.
Bug Fixes
- [Comments]: Fixed an edge case where Tiptap comments were not being added when
commentToNearestAllowedElement
is enabled and comment mode is on.
New Features
- [Comments]: Added ability to attach comment pins to the closest allowed element when clicking on a non-allowed element. Default:
false
Using API:
Using API:
Using API:
- [Comments]: Added ability to enable/disable draft mode in comments. Default:
true
Using API:
Using API:
Using API:
- [Presence]: Added ability to turn off shadow DOM in Presence component. Default:
true
Improvements
- [Webhooks]: Added
assigned: true
in comment added event when someone is assigned to the comment during creation. - [Live State Sync]: Enhanced Redux middleware with support to dynamically update configuration options:
allowedActionTypes
disabledActionTypes
allowAction
Bug Fixes
- [Core]: Added additional compatibility for Safari v16 and older versions.
Improvements
- [Recorder]: Added ability to control whether recorded videos play in fullscreen mode.
- You can use this prop on any of the following components:
Velt Recorder Notes
Velt Recorder Control Panel
Velt Recorder Player
- Its turned on by default for Comments feature and off by default for standalone Recorder feature.
- You can use this prop on any of the following components:
-
[Recorder]: Added keyboard shortcuts in video editor for improved editing experience:
s
: Split the video at the selected frame.d
,delete
, orbackspace
: Delete the selected video section.space
: Toggle video play/pause.
-
[Single Editor Mode]: Added wireframe for Single Editor Mode Panel.
-
[Single Editor Mode]: Added embeddable component for Single Editor Mode Panel.
Improvements
- [UI Customization]: Added dynamic key support and square bracket notation support in Velt If conditions for more flexible conditional logic.
Bug Fixes
- [Follow Mode]: Fixed an issue where follow mode was not working as expected.
- [Comments]: Fixed “All” status filter not displaying all comments in sidebar.
New Features
- [UI Customization]: Added support of adding dynamic id on Velt Button. You can use template variables to set the id.
Improvements
- [Recorder]: Improved video editor UX for trimming and splitting videos.
- [Single Editor Mode]: Return
undefined
value inisUserEditor
when there are no current editors available in single editor mode. - [Presence]: Added
locationId
support in presence component.
Bug Fixes
- [Comments]: Fixed an issue where comment dialog composer in sidebar was getting autofocused when
fullExpanded
mode was enabled.
New Features
-
[UI Customization]: Added
resetVeltButtonState
method to reset the state of Velt Button components.
Improvements
- [Comments]: Updated copy and icons for sidebar filter buttons.
- [Recorder]: Made the transition to editor smoother when
autoOpenVideoEditor
is enabled. - [Recorder]: Improved the control panel embedded settings menu UX.
- [Recorder]: Added keyboard shortcuts for Play, Pause, Split, and Delete actions in video editor.
Bug Fixes
- [Comments]: Fixed an issue where the dialog might close if the user clicked outside the dialog while a recording was in progress.
New Features
- [Self Hosting]: Added support for self-hosting file attachments in comments.
Improvements
- [Self Hosting]: Added retries for GET operations.
- [Analytics]: Exposed additional events to Velt Debugger.
- [Live State Sync]: Added config to choose between merging and replacing live state data.
Using Hooks:
Using API:
Using Hooks:
Using API:
Bug Fixes
- [Live State Sync]: Fixed an issue in the Redux Middleware where the middleware was not initializing when Velt Provider was added conditionally.
Bug Fixes
- [Single Editor Mode]: Fixed an issue where
contenteditable
div’s access was not syncing properly when editor state changed.
Improvements
- [Recorder]: Added missing audio waveform visualization for screen recordings.
- [Recorder]: Made query parameter optional for
fetchRecordings
method. - [Recorder]: Improved metadata handling to ensure clean object state.
Improvements
- [Recorder]: Added additional props in
Recorder Control Panel
component:settingsEmbedded
: If set to true, the settings will be embedded in the control panel vs a menu. Default isfalse
. Please use this together with the Control Panel Wireframes so that you can move the settings panel in a different part of the control panel UI.autoOpenVideoEditor
: If set to true, the video editor will be opened automatically when the recording is done. Default isfalse
.
- [Recorder]: Added wireframe for recording preview in recording control panel.
New Features
- [Comments]: Added
fullExpanded
mode to control the expanded state of comments.- When enabled, comments will be shown in fully expanded state by default.
- Available on all comment-related components and can be controlled via props or API methods.
Using Props:
Using API:
Using Props:
Using API:
Using Props:
Using API:
New Features
- [Dev Tools]: Published beta version of Velt Devtools Chrome extension. It allows you to inspect and debug your Velt implementation. If you are interested in trying it out, please reach out to us.
- [Console]: Added support for viewing folders, recordings and notifications data in the console data page.
- [Console]: Added support for additional filters in the console data page: organizationId, folderId, documentId, userId.
- [Comments]: Added support for folder users in
@
mentions dropdown. - [Recorder]: Added an API to subscribe to all recorder data in the current document.
- Param:
RecorderRequestQuery
, optional, Gets the data for the provided query. - Returns:
Observable<GetRecordingsResponse>
, Subscription of the recorder data.
- Param:
Using Hook:
Using API:
Using Hook:
Using API:
- [Recorder]: Extended the
on
event subscription API to include:recordingDone
: Triggered when recording is completed.deleteRecording
: Triggered when a recording is deleted.
Using Hook:
Using API:
Using Hook:
Using API:
Improvements
- [UI]: Made custom list search case insensitive.
- [Recorder]: Make the video preview responsive in video editor.
- [Recorder]: Improved types for all APIs and Props for the recording feature.
New Features
- [Core]: Added the following events in
on
method of Velt client:userUpdate
: Triggered when the Velt user is updated.documentInit
: Triggered when the Velt document is initialized.error
: Triggered when an error occurs. Currently this is only triggered fortoken_expired
error. In future, this will be extended for other relevant errors.
Using Hook:
Using API:
Using Hook:
Using API:
- [Recorder]: Added ability to enable/disable video editor via props on
Velt Recorder Player
andVelt Recorder Control Panel
components. You could use any of these.
- [Recorder]: Added
recordingCountdown
andrecordingTranscription
props onVelt Recorder Notes
andVelt Recorder Control Panel
components.
- [Recorder]: Added video editor wireframes.
Improvements
- [Core]: Improved types for data resolvers.
- [Recorder]: Removed drag functionality from recording control panel and player.
- [Recorder]: If a
null
value is set forrecorder Id
prop inVelt Recorder Player
component, a warning will be thrown.
Bug Fixes
- [Comments]: Added a check to prevent an error in @mentions dropdown if the user group has no users and the
expandMentionGroups
config is set to true.
New Features
-
[Comments]: Added support for new filters in
fetchCommentAnnotations
method:resolvedBy
:string
, Filter comments by user who resolved the commentuserIds
:string[]
, Filter comments by comment annotation authormentionedUserIds
:string[]
, Filter comments if the provided users are tagged in the comment
-
[Contacts]: Added API and Hook to get the list of users added to organization, document, user groups or the ones overwritten using the
updateContactList
API.
New Features
- [Comments]: Added a config to show expanded user groups inside the @mentions dropdown menu.
- Added new wireframes to customize the display of user groups.
- Here are some props to control the display of user groups:
expandMentionGroups
: Whether to expand the user groups and show individual users inside the groups in the @mentions dropdown menu.showMentionGroupsFirst
: Whether to show the user groups in the @mentions dropdown menu before the non-group users.showMentionGroupsOnly
: Whether to show only the user groups in the @mentions dropdown menu and not the non-group users.
-
[Comments Sidebar]: Added two new default system filters and their wireframes to the sidebar:
Tagged
: Filter comments by specifying the user who was tagged in the comment. (Wireframe)Assigned
: Filter comments by specifying the user who was assigned to the comment. (Wireframe)
-
[Comments Sidebar]: Added another UI pattern for filters options: searchable dropdown with checklist. (Example Wireframe)
- [Comments Sidebar]: Added a reset filter button. (Wireframe)
- [Comments Sidebar]: Added prop to disable count calculation for sidebar filter options.
Improvements
- [Comments]: Updated
getCommentAnnotations()
method to now query and subscribe to comments data even if its not the currently set document. - [Comments]: Improved comment dialog positioning on text comments when the text is at the bottom edge of the page.
- [Notifications]: Added support in
getNotificationsData()
for retrieving custom notifications created withnotifyAll: false
. - [REST API]: Improved the performance of GDPR Delete API and made it 90%+ faster and more efficient.
Bug Fixes
- [Comments]: Fixed an issue with SlateJS comments where comment was not being added when the text was selected from right to left.
Improvements
- [Recorder]: Optimized the video recording performance: 50% smaller files with 90% faster uploads!
Improvements
- [REST API]: Added support to get all user data for GDPR requests. Learn more.
Improvements
- [Localization]: Added additional null checks for provided localization strings.
- [REST API]: Added support for special characters (
_
,-
) while creating custom notifications.
Bug Fixes
- [UI Customization]: Fixed an issue where empty wireframes for repeated components were not being rendered in some scenarios.
Improvements
- [Comments]: Changed default value of
pin-highlighter
to false for better initial experience. - [REST API]: Added
deleteAll
parameter to/v1/organizations/usergroups/users/delete
remove all users from a group. - [REST API]: Added
metadata
field on the returned comment annotation objects. It will contain documentId, organizationId, folderId, etc.
Improvements
- [Recorder]: Improved the video editor to be smoother and enabled “select and delete” feature.
- [Recorder]: Added support for audio waveform visualization in video recordings.
- [Recorder]: Reduced the size of the video recordings by 50%.
New Features
- [Reactions]: Added support for self hosting reactions data.
Improvements
- [Core]: Improved signature of User Resolver (used for self hosting user PII) for better consistency with backward compatibility.
- [Core]: Extended data resolvers with an option to configure retries and optimized operation order to prioritize client-side execution. Learn more here.
- [REST API]: Added support for updating users in existing comment annotations via REST APIs. Learn more here.
Improvements
- [Core]: Added support for automatic folder creation from the frontend when folders don’t exist. New documents without existing data are now automatically added to the currently set folder.
- [REST API]: Added support for user mentions via REST APIs. Learn more here.
Bug Fixes
- [Comments]: Fixed an issue where deleting inline comments in multi-document scenarios wasn’t always updating the UI state.
New Features
- [Core]: Added
updateLocations
method to update location(s) metadata. Previously this could only be done via REST APIs.
Improvements
- [Core]: Improved types for
updateDocuments
method.
- [Core]: Added support for location persistence by after debounced document updates.
- [Core]: Show the most updated location metadata in features like sidebar and notifications even if the features have stale data.
- [Core]:
client.getMetadata()
method now provides most updated information about organization, folders documents and locations for debugging purposes. - [Core]: Added logs for get API methods like
fetchCommentAnnotations
if it’s called without an authenticated user. - [Core]: SDK state and location are preserved after auto-relogin when browser extensions clear indexedDb during idle periods of >1hr.
- [Core]: Enhanced
disableLogs
method with more granular control:disableLogs()
: turns off only warningsdisableLogs({suppressAll: true})
: turns off all logsdisableLogs({warning: false, suppressAll: true})
: Keeps the warning logs but turns off all other logs
Improvements
- [Core]: Auto-relogin user in rare scenarios where after an hour of idle time indexedDb is cleared by browser extensions.
New Features
- [Comments]: Added
svgAsImg
configuration in comments to treat SVGs as images instead layered elements. Default isfalse
.
Using Props:
Using API:
Using Props:
Using API:
Using Props:
Using API:
Improvements
- [Comments]: Added
data-velt-comment-dialog-comments-priority
attribute in comment dialog if a comment priority is set. This can be used to style comments differently based on their priority. - [Notifications]: Changed min height to 300px in Notification panel.
- [Comments]: Added ability to apply filters via API before mounting the Sidebar (in embed mode).
Improvements
- [Comments]: Now, if both inline and popover comments are used, clicking on a comment in the inline comments section will not activate comment bubble.
- [Comments]: Added additional classes to inline comments section’s container divs to allow for more precise custom styling.
- [Core]: Added configuration options to aggressively suppress error messages especially on Safari related to index db and network errors.
Bug Fixes
- [Comments]: Added missing type for
placeholder
field increateCustomListDataOnAnnotation
in React. - [Comments]: Fixed minor bugs with Custom Lists wireframes.
Improvements
- [Notifications]: Added minimum height to notification panel to prevent layout shift when there is just one notification.
- [Notifications]: Removed default styling from notifications tool when Wireframe is used.
- [Comments]: Added active state support in Tiptap comments mark tags.
Bug Fixes
- [Comments]: Fixed an issue with
onCommentAdd
event that was not triggered once the comments component was unmounted and remounted during the session.
New Features
- [Debugging]: Added events for
unsetDocuments
andunsetLocations
. - [Comments]: Added type for
fetchCommentAnnotations
inCommentElement
for React. - [Documents]: Added
updateDocuments
method to update document(s) metadata.
- [Debugging]: Added
folderId
property inVelt.getMetadata()
response.
New Features
- [Comments]: Comments Self Hosting now available. Store and retrieve comment and notification text on your own backend while using Velt’s UI components.
- Combined with existing user PII self hosting, you can now store all sensitive data on your infrastructure.
- Support for self-hosted attachments and recordings coming soon.
Request Objects:
Request Objects:
Request Objects:
Improvements
- [Comments]: Added mobile support for inline comment section, improving the user experience on smaller screens.
- [Debugging]: Now
client.getMetadata()
method only returns the currently set documents instead of all documents used in the current session.
New Features
- [Comments]: Tiptap comments marks are now persisted automatically by default. This simplifies implementation as you no longer need to store marks yourself or modify your editor’s content handling.
- [Comments]: Added Sorting Dropdown Wireframe support for inline comments section. Learn more
Improvements
- [Comments]: Made the freestyle comment pins adapt to DOM elements with complex layouts.
- [Comments]: Improved loading skeleton in inline comments section to match comment card width and adapt responsively to smaller widths.
- [Comments]: Improved the alignment of the assign to dropdown in inline comments section when the width of the section is large.
- [Comments]: Added dark mode styling for the new sorting dropdown in inline comments section.
Bug Fixes
- [Comments]: Fixed an issue where the comment bubble was not keeping the dialog open when a fresh annotation was added.
New Features
- [Comments]: Added a default sorting UI component in the inline comments section. This was one of the most requested features.
- [Comments]: Added config to prevent deleting the entire thread when the first comment is deleted.
Improvements
- [Comments]: Improved the overall UI/UX of the inline comments section based on user feedback, including: loading state, inner padding, layout shift etc.
Bug Fixes
- [Comments]: Fixed an issue where inline comments sorting was not working when the prop was changed dynamically.
- [Comments]: Fixed issue in single-threaded mode where delete thread label now correctly appears on the root comment regardless of sorting order.
Improvements
-
[Recording]: Improved
TranscriptionDoneEvent
object. -
[Comments]: Fixed
useSetDocuments
hook to properly supportsetDocuments
method in dependency array in ReactuseEffect
:
- [Comments]: Made small UI improvements:
- Removed 0 from Velt bubble count.
- Fixed Velt bubble wireframe layout shift issue.
Bug Fixes
- [Comments]: Fixed small UI issues:
- Fixed an issue where draft comments were showing up when reaction was updated.
- Fixed an issue where selecting a comment in inline comment section was also opening the Velt Comment bubble.
- Fixed an issue where focused thread mode scroll was not working as expected.
Bug Fixes
- [Comments]: Fixed an issue where the SeenBy dropdown wasn’t opening on the first click.
- [Comments]: Fixed an issue where clicking @mention button was not opening the mention dropdown. Typing @ was working as expected.
- [Comments]: Fixed a re-rendering issue when adding reactions.
New Features
- [Core]: Added
getUser
method to get the current user.
- [UI Customization]: Simplified how UI can be customized using wireframes.
- Conditional Component Rendering: Conditionally render any component directly without needing to specify parent or sibling wireframes.
- Conditional CSS Classes: Classes can now be conditionally applied to components based on the data in the component.
- Wireframe CSS Classes Support: CSS Classes added to wireframes components are automatically applied to the related rendered components.
Conditional Component Rendering:
Conditional CSS Classes:
Wireframe CSS Classes Support:
Conditional Component Rendering:
Conditional CSS Classes:
Wireframe CSS Classes Support:
Conditional Component Rendering:
Conditional CSS Classes:
Wireframe CSS Classes Support:
- [UI Customization]: Set and render custom state data into Velt components. This data is available in all Velt Wireframes, Velt If and Velt Data components.
- [Comments]: Added support for custom autocomplete search for contact list or custom lists. You should use this if you have a large dataset that you want to plug into the autocomplete dropdown, and search directly your own data source.
Enable the feature:
Set initial list:
Handle search event:
Enable the feature:
Set initial list:
Handle search event:
Enable the feature:
Set initial list:
Handle search event:
- [Comments]: Added
composerClicked
event to detect when comment composer is clicked.
Bug Fixes
- [Comments]: Fixed assign comment input double border CSS issue.
New Features
-
[Folders]: Introducing Folders! Organize documents hierarchically with granular access control. Modeled after Google Drive’s folder structure.
- Folders can contain documents and other folders.
- Uses same permission model as Organizations and Documents.
- APIs:
- Frontend: Subscribe to folders and query by folderId.
- Backend: CRUD operations for folders and access control. Learn More
- Added folder support to existing relevant APIs.
-
[Folders]: API to subscribe to a particular folder and all its documents at the same time.
Using Hooks:
Using API:
Using Hooks:
Using API:
- [Folders]: Added an API to fetch folder metadata and subfolders by organizationId, folderId with pagination.
- [Documents]: Added an API to fetch document metadata by organizationId, folderId or documentIds with pagination.
- [Comments]: Added a new API to fetch comment annotations by organizationId, folderId or documentIds with pagination and filtering options. This is different from the existing subscription API which susbcribes to realtime changes to the comments data.
Features
- [Security] You can now self-host your user PII metadata.
- Send only userId instead of full user object and a client side data provider.
- Components will automatically fetch the user details from the provider and hydrate the user object.
- The metadata will not be sent to Velt servers.
Improvements
- [Core]: Added core performance improvements throughout the SDK.
- [Recorder]: Added new API methods to get the recorded data.
- [Recorder] Added missing props to disable shadow DOM for recorder components in React SDK.
Bug Fixes
- [Recording]: Fixed Safari recording compatibility issues across some macOS versions.
Features
- [Core]: Added support for React v19 in
sdk-react
library.
Improvements
- [Authentication]: Made
organizationId
mandatory inidentify
method. - [New Accounts]: New accounts or API keys will have advanced queries turned on by default.
Bug Fixes
- [Notifications]: Fixed an issue where notifications were not working when organizationId was not set.
- [REST API]: Fixed an issue where the REST API for adding or updating organizations and documents did not allow custom fields in metadata.
Improvements
- [Comments]: Improved comments performance with optimistic local-first reads and writes.
- [Notifications]: Added
documentMetadata
object in the properties that are sent to SendGrid for emails.
Bug Fixes
- [Comments]: Fixed an issue where custom metadata added to a comment using
addContext
was not sent to the first notification event (newlyAdded
).
Features
- [Comments]: Added a
transcriptionDone
event callback when recording transcription is done.
Using Hooks:
Using API:
Using Hooks:
Using API:
Using API:
Improvements
- [Comments]: Disabled @here in the contacts dropdown by default. You can turn it on using this.
Bug Fixes
- [Comments]: Removed virtual scroll from autocomplete panel and removed fixed height. This was causing weird UI issues. We are rewriting the autocomplete panel with virtual scroll.
- [Comments]: Fixed an issue where horizontal scroll was visible on sidebar in some scenarios.
- [Comments]: Fixed an issue where the
shadowDom
prop was not passed down to page mode composer in comment sidebar. - [Comments]: Fixed an issue where
sortData
prop was not working in comments sidebar.
Bug Fixes
- [Comments]: Fixed an issue where comments was not working for fresh documents if the advanced queries option wasn’t enabled. Note this is mandatory for all versions of v4 SDK.
- [Comments]: Fixed an issue where updateContactList was not working.
- [Comments]: Fixed an issue where in inline comments, the resolve button was visible for all messages in a thread.
Features
- [Security] You can now self-host your user PII metadata.
- Send only userId instead of full user object and a client side data provider.
- Components will automatically fetch the user details from the provider and hydrate the user object.
- The metadata will not be sent to Velt servers.
Improvements
- [Core]: Added core performance improvements throughout the SDK.
- [Recorder]: Added new API methods to get the recorded data.
- [Recorder] Added missing props to disable shadow DOM for recorder components in React SDK.
Bug Fixes
- [Recording]: Fixed Safari recording compatibility issues across some macOS versions.
Features
- [Core]: Added support for React v19 in
sdk-react
library.
Improvements
- [Authentication]: Made
organizationId
mandatory inidentify
method. - [New Accounts]: New accounts or API keys will have advanced queries turned on by default.
Bug Fixes
- [Notifications]: Fixed an issue where notifications were not working when organizationId was not set.
- [REST API]: Fixed an issue where the REST API for adding or updating organizations and documents did not allow custom fields in metadata.
Improvements
- [Comments]: Improved comments performance with optimistic local-first reads and writes.
- [Notifications]: Added
documentMetadata
object in the properties that are sent to SendGrid for emails.
Bug Fixes
- [Comments]: Fixed an issue where custom metadata added to a comment using
addContext
was not sent to the first notification event (newlyAdded
).
Bug Fixes
- [Comments]: Fixed an issue with
getCommentAnnotationsCount
API when filtering by specific document IDs in the query.
New APIs
1. setDocuments
-
Set multiple documents at the same time. You can specify 30 documents at a time.
-
The first document in the list will be considered as the root document.
-
For features like comments, notifications, recorder, reactions etc. you will be able to read and write to multiple documents at the same time.
-
For features like cursors, presence, huddle, live state sync etc. it will default to the root document.
-
Sidebar will automatically show data from all the documents.
-
Params:
documents
: Document[]options?
: SetDocumentsRequestOptions
Using Hooks:
Using API:
Using Hooks:
Using API:
Using API:
2. getCommentAnnotations
- Get all the comment annotations for all the specified documents.
- You can specify 30 documents at a time.
- If you don’t specify any query, it will return data from the documents specified in the
setDocuments
method.
Using Hooks:
Using API:
Using Hooks:
Using API:
Using API:
3. getCommentAnnotationsCount
- Get the total and unread comment annotations count of all the comment annotations for all the specified documents.
- You can specify 30 documents at a time.
- If you don’t specify any query, it will return data from the documents specified in the
setDocuments
method.
Using Hooks:
Using API:
Using Hooks:
Using API:
Using API:
4. Read/Write data from multiple documents on the same page
- If you want to display data (eg: comments) from multiple documents on the same page, you can add
data-velt-document-id
attribute to the container that contains thedocument
. - It will be used to identify which part of the DOM belongs to which document.
Other updates
New Features
- [Comments]: Added support for Status Filter in Comments Sidebar’s main filter menu:
- By default, the status filter is disabled in the main filter menu.
- Currently, it doesn’t support grouping.
- Added Wireframe support for this. Learn more.
- If you were using wireframes before, you will add this to your wireframes.
Bug Fixes
- [Comments]: Fixed an issue where empty state visibility was not visible when filter is applied and grouping was disabled.
- [Comments]: Fixed an issue where users could click on the comment in the sidebar and navigate to comments when they shouldn’t.