Important changes in Cord SDK


You can find all important changes to the Cord product on this page.

19 April 2024

JS SDK 1.41.0 #

This version of the SDK fixes a minor issue with the way the autofocus and disabled attributes were handled on several of our web components, so that it better conforms to the HTML spec (and expectations of web browsers).

18 April 2024

JS SDK 1.40.0 #

This version of the SDK introduces a new initialFetchCount option to the thread.observeThread API method to specify the number of messages to initially load.

16 April 2024

JS SDK 1.39.0 #

This SDK version includes the following changes:

  • Fixes the signature and behavior of the server SDK function validateWebhookSignature. It no longer relies on the stability of JSON encoding and carries out a more robust check of the webhook signature.
  • The location and threadName options to observeThread and friends have been deprecated. These arguments haven't done anything since we changed it so reading a thread doesn't create the thread as a side effect, so there's no value in passing them, though doing so won't cause any issues.
  • The groupID option to observeThread has been deprecated, as it does the same function as the filter.groupID option. You can continue to pass either option, but filter.groupID is preferred.

12 April 2024

JS methods renamed #

We've renamed three functions in the JS API to make their names more clear. Specifically:

  • presence.observeLocationData is now presence.observePresence
  • notifications.observeData is now notifications.observeNotifications
  • notifications.observeSummary is now notifications.observeNotificationCounts

The behavior of these functions is unchanged and the old names will continue to work as aliases for the new names, but the documentation will refer to the new names.

10 April 2024

Thread JS API updateMessage method #

We have updated the thread.updateMessage to no longer require a thread ID. The former way of calling this function (with a thread ID) is still supported and will continue to work.

9 April 2024

JS SDK 1.38.0 #

This version of the SDK no longer includes sourcemaps.

5 April 2024

Sort searched users by location #

We've added a new options sortBy and sortDirection to the user.searchUsers method.

4 April 2024

JS SDK 1.37.0 #

4 April 2024

Share thread method added to the Thread JS API #

We've added the ability to share a thread via email in the Thread JS API.

28 March 2024

Location filters default to exact match #

Previously, location filters in some places defaulted to being exact match, and in others they defaulted to being partial match. We've changed so that location filters default to exact matching everywhere. If you want partial matching behavior, be sure to pass your filter as { value: yourLocationFilter, partialMatch: true }.

25 March 2024

Delete method added to the Notification JS API #

We've added the ability to delete a notification in the Notifications JS API.

15 March 2024

Filter threads by resolved status #

We've added the ability to filter threads in the REST API by resolved status. Please see the filter property under List all threads for more information.

13 March 2024

Filter threads by viewer status #

We've added the ability to filter collections of threads by whether the viewer is subscribed to or mentioned within them. This works with any JS API that has thread filters, from observeThreads and observeThreadCounts to setSeen. Set the viewer property of the filter to one or more of subscribed or mentioned to use the new filter.

11 March 2024

JS SDK 1.36.0 #

This version of the SDK adds initialFetchCount parameter to observeThreads API options.

8 March 2024

JS SDK 1.35.2 #

Makes groupID optional on the ThreadedComments component if composerPosition is set to none. Omitting groupID means the component will load threads from all groups the user is a member of if the user does not have a group specified in their access token.

2 March 2024

JS SDK 1.35.0 #

This release of the package releases updated types for the application rename outlined below.

1 March 2024

Renaming application to project #

We have deprecated the term application in favor of project. This means that, for example, instead of calling the /v1/applications/ REST API endpoints developers should call /v1/projects/, and that props and parameters like applicationID should now be projectID.

The reason for this change is that we received feedback from customers that the term application could be confusing and had different connotations for different people. We have chosen project as a more neutral term to indicate an isolated space containing your users, threads, messages and other configurations.

All old references to application should continue to work - i.e. this is not immediately a breaking change. We will monitor usage of the deprecated paths and terms and communicate with customers before decommissioning them.

21 February 2024

CLI 1.3.0 #

This CLI version includes the following changes:

  • cord curl -- <request> and cord curl application -- <request> allows you to use standard cURL syntax without having to manually authenticate each request.

15 February 2024

JS SDK 1.34.0 #

This SDK version includes the following changes:

14 February 2024

JS SDK 1.33.0 #

This SDK version includes the following changes:

  • Remove jwt-decode dependency, to enable support for versions of Node below v18.
  • New search users JS API method detailed below.

14 February 2024

Search users method added to JS User API #

We've added a new user.searchUsers method that allows a user to search for other users with various options.

6 February 2024

JS SDK 1.32 #

This SDK version includes the following changes:

  • The setSeen method in the JS Thread API now accepts a filter object, and applies the operation to all matching threads.

