Kandy.js 3.0 is finally out of beta! After months of stabilization, we’re ready to call this version of the Kandy SDK done.


You can get the new SDK here:

Kandy.js 3.0 - Kandy Link
Kandy.js 3.0 - Kandy CPaaS
Kandy.js 3.0 - Kandy Anonymous Calls

Please have a look at our Quickstarts and our Reference Documentation to get you started.


Here is the changelog for this release.

3.0.0 - 2018-10-29

Important Changes

HTMLMediaElement.srcObject (KAA-965)

In this release we changed the way media streams are attached to media elements to adapt to upcoming changes in Chrome. This change is currently announced for Chrome M69. Applications using older versions of the SDK will need to be updated to include these changes prior to Chrome releasing this.

createKandy Renamed to kandy.create()

The function to instantiate the SDK has been renamed from createKandy() to Kandy.create(). Please update your applications accordingly.

Forcing Plan-B semantics

Google has announced their plans for removing Plan-B SDP semantics in the future. This plan is documented here. This version of the SDK forces the default of the SDP semantics to Plan-B. At the same time we are making changes to all of our WebRTC infrastructure to support Unified Plan. We’re excited to see this come to Chrome, but in the meantime, to protect yourself against browser changes in the future, it is recommended that you update to this version of the SDK. In a future update, when our infrastucture is ready, we will move fully to Unified Plan.


  • Added user’s locale to data returned in fetchSelfInfo(). KAA-787
  • Added new Authorization name (authname) to the Kandy connect method. KAA-606
  • Implemented originalRemoteParticipant field to call and callHistory for keeping track of the initial call “to” feat/KAA-959
  • Implemented the ability to set and get the custom parameters set on a call. See kandy.call.setCustomParameters and kandy.call.getCustomParameters. KAA-918
  • Implemented the ability to send the custom parameters set on a call. See kandy.call.sendCustomParameters. KAA-919
  • Added ability to answer slow start call with video KAA-858
  • Added functions getCache, setCache to callHistory plugin KAA-546
  • Added events for tracking cache changes
  • Added connectivity.method object to the connectivity configuration allowing server or client to be configured for connCheck responsibility. KAA-614
  • Added the ability to silence the remote audio for calls and audio bridges. KAA-1003
  • Added new API method under the user namespace: kandy.user.getAll. KAA-747
  • Added new API methods under the contacts namespace: kandy.contacts.fetch, kandy.contacts.get and kandy.contacts.getAll. KAA-747
  • Added the ability to set the video as “inactive” instead of “sendonly” when holding a call. KAA-1067
  • Added ability to turn off log grouping by configuration log: { disableGroup: true }
  • Force the default of sdpSemantics to ‘plan-b’ until our WebRTC gateway can support unified SDP plan. KAA-1063


  • Moved User Directory Search to the kandy.user namespace (previously on contacts). KAA-747
  • Renamed API function kandy.user.fetchDetails to kandy.user.fetchSelfInfo(). KAA-747


  • Removed an extra colon from the eventType CALL_HISTORY_CACHE_CHANGE KAA-546
  • Fixed the callHistory and presence plugins to work on both Link and CPaaS 1.5 platforms. KAA-947
  • Updated API documentation for ‘customParameters’ parameter. KAA-913
  • Fixed debug message falsely claiming calls may fail in Anonymous Call scenarios. KAA-934
  • Updated logs to output slightly less noise as part of a logged item.
  • Fixed and issue where Trickle ICE process is being initiated on video/stop start when Tickle ICE is disabled.
  • Fixed an issue where services subscription timeout would be compounded when services took a long time to subscribe.
  • Fixed a merge issue where changes for KAA-858 were overwritten. KAA-1065