Video Javascript SDK Release Notes

v2.35.3 — October 2026

Fixed

  • Fixed an issue in AMR sessions where a Subscriber could emit a disconnected event without subsequently emitting a connected event after the connection recovered.
  • Fixed an issue where networkDegradationSource could report only bothOrUnclear in AMR-enabled Routed 1:1 sessions. Sender statistics activation is now retried after subscription completes when necessary, improving detection of whether degradation is local or remote.
  • Fixed an issue where video could remain disabled after audio fallback and an AMR media-mode transition, even after network conditions improved.
  • Fixed an issue where networkDegradationSource could incorrectly identify the source of network degradation in peer-to-peer (P2P) connections.
  • Fixed an issue where enabling a video filter, changing the publisher's preferred resolution, and then toggling video off and on produced an unexpected zoom effect.
  • Fixed a race condition that could cause an OpenTok:MediaProcessor:error error when publishVideo(true) was called while applyVideoFilter() was still in progress.
  • Improved Subscriber audio fallback state handling so that networkConditionChanged reports network conditions consistently while Subscriber Audio Fallback is active.
  • Reduced unnecessary audioAcquisitionProblem events during PeerConnection reconnection, disconnection, or failure.
  • Fixed duplicate promise declarations in the TypeScript definitions that could cause TypeScript errors TS2300 and TS2717 in projects using OpenTok.js 2.35.1 or 2.35.2.
  • Fixed an issue where Publisher Audio Fallback could remain active after calling publishVideo(false) followed immediately by publishVideo(true), preventing video from resuming when network conditions improved.
  • Fixed an issue where calling publishAudio(false) during Publisher Audio Fallback could cause Subscribers to receive unexpected videoEnabled or videoDisabled events with reason=publishVideo.
  • Fixed an issue where a Subscriber did not receive a connected event after AMR recovered from a disconnected P2P connection and transitioned back to Routed media mode.
  • Improved subscription reliability in Safari 26 by extending the timeout for gathering relay ICE candidates, reducing timeout errors 1501 and 1554.

v2.34.3 — September 2026

Fixed

  • Fixed an issue where retrieving WebRTC statistics could throw a TypeError on iOS WKWebView and Capacitor-wrapped apps, causing errors when collecting stats or running network tests.
  • Fixed an issue where the audioLocalCandidateType, videoLocalCandidateType, audioRemoteCandidateType, and videoRemoteCandidateType fields in the QoS stats could report incorrect values by using the last ICE candidate instead of the selected one.
  • Improved the automatic reconnection logic so that the reconnection timeout window is no longer reset on every transport reconnection, preventing the client from getting stuck in an infinite reconnection cycle.
  • Fixed an issue where video filters, background blur, and background replacement did not work on Safari 27 and iOS 27.

v2.35.2 — September 2026

Fixed

  • Fixed an issue where a black flicker could briefly appear on a subscribed stream immediately after subscribing during 1-on-1 calls on Safari.
  • Fixed an issue where retrieving WebRTC statistics could throw a TypeError on iOS WKWebView and Capacitor-wrapped apps, causing errors when collecting stats or running network tests.
  • Fixed an issue on Firefox where rapidly toggling video off and on (calling publishVideo(false) immediately followed by publishVideo(true)) could intermittently leave the published video disabled, showing a black frame until the next toggle.
  • Fixed an issue where the audioLocalCandidateType, videoLocalCandidateType, audioRemoteCandidateType, and videoRemoteCandidateType fields in the QoS stats could report incorrect values by using the last ICE candidate instead of the selected one.
  • Fixed an issue where a subscriber could fail to start when the browser's autoplay policy blocked video playback. The subscriber now times out the play attempt and continues with muted audio (which the user can unmute) instead of failing to subscribe.
  • Improved the automatic reconnection logic so that the reconnection timeout window is no longer reset on every transport reconnection, preventing the client from getting stuck in an infinite reconnection cycle.
  • Fixed an issue where video filters, background blur, and background replacement did not work on Safari 27 and iOS 27.

v2.35.1 — August 2026

Added

  • Promise support for async SDK methods (non-breaking). The JS SDK now supports modern async/await and promise-based patterns alongside the existing callback-based API. This change is fully backward compatible — all existing callback-based code continues to work without modification. As part of this work, the SDK gained finer control over errors in its internal flows and now surfaces error information more accurately. Starting with version 2.35.1, some functions report errors that were previously silent. These are not new failures — they are pre-existing errors that are now correctly propagated, so you may observe errors being reported in cases that previously went unnoticed. For more information, see this documentation.

  • Scalability Mode API. This version adds a new API that allows publishers to explicitly set the target scalability mode, giving developers fine-grained control over the number of spatial (resolution) and temporal (frame rate) layers used during encoding. This enables applications to better balance video quality, adaptability, and resource usage based on their specific needs. For more information, see this documentation. This is a beta feature.

  • Performed Android 17 validation. The Vonage Web SDK has been validated on Android 17, confirming smooth operation across Android mobile browsers and WebView applications.

Fixed

  • Fixed an issue where, in some cases, subscribing to a VP9 stream failed when the publisher had set videoContentHint to "detail" or "text".
  • Fixed a memory leak in audio processing across subscribe/unsubscribe and publish/unpublish cycles that in some cases could lead to unbounded heap growth and audio degradation over time.
  • Fixed an issue where in some cases retrying to publish after a failed attempt resulted in a false positive, causing the session.publish callback to report success when the publish had not actually succeeded.
  • Fixed an issue where in some cases relay ICE candidates were not included when establishing a connection, which could result in connectivity failures in networks that require TURN relay.
  • Fixed an issue where in some cases applying or clearing a video filter after changing the publisher's resolution produced an unexpected zoom effect.
  • Fixed an issue where OT.hasMediaProcessorSupport() incorrectly returned false on iOS 26 WKWebView due to Apple's frozen user agent string, blocking the use of Publisher.applyVideoFilter() on affected devices. Additionally, a new asynchronous variant OT.hasMediaProcessorSupport.promise() has been added, which performs a more thorough check of the browser's capabilities and is recommended over the static version for a more accurate and future-proof result.
  • Fixed an issue where end-to-end encryption did not work on Safari when the developer tools were opened.
  • Fixed an issue introduced in version 2.34.0 where applications enforcing a strict Content Security Policy (CSP) could experience violations when using background blur or background replacement on Safari and Firefox, due to the use of an inline web worker. The inline web worker has been removed, eliminating these CSP violations.
  • Fixed an issue in the JS SDK where calling publishVideo(false) after setPreferredResolution() or setPreferredFrameRate() would incorrectly return a constraint error on Firefox and Safari.

v2.34.2 — June 2026

Fixed

  • Fixed an issue where switching audio input devices (for example, connecting Bluetooth headphones) shortly after session start could trigger an audioAcquisitionProblem that caused complete audio loss for remote participants once the session transitioned to a routed topology.

  • Fixed an issue where applications running inside an Android Chrome WebView could not access the precall test or join a video conference.

  • Fixed a missing TypeScript definition: the constraints property was not included in the GetUserMediaProperties interface in ot.d.ts, causing a mismatch with the actual runtime behaviour of the SDK.