23 January 2024

List group members REST API #

The Groups REST API now includes an additional endpoint list group members that returns a paginated list of users who are members of the group.

22 January 2024

JS SDK 1.31.1 #

This SDK version includes the following changes:

  • Fixes an issue with thread filtering in ThreadedComments specifically when groupID is not in the client token but is set as a prop on the component. The component now only loads threads in the prop groupID rather than threads from all the viewer's groups.

17 January 2024

JS SDK 1.31.0 #

This SDK version includes the following changes:

21 December, 2023

JS SDK 1.30.0 #

This SDK version includes the following change:

19 December, 2023

JS SDK 1.29.0 and change in client auth model #

Client auth tokens no longer have to be signed with a group ID. If a user is logged in with a token which does not contain a group ID, they may view content from any of their groups. See here for more information. The previous model in which tokens contained group ID will continue to work unchanged.

Group ID has been added in the latest SDK version to relevant components

14 December, 2023

JS SDK 1.28.1 #

The threads JS and REST APIs will include an additional property: actionMessageRepliers to account for authors of messages of type action_message in thread replies.

13 December, 2023

Mark notifications as unread #

The notification list component now has a menu item to mark a notification as unread (from the same dropdown menu where you can mark a notification as read).

The notification API functions to mark a notification as read have an additional function which can mark a notification as unread.

11 December, 2023

New field added to get user details endpoint #

The Get user details endpoint in the Users REST API now returns an additional field groupIDsWithLinkedSlackProfile which lists groupIDs where the user has connected to a Slack user.

6 December, 2023

CLI 1.2.0 #

This CLI version includes the following changes:

  • cord app select makes switching between applications easier. Now, instead of having to fetch the application ID and secret yourself, you can run this command and select the one you want to use. All you need is to configure your customer ID and secret.
  • cord app which lets you see which application you are using.

4 December, 2023

Add options argument to User JS API disconnectSlackWorkspace #

We've added an options argument to user.disconnectSlackWorkspace where you can pass in a onDisconnect callback.

1 December, 2023

Change in User JS API connectToSlack argument #

We've updated the argument for user.connectToSlack to accept an object instead of just a callback.

29 November, 2023

JS SDK 1.27.0 #

This version fixes a bug in the React notification.useSummary hook which could cause a re-render loop, and also removes a dependency that we were only making a very tiny use of.

23 November, 2023

Message Formatter in the CLI #

We've added the option --markdownContent to the CLI commands cord message create and cord message update.

This new option can be used instead of --content to input the message content as a markdown string instead of in the MessageContent format.

This currently doesn't support formatting for @-mentioning users; to do that via the CLI you will have to use --content.

21 November, 2023

JS SDK 1.26.0 #

This version adds the MessageContent and MessageNode types to our types package @cord-sdk/types.

Version 1.26.1 fixes a minor issue in ThreadedComments CSS styling, and version 1.26.2 fixes an extremely minor issue in the TypeScript types for our presence API.

20 November, 2023

Deprecation warning #

We will be deprecating the location and resolvedStatusparameters within the filter property of ThreadedComments.

Please use the top-level location property instead and replace the resolvedStatus parameter with the relevant displayResolved property as follows:

  • Replace filter={{ resolvedStatus: "any" }} withdisplayResolved="interleaved"
  • Replace filter={{ resolvedStatus: "resolved" }} withdisplayResolved="resolvedOnly"
  • Replace filter={{ resolvedStatus: "unresolved" }} withdisplayResolved="unresolvedOnly"

10 November, 2023

JS SDK 1.25.0 #

This version includes the changes below to permit specifying subscribers at thread creation.

Specify subscribers at thread create #

The Thread and Message REST API now support specifying subscribers at thread creation. The corresponding JS API, thread.createThread and thread.sendMessage also support specifying subscribers at thread creation.

7 November, 2023

Create thread REST API #

The Threads REST API now includes an additional endpoint create thread that allows you to create an empty thread, i.e., one without messages.

3 November, 2023

JS SDK 1.24.0 #

This SDK version includes updated types to reflect the changes below.

Create Thread API #

We've added a new thread.createThread method that allows you to create a thread without messages. If you would like to create a thread containing a message, you can use the sendMessage API instead.

2 November, 2023

Connect to Slack method callback #

Added an optional callback to user.connectToSlack. This callback is called once a user has successfully connected or cancelled the Slack connection process.

1 November, 2023

Add setting typing indicators to JS API #

Added a new parameter to thread.updateThread to set a typing indicator. Setting typing to true will cause a typing indicator to display in other users' conversations.

27 October, 2023

JS SDK 1.23.0 #

This release of the package releases updated types for the group rename outlined below.

27 October, 2023

