# Release Notes - JavaScript SDK See how the Sinch In-app Voice and Video JavaScript SDK for browsers is evolving and find out about new features and bug fixes. ## 2.39.6 - Feature: `CallClient.setAudioTrackConstraints` and `CallClient.setVideoTrackConstraints` are now also applied for ongoing calls. ## 2.38.6 - Feature: Add methods: `CallClient.setAudioTrackConstraints` and `CallClient.setVideoTrackConstraints` to configure track constraints (for example specify deviceId for audio/video input) applied when creating new calls. - Improve error messages thrown when Sinch client fails to start due to push related problem. ## 2.37.8 - Feature: Add warning events: `MissingMediaStream`, `HighRemoteInboundRtt`, `HighInboundPacketLoss`, `HighInboundJitter`, `ConstantOutboundAudioLevel`, `ConstantInboundAudioLevel`, `ZeroInboundAudioLevel`, `ZeroOutboundAudioLevel`. - Feature: Add call quality warning events. Implement `CallListener.onCallQualityWarningEvent` callback to be notified about call quality events. ## 2.36.16 - Change(backport): Use gzip encoding for sending the call report. ## 2.36.15 - Change: Improve handling of extending instance expiry. - Change: Unify `CallDetails.setupDuration` definition. It is defined as the duration between the call start and the `onCallProgressing` event indicating that the push notification was sent to the callee. If the notification was not yet sent or it is an inbound call this duration is `0`. - Change: `CallDetails.duration` now returns returns `0` (instead of `-1`) if the call has never established and ended. - Feature: Add `CallDetails.notifyingDuration`, `CallDetails.ringingDuration` and `CallDetails.connectingDuration` parameters. - Bugfix: Fix a bug that could cause SDK to crash when unexpected signalling message was received. - Bugfix: Fix a bug that could cause issuing `CallListener.onCallProgressing` for the callee. - Feature: Add `CallListener.onCallRinging`. It is invoked for the caller when the push notification is received by the callee. - Change `CallListener.onCallProgressing` invocation logic. It is now invoked for the caller, when Sinch issues the push notification to the callee. - Feature: Add `CallListener.onCallAnswered` callback. It is invoked for both caller and the callee when the callee answers the call. Note that it might take some time after this callback is invoked for media stream to connect (see `CallListener.onCallEstablished)`. - Feature: Change `CallListener.onCallEstablished` callback invocation logic. It is now triggered when the callee answered the call and media connection is established. This means both peers should be able to hear and talk to each other. ## 2.35.6 - Bugfix: Improvement of internal WebRTC resources cleanup process - Bugfix: Improvement of push payload ## 2.34.5 - Bugfix: Improvement of public documentation ## 2.33.4 - Feature: Restart client automatically when config changes. ## 2.32.33 - Feature: Add type declaration file ## 2.31.4 - Feature: Introduced compatibility with new signaling service - Bugfix: Add ICE candidates only after remoteDescription has been set, to avoid discarding ICE candidates ## 2.29.10 - Bugfix: Improve the way internal call reports are submitted by fixing a few incomplete details ## 2.28.14 - Feature: Not using UUID for call ids. ## 2.27.2 - Bugfix: Internal logging fixes ## 2.24.3 - Feature: CLI (Calling Line Identifier) allows setting of incoming caller to callee for in-app data to telephone calling based on purchased virtual voice number. ## 2.0.4 - New JavaScript SDK released ## NEW SDK for In-app Voice & Video Platform