Renaming organization to group #

We have deprecated the term organization or org in favor of group. This means that, for example, instead of calling the /v1/organizations/ REST API endpoints developers should call /v1/groups/, and that props and parameters like organizationID should now be groupID.

The reason for this change is that we received feedback from customers that the term organization could be confusing and had different connotations for different people. We have chosen group as a more neutral term to indicate a list of users that can see the same threads.

All old references to organization should continue to work - i.e. this is not immediately a breaking change. We will monitor usage of the deprecated paths and terms and communicate with customers before decommissioning them.

26 October, 2023

JS SDK 1.22.0 #

This SDK version includes the following changes:

  • Adds the displayResolved, sortBy and scrollDirection properties to the ThreadedComments component.
  • The messageOrder property has been replaced by the scrollDirection that may be set to up or down. Replace any calls using messageOrder="newest_on_top" with scrollDirection="down".

26 October, 2023

Reaction Component DOM Structure Change #

The DOM structure of cord-reactions has been adjusted slightly so that the add reaction button is now a child of thereaction-list. This may cause breaking changes to users specifically targeting .cord-reaction-list or .cord-reactions-container in their css.

20 October, 2023

JS SDK 1.21.0 #

This SDK version includes the following changes:

JS SDK 1.21.1 includes a fix for the onClickNotification for the NotificationListLauncher component.

Restricting Live Cursors to a specified area #

We've added a new property, boundingElementRef, to LiveCursors that allows for restricting the interaction area to inside a given element. It stops both sending and showing cursors outside of the bounding element. When unset, LiveCursors will continue working across the whole page, just as it did before.

17 October, 2023

Slack methods added to JS User API #

We've added a new user.connectToSlack method that allows a user to connect to their Slack. We have also added a new user.disconnectSlackWorkSpace method that allows a user to disconnect their org from a Slack workspace.

You can now check if an organization has been connected to a Slack workspace by observing the ViewerUserData and checking if organizationIsSlackConnectedis true. This information is also now available via the REST API organization GET request.

You can now check if a user has been connected to a Slack user by observing the ViewerUserData and checking if isSlackConnectedis true.

Updates to Live Cursors #

Firstly, we've added a couple of new properties, sendCursor and showCursors, to the LiveCursors component. The goal of these properties is to give finer control over where to send and show cursors. Both are optional and default to true so would not change any the behavior of any existing implementations.

Secondly, we've updated the styling on the LiveCursorsDefaultCursor component to take in a class name and other properties such as data attributes to offer more ways to customize the default cursor without having to rebuild it yourself. The color palette of each cursor is now controlled by a .cord-color-palette-X class that can be used to override the color scheme. Please see the docs here for more information.

13 October, 2023

JS SDK 1.20.0 #

This SDK version includes the following changes:

  • Adds new stable class name (cord-no-replies) to threads that don't have any replies. This applies to ThreadedComments, Thread and any component using Thread.

JS SDK 1.20.1 includes no user-facing changes (only some fixes to an experimental unreleased feature for internal testing).

Upcoming update to v1/threads REST API #

The Threads REST API endpoint, which is used to list all threads in an application is getting a performance upgrade and will be returning paginated results.

Currently, this call returns all objects in an array called threads. However, after the update, it will return an object with two keys: threads (the same value as before) and pagination (a new object containing a token to use with your next call and total which shows the count of all the threads you have). The results will be limited to 1000 entries, but you'll be able to change this by passing a custom number to the limit option when making the call instead.

In case you're already making calls to this API endpoint in your work, you'll need to make some slight adjustments on how you handle the updated response. This modification is limited to the v1/threads endpoint and won't interfere with any other implementations.

11 October, 2023

JS SDK 1.19.0 #

This SDK version includes the following changes:

  • Message-related events from the Message and ThreadedComments components, such as click or mouseenter, include the message and thread details in the event payload.

10 October, 2023

JS SDK 1.18.0 #

This SDK version includes the following changes:

  • Adds the onThreadResolve and onThreadReopen events to the Message component.
  • Adds the onThreadReopen event to the Composer component.
  • Adds the onThreadResolve and onThreadReopen events to the ThreadedComments component.
  • Adds a new Javascript API thread.observeMessage that can be used to fetch data for a single message.

6 October, 2023

Cord CLI tool #

We've created a CLI tool to make it easier to view, create and delete objects from Cord. Create new users, send messages, or view threads, all from the comfort of your command line.

4 October, 2023

JS SDK 1.17.0 #

This SDK version includes the following changes:

2 October, 2023

New thread observer #

We've added a Javascript thread API thread.observeThread. The data returned is a combination of thread.observeThreadData and thread.observeThreadSummary.

While thread.observeThreadData and thread.observeThreadSummary will still be available to use, the preferred method to get this data is to use the new thread.observeThread API.

25 September, 2023

JS SDK 1.16.0 #

This SDK version includes the following changes:

  • We have added a new client-side API to fetch org members for a specified org (if the current user is a member), or for the org the user is currently logged in with if not specified.

22 September, 2023

Attach files to messages #

We've added APIs to upload files and attach them to messages. This allows you to create messages with images, videos, or documents attached to them. This includes a new file upload REST API and JavaScript API and expansions to the existing message APIs to let you add and remove attachments.

21 September, 2023

JS SDK 1.15.0 #

This SDK version includes the following changes:

  • Adds the threadUrl and threadName properties, and onFocus, onBlur and onClose callbacks to the ThreadedComments component.
  • Fixes a number of bugs with the new LiveCursors component.
  • Reverts a change to the thread APIs which broke backwards-compatibility.

JS SDK 1.15.1 fixes compatibility with TypeScript versions older than 4.5.

20 September, 2023

JS SDK 1.14.0 #

This SDK version includes the following changes:

  • The LiveCursors component is available, which shows the cursors of other users on the same page.

19 September, 2023

JS SDK 1.13.0 #

This SDK version includes the following changes:

  • The NotificationListLauncher component includes an extra propertyfilter which functions similarly to the one inNotificationList. It can be used to better control the displayed value of the unread count badge and related notifications depending on the properties you filter by.
  • We've also added a filter parameter to the Notification Summary API. You can use this to filter notifications summary depending on the value of their metadata, location and organizationID properties.
  • Adds the autofocus, and replyComposerExpanded properties to the ThreadedComments component.
  • Renames the composerExpanded ThreadedComments prop totopLevelComposerExpanded.

Full preferences response object in Preferences REST API #

The response object for listing all user preferences REST API now returns the whole preferences object rather than just the preferences for notification_channels.

8 September, 2023

JS SDK 1.12.0 #

This SDK version includes the following changes:

Version 1.12.1 was released on 11 September to fix a build failure some customers were experiencing in 1.12.0.

4 September, 2023

beforeMessageCreate callback #

We've added a new configuration option called beforeMessageCreate that lets you process messages before they're sent. This can be used to change the message or trigger behavior in your app in response to the message.

1 September, 2023

Optional Message IDs #

In both the REST API and JS API for creating a message, the message ID is no longer required. If you omit it, a random ID will be allocated for you.

30 August, 2023

JS SDK 1.11.0 #

This SDK version includes the following changes:

  • The annotation API has two new functions, viewportCoordinatesToString and stringToViewportCoordinates. These functions provide the logic that Cord uses internally in order to save the position of annotations into our backend and the logic to use those saved positions in order to place annotations on the screen.

25 August, 2023

JS SDK 1.10.0 #

This SDK version includes the following changes:

  • Adds filtering by timestamp ranges on thread.searchMessages API method. See the docs here for more information.

Message ID in Data Structure #

When using our client API to send a message, we've moved the message ID parameter from a positional argument to inside the data argument. The old version will still work for the forseeable future, but the new one should be a little easier to use and allows for some future improvements.

24 August, 2023

JS SDK 1.9.0 #

This SDK version includes the following changes:

  • Adds the new thread.searchMessages API method. See the docs here for more information.

Inline Formatting in Composer #

The Cord composer now supports many more text formatting options, including *bold*, _italic_, `inline code`, and code blocks starting with ```.

23 August, 2023

JS SDK 1.8.0 #

This SDK version includes the following changes:

22 August, 2023

Delete user endpoint to REST API #

We've added a new endpoint to our REST API to delete users. Calling it will delete the information associated with the user, including messages and attachments they created.

Users REST API change #

Email is no longer a required field for creating a user. See the docs for more information about this API.

18 August, 2023

Preferences REST API #

We have a new Preferences REST API to allow you to update users preferences. At the moment you can only update the notification_channels, which determines if users will receive Slack or email notifications based on activity on Cord.

Notification's extraClassnames #

Do you need more control? Are some notifications more important, or do you want system notifications to look different from normal users' notifications?

There is a new property on notifications called extraClassnames. Any CSS classes present in that property will be added to the notification when it's rendered.

You can combine this field and CSS to achieve greater customization. This allows you to make some notifications look different from others.

11 August, 2023

JS SDK 1.7.0 #

This SDK version includes a few changes:

  • Adds `setSeen` method to the client-side thread API. You can use this to mark an entire thread seen or unseen for the current logged-in user.
  • The Message component now emits onEditStart, onEditEnd events and has an additional property: isEditing. These can be useful for creating custom UI and behaviors for editing a message.

9 August, 2023

JS SDK 1.6.0 #

This SDK version adds some properties to ThreadedComments:

  • highlightThreadId, used to highlight a specific thread. This is useful to visually connect a thread to an element on screen.
  • showReplies, used to initially show the thread replies expanded, or not show any replies at all.

9 August, 2023

JS SDK 1.5.0 and 1.5.1 #

Version 1.5.0 contains some minor bugfixes and tweaks to the features released in 1.4.0. Due to a packaging oversight, it failed to install for many users, which was fixed in version 1.5.1.

8 August, 2023

JS SDK 1.4.0 #

This SDK version includes:

  • Extensions to the message REST API, to create/modify reactions, and to retrieve message annotations.
  • A filter option to the useLocationData hook.
  • A number of minor cosmetic improvements to the ThreadedComments component.
  • Continuation of the types rename and merger as described immediately below.

2 August, 2023

JS SDK 1.3.0 #

This SDK version makes a couple of changes:

  • The @cord-sdk/api-types package is deprecated and all of its types have been moved into the @cord-sdk/types package. The former will remain around for backwards-compatibility, but prefer @cord-sdk/types for new code.
  • The notification data JS API and notification REST API contain additional data in the "header" and "attachment" fields about any user names that appear in the notification and the message that the notification is about. Previously only the IDs would be present, and now more complete data is directly in in the notification structure so you don't need to make additional calls to fetch that data.

25 July, 2023

JS SDK 1.2.0 #

This release of the package updates type definitions to reflect the changes listed below since the 1.1.0 package release. It also adds a "lastMessage" field to complement the "firstMessage" field in the thread summary JS API.

20 July, 2023

Events Webhook #

We have added Events Webhook so you can stay up to date with Cord activity in your app.

You can receive thread-message-added and notification-created events.

Update Cord options #

You can now update the Cord configuration options without reinitializing Cord, which should be more convenient for some use cases, such as enabling or disabling features based on the state of your application.

17 July, 2023

JS SDK 1.1.0 #

This release of the package updates type definitions to reflect the changes listed below since the 1.0.0 package release.

14 July, 2023

Message's extraClassnames #

Do you need more control? Are some messages more important, or do you want system messages to look different from normal users' messages?

There is a new property on messages called extraClassnames. Any CSS classes present in that property will be added to the message when it's rendered.

You can combine this field and CSS to achieve greater customization. This allows you to make some messages look different from others.

13 July, 2023

Deprecate Inbox and Inbox Launcher #

The Inbox and Inbox Launcher have been deprecated. Please use Notification List and Notification List Launcher instead.

JavaScript update message API #

We have added a new API to update a message. You can use this to implement message editing, mark messages as deleted, or update the message metadata.

11 July, 2023

JavaScript set subscribed API #

We have added a new API to update the subscribed status of a thread. You can use it to change the subscripted status for a thread for the current user.

JavaScript message sending API #

We have added a client-side API to send a new message. You can use it to create new threads or add messages to existing ones, all from inside the browser.

10 July, 2023

Threaded Comments events #

The ThreadedComments component now emits onMessageClick, onMessageMouseEnter, onMessageMouseLeave, onLoading and onRender events. The first three will pass an object to the callback containing the relevant threadId and messageId.

You can use these events to build custom UI behavior.

JavaScript Message Data #

We've significantly expanded the message data we return from our client-side thread APIs to include everything available in the REST API, including message content.

JavaScript thread update API #

We have added a new API to update the properties of a thread. You can use it to resolve threads, update their name or location, and more, all from inside your client code.

4 July, 2023

Timestamp component #

The Timestamp component is now available! It can be used as a building block to create your own desired message layouts.

Reactions component #

The Reactions component is now available! The use case is to display, add and remove reactions on a particular message in a thread. It is lower level component used as a building block to create your own message layouts. Use it alongside our various APIs such as the Thread API to get the information you need to hook this up to the message you want.

Deprecate badgeStyles #

The badgeStyle in notification list launcher and the inboxBadgeStyle in inbox launcher have been deprecated. If you were using a value other than the default badge_with_count, please write some CSS style targeting .cord-badge to replicate the other two options. E.g. to replicate badgeStyle="badge", you can use .cord-badge::after { content: ''; height: 10px; min-width: 10px; }.

30 June, 2023

JS SDK 1.0.0 #

From this version, Cord components will not have a shadowRoot anymore. This gives you unlimited flexibility when customizing Cord: you won't be limited to the CSS variables we expose, but you can write any CSS.
While we've tried our best to maintain backwards compatibility, some parts of the UI might look off when you update to this version. The great news is that you should be able to write CSS to fix them!

Notification Component #

This new version also contains a notification component which renders a single notification, for greater control over notification rendering in cases when the existing notification list component might not be suitable.

27 June, 2023

JavaScript Thread API #

You can now do partial matching with thread.useLocationData and thread.observeLocationData. The existing options object now accepts a partialMatch property to perform partial matching. See the Thread API page for more information.

Notification Data JS API #

We have a new JS API for fetching complete notification data for a user. You could use this, for example, to build your own completely custom notifications UI.

26 June, 2023

Disable Slack #

You can now disable our Slack integration on the client side by passing enable_slack: false as an option to CordSDK.init or enableSlack={false} to CordProvider. See the initialization documentation for more information.

19 June, 2023

JS SDK 0.0.49 #

This release includes some minor bugfixes for the new ThreadedComments component.

16 June, 2023

Javascript Notification Preferences API #

We have a new Javascript Notification Preferences API to allow you to update what notifications your user would like to receive.

15 June, 2023

More CSS customizable components (and JS SDK 0.0.48) #

Two more components were migrated to the new, fully CSS customizable version of Cord's components:Composer, and Pin.

If you update to version 0.0.48 of our JS SDK, you will get the new version of these components by default. There should not be any visual changes, and you will be able to write CSS to style the components as you need. These components will still support CSS variables, but we encourage you to move away from them to plain CSS.

ThreadedComments (and JS SDK 0.0.47) #

The new ThreadedComments component is available to use. This component is great for an all-in-one threaded commenting experience. Furthermore, it's completely built upon public APIs, with full source code available under a permissive license. The component is ready-to-use as-is, but the source code is there to learn from as an example, or even copy-paste into your app to remix and customize!

14 June, 2023

Presence REST API #

We have a new Presence REST API to allow you to update where a user is within your product.

13 June, 2023

CSS customizable components #

Four components were migrated to a new, fully CSS customizable version of Cord's components. These components don't have a shadowRoot and have stable CSS class names, which are guaranteed to not change between versions of Cord SDK. These CSS class names are prefixed with cord-. You can target these classes to style Cord's components using the full power of CSS, rather than being limited to specific CSS variables. The new fully CSS customizable components are: PagePresence, PresenceFacepile, Avatar, Facepile and Message.

If you update to version 0.0.45 of our JS SDK, you will get the new version of these components by default. There should not be any visual changes, and you will be able to write CSS to style the components as you need. These components will still support CSS variables, but we encourage you to move away from them to plain CSS.

9 June, 2023

Message REST API #

We've released our message REST API to allow you to create, read, update, and delete messages from Cord. You can use it for a variety of purposes, from analytics to building an AI chatbot.

Notifications REST API #

Our notifications REST API has been extended. Along with creating notifications, you can now also get all of a user's notifications, as well as delete a notification.

JS SDK 0.0.44 #

Our JavaScript SDK packages have been updated with a bunch of new TypeScript types, as well as compatibility improvements in our React package to allow it to build with a wider variety of build systems.

2 June, 2023

JS SDK 0.0.43 #

This version adds a customEventMetadata parameter that you can set on Cord initialization. At the moment this is only useful for customers using our Segment integration. The value you provide will be attached to Segment events as thecustom_event_metadata property.

31 May, 2023

Add typing field to Thread REST API #

We have added a new field typing to update a thread using the Thread API. The new field accepts an array of user ids, and will force show a typing indicator in the thread.

29 May, 2023

JavaScript User API #

We have a new client-side JavaScript API to fetch details about users you've synced to Cord. See the documentation for the User API for more details.

27 May, 2023

Threads REST API #

We have a new Threads REST API which has multiple endpoints you can use to manipulate threads. You can list all of the threads in your app, change a thread's name and location, or even delete a thread altogether.

26 May, 2023

Applications REST API #

We have a new Applications REST API which has multiple endpoints you can use to manipulate your applications. This API will enable you to create new applications and update, delete or view details of your existing ones.

25 May, 2023

Update Cord's Server to Version 0.0.42 #

If you're using our server JS SDK @cord-sdk/server in order to sign Cord tokens with the function getClientAuthToken please update to the latest version to ensure it's passed a user ID and organization ID.

Don't worry, we haven't found any security holes or vulnerabilities in our code. We've rolled out this new version as an extra guardrail for clients who may have improperly implemented our API, and created a way to call the function with a completely empty payload. While this should be prevented by the TypeScript types, we just want to advise customers that, if called without a user ID and organization ID, the resulting token will actually be an administrative token that's usable for any query in the REST API.

We don't anticipate many customers will be affected, but we recommend updating as a failsafe. As a reminder of how to implement the API, check out our guides on our server-side libraries and our authentication reference.

24 May, 2023

Message component #

The Message component is now available! It is a separate component that allows you to render thread messages individually. You can use it with our Thread API to put together unique custom experiences way beyond what we provide.

19 May, 2023

JS SDK 0.0.41 #

This version adds a threadID parameter to the navigate override function.

3 May, 2023

Avatar and Facepile components #

The Avatar and Facepile components are now available! They are lower level breakdowns of our existing Presence components, so you can use them with our APIs to build custom presence experiences.

3 May, 2023

Pass threadID to useCordAnnotationClickHandler callback #

In addition to id and location, we now supplythreadID in the object passed to the callback given to theuseCordAnnotationClickHandler hook. This could be used, for example, if a user clicks a message in the ThreadList which is no longer visible on the page. The threadID can be passed to a Thread component to render the comment independently.

2 May, 2023

New and updated JavaScript thread APIs #

We have a number of new APIs for getting information about threads in JavaScript. They complement our existing thread APIs. Altogether, we now offer the following thread functions:

28 April, 2023

Add showScreenshot to screenshot options in initialization call #

When initializing Cord, there is now an additional option within the screenshot options to allow you to hide screenshots in messages. This is useful if you want to disable viewing any pre-existing screenshots. (The existing captureWhen option lets you disable taking new screenshots.)

27 April, 2023

Add screenshotUrlOverride to ScreenshotConfig API #

A new screenshotUrlOverride property for ScreenshotConfig API allows to specify a URL to an image to use as screenshot, rather than having Cord create one.

19 April, 2023

Add auto-scrolling to ThreadList Component #

When using the ThreadList component highlightThreadId prop, if the thread id exists within the list then it will auto scroll to show you the thread. The ThreadList also auto scrolls when using the FloatingThreads component and setting the highlightThreadId to true.

19 April, 2023

JS SDK 0.0.36 #

This SDK version sets the stage for some naming changes which will make our function and React hook APIs more consistent. (Components names will be unaffected.) Old names are maintained for backwards-compatibility as well. Our documentation will be updated in the coming days to reflect the new names.

18 April, 2023

New prop highlightThreadId added to ThreadList Component #

The ThreadList component now highlights a thread if you pass the thread id into the prop highlightThreadId. If there is also a FloatingThreads component then the highlightThreadId prop will take priority over the behavior described here.

13 April, 2023

Update of placeholders in components #

TheThread component prop showPlaceholder will be set to trueby default. If set to true it will show a placeholder containing users from the org and a prompt to send a new message. If set to false the user will just see the composer if the thread has no messages.

The Sidebar and SidebarLauncher placeholders in the conversation view has been updated to show users from the org, and a composer to prompt the user to create a new message.

The components ThreadList, Inbox, InboxLauncher, NotificationList, and NotificationListLauncher will have updated placeholders that include an icon before the text prompt.

Cord sidebar and sidebar launcher component showing updated placeholder
Updated placeholder for sidebar components
Cord thread list component showing updated placeholder
Updated placeholder for thread list component
Cord inbox and inbox launcher component showing updated placeholder
Updated placeholder for inbox components
Cord notification list and notification list launcher component showing updated placeholder
Updated placeholder for notification components

6 April, 2023

Screenshot Options API #

All screenshot related configurations have been merged into a single ScreenshotOptions API.

  • blurScreenshots is now screenshotOptions.blur
  • showBlurredScreenshots is now screenshotOptions.showBlurred
  • enableScreenshotCapture is now screenshotOptions.captureWhen

Existing code using the old names will continue to work for the foreseeable future, but we recommend using the new names in any new code

5 April, 2023

Placeholders in components available in JS SDK 0.0.35 #

The components ThreadList, Inbox, InboxLauncher, NotificationList, and NotificationListLauncher now have a showPlaceholder prop set to true by default that will show a placeholder when there are no threads. If set to false the user will see an empty list.

TheThread component now has a showPlaceholder prop set to false by default temporarily. If set to true it will show a placeholder containing users from the org and a prompt to send a new message. If set to false the user will just see the composer if the thread has no messages.

Cord thread component showing the placeholder
Placeholder in thread component

4 April, 2023

Thread and Notification updates #

Thread component metadata attribute
The Thread component now has a metadata attribute. The attribute's value is a JSON object that can be used to store arbitrary data about the thread. For example, you could use the metadata attribute to store the URL of a task in your internal task tracker that relates to the thread.

Correspondingly, the ThreadList component now has a filter attribute. The attribute's value is a JSON object that can be used to filter the list of threads. Currently the only valid key is metadata. The value for a metadata entry should be an object representing the metadata key/value to filter on. For example, to show only threads where the metadata entry for the key "category" has a value of "sales", set the filter to { metadata: { category: "sales" } }.

Notification List and Notification List Launcher
The NotificationList component and NotificationListLauncher component are now available to keep users up to date with things directly related to them.

Notification Summary API and React hook
A new API is available to fetch information for a users' notifications. The Notification Summary API can be used to get the number of unread notifications for the current user. The data is updated in real-time.

3 April, 2023

Thread List onThreadClick event returns threadSummary #

The ThreadList component has a second threadSummary argument passed to its onThreadClick event in addition to threadID.

3 April, 2023

Thread Summary Javascript API and React hook #

A new API is available to fetch information for a thread ID. The Thread Summary API can be used to get the number of messages in a thread, the id`s of the participants, who is currently typing and more. All data is updated in real-time.

22 March, 2023

Default Thread List highlight behavior with Floating Threads #

The ThreadList component now highlights a thread if there is also a FloatingThreads component at the same location, and the corresponding thread is opened. This default behavior can be overridden by settinghighlightOpenFloatingThread=false on the ThreadList component.

15 March, 2023

Thread List onLoading and onRender props #

The ThreadList component now hasonLoading and onRender props that are useful for building a custom loading UI.

9 March, 2023

Thread List and Floating Threads props to show/hide screenshots #

The ThreadList component now has a new prop showScreenshotPreviewInMessage which is true by default. If the developer sets it to false, messages in the ThreadList will no longer show the screenshot preview element (also known as the Annotation Pill).

The FloatingThreads component gains a similar showScreenshotPreview prop which is false by default. If the developer sets it to true, users will see a screenshot preview elements (also known as the Annotation Pill) in the first message of Floating Threads.

3 March, 2023

Thread List mouseenter and mouseleave events #

The ThreadList component now emits events when users `mouseover` and `mouseleave` a thread.

20 February, 2023

Presence defaults to exact matching #

The JavaScript Presence API has changed to do exact matching on the provided location by default, with a partial_match argument to invoke partial matching.

31 January, 2023

JS SDK v0.0.30 #

The JavaScript SDK is updated to version 0.0.30. This version adds an experimental notifications launcher button component into the beta components. Documentation and more information will be provided later, as the component stabilizes.

27 January, 2023

JS SDK v0.0.29 #

This fixes an issue in our JavaScript SDK when used with server-side rendering.

23 January, 2023

JS SDK v0.0.28 #

The JavaScript SDK is updated to version 0.0.28. This version adds an experimental notifications component into thebeta components. Documentation and more information will be provided later, as the component stabilizes.

10 January, 2023

Thread autofocus #

The Thread component now has an autofocus property, used to focus its composer on render.

3 January, 2023

Thread List resolve and reopen events #

The ThreadList component now emits events when it is aware that a thread has been resolved or reopened. This allows developers to implement custom behavior using the threadID.

16 December, 2022

Screenshot targets and disable buttons #

Screenshot targets
Adding data-cord-screenshot-target="true" data attribute to an element will crop the screenshot to include that specific element only.

New Disabled property
New property available from SDK version 0.0.24. Used to disable the button of cord-inbox-launcher component andcord-floating-threads component.

23 November, 2022

CSS variables and Annotations #

New CSS Variables
New CSS variables to change the height and border of the following buttons: cord-sidebar-launcher component, cord-inbox-launcher component, cord-floating-threads component. See each component's page for more information.

Only allow annotations on some parts of a page
Adding data-cord-annotation-allowed="false" data attribute to an element prevents users from annotating it. Documented here.

Deprecated Annotation Mode
Deprecated annotationMode. Use data-cord-annotation-allowed instead.

14 October, 2022

Set New Thread Titles #

There is a new threadName property on the cord-sidebar component and thecord-thread component. This property sets the thread title for any new threads created by those components.

3 October, 2022

Disable SidebarLauncher button #

The SidebarLauncher component has a new optional disabled boolean attribute, which disables the button if the value provided is true.

27 September, 2022

Short User Names #

The user API has a new short_name field. If supplied, this will be used to refer to a user in most places (such as message headers) instead of the name field.

In addition, the first_name and last_name fields are being deprecated. They aren't currently used for any purpose and calls can omit them without any effect. They'll keep being accepted and stored for now, but eventually they'll stop being returned when fetching a user's details.

13 September, 2022

Annotation Mode #

We are adding a new option to the SDK to specify that annotations operate in targeted mode. In this mode, annotations can only be placed on designated targets. To use this, please pass annotationMode: 'custom_targets_only' when initializing the SDK or CordProvider.

7 September, 2022

✨ We have a changelog! #

This is the beginning of Cord's changelog. From now on, new features, SDK changes and improvements, and important bug fixes will appear here.


Not finding the answer you need? Ask our Developer Community

Ask Cordy