Suggestions

close search
Speed up your development
Create a Fast Track

Add Messaging, Voice, and Authentication to your apps with Vonage Communications APIs

Visit the Vonage API Developer Portal

Release notes for the OpenTok.js library

Welcome to version 2.29 of the OpenTok.js library.

If you have any questions, Vonage Support is here to help.


Announcements
New features
Requirements
Known issues
Fixed issues
More information
How to report bugs

For details on the OpenTok.js API, see the OpenTok.js library reference.

Announcements

Safari versions 15.4 and 15.5 (which ship with iOS 15.4 and 15.5 and macOS 12.3 and 12.4) fix issues that affect apps that use OpenTok.js (in Safari). See this note.

OpenTok.js now includes beta support for Google Chrome for iOS and Firefox for iOS.

OpenTok.js version 2.16 was the last version to support the OpenTok Plugin for Internet Explorer. OpenTok.js version 2.16 was deprecated in May 2020 for the Standard environment and June 2020 for the Enterprise environment. Support for the OpenTok plugin for Internet Explorer was removed in OpenTok 2.17.

OpenTok.js fully supports Chromium-based versions of Microsoft Edge (versions 79+) for Windows and macOS.

Safari now supports the VP8 video codec, in addition to H.264. VP8 support is in Safari 12.1, which ships on macOS 10.14.4 and is also available for macOS 10.13.6 and 10.12.6. And it is available in the latest iOS 12.2 release. For information on video interoperability and other issues, see the Safari browser support page. For more information on video codecs, see this developer guide.

As of Chrome 72 and Opera 59, an extension is no longer needed for screen sharing. Chrome prompts the end user for access to a screen, window, or tab, as it would for access to the camera. In the current versions of Chrome, Firefox, and Opera, you no longer need to deploy a screen-sharing extension.

On macOS 10.15+ (Catalina), to publish a screen-sharing stream the user must grant the browser access to the screen in macOS System Preferences > Security & Privacy > Privacy > Screen Recording. Otherwise, the Publisher will dispatch an accessDenied event.

New Features in OpenTok.js 2.29

New Features in OpenTok.js 2.29.3 — March 2025

This release fixes some issues — see the list of fixed issues.

New Features in OpenTok.js 2.29.2 — February 2025

This release fixes some issues — see the list of fixed issues.

New Features in OpenTok.js 2.29.1 — February 2025

This version adds quality improvements for the background blur and background replacement APIs.

This release fixes some issues — see the list of fixed issues.

New Features in OpenTok.js 2.29.0 — January 2025

Added support for Single Peer Connection. To enable single peer connection, pass in a singlePeerConnection property of the options you pass into the OT.initSession() method and set it to true. When enabled, it reduces OS resource consumption, improves rate control, and in the case of mobile native devices, supports large sessions. See the Single Peer Connection documentation .

Added support for call quality change events. This version adds the qualityScoreChanged event, which the Subscriber object dispatches when there are changes in audio or video call quality.

We have extended the Publisher accessDenied event to be dispatched when the user revokes access to the camera or microphone after previously granting them. This was previously a beta feature.

Added support for audio input changed events. This version adds the audioInputDeviceChanged event, which the Publisher object dispatches when the audio input device changes. See this documentation. This was previously a beta feature.

Added support for central processing unit (CPU) usage events. This version adds the cpuPerformanceChanged event, which the Session object dispatches when there are changes in CPU usage. This was previously a beta feature.

Added support to disable audio input management. To disable audio input management, add the disableAudioInputDeviceManagement property to the options passed into the OT.initPublisher() method and set it to true. See the documentation. This was previously a beta feature.

Added support for publishVideo function callbacks. See the documentation. This was previously a beta feature.

This version adds support for the VP9 codec with Scalable Video Coding (SVC) in routed sessions. This is a beta feature.

Features added in previous versions

Show details.

Requirements

The OpenTok.js library is currently supported in:

Important: OpenTok.js version 2.16 was the last version to support the OpenTok Plugin for Internet Explorer. OpenTok.js version 2.16 was deprecated in May 2020 for the Standard environment and June 2020 for the Enterprise environment.

The OpenTok.js library uses port 443. Port 443 must be open on the client network.

Known issues

The following are known issues for this version of OpenTok.js:

On Windows computers with Intel Smart Sound Technology audio drivers installed, a Publisher object may not dispatch an audioInputDeviceChanged event when switching audio input devices. However, audio will still be routed correctly. We are working on a fix for this issue.

OpenTok 2.27 and later is not supported on Safari 14 and lower.

For iOS browser subscribers, in some cases, the audio level may be incorrect. We are working on a fix for this issue. This issue has been reported as a WebKit bug.

For iOS 17+ browser users, video flickers when device orientation is changed and with resizing of the video. This issue has been reported as a WebKit bug.

In Chromium browsers, closing the laptop lid while publishing causes the publisher to be destroyed. This issue is a result of a Chromium bug.

Emojis unexpectedly appear in videos in iOS 17 and macOS 14 (Sonoma). This is a result of the new Apple [Reactions](https://support.apple.com/en-us/105117) feature. At this time, there is no API or programmatic to turn this off. End-users must disable it during a video session. On macOS, click the green video camera icon in the Mac's menu bar and then deselect Reactions. On iOS and iPadOS, open Control Center (by swiping down from the top-right corner or bottom of the screen, depending on the device), tap Video Effects, and then tap Reactions to disable it.

For Firefox users on Android 13, video resolution may be incorrect when switching orientation. Rotating a device running Android 13 may not cause the video resolution to be properly updated. This issue is the result of a reported Mozilla regression. Note: there is a pull request to fix this issue.

In Safari 17.0 and Safari 17.1, video resolution setting ignored for screen-sharing video. The resulting resolution is always 640x360, regardless of the resolution set when initializing the Publisher. This issue has been reported as a WebKit bug. This issue is fixed in Safari version 17.2.

For users on iOS 17+, video is initially displayed as the wrong resolution in a video publisher, resulting in a visible flicker as the video resizes. This issue is the result of a reported Webkit regression.

On iOS 16.4+ when using the iCloud Private Relay feature on Safari, users may experience disconnects in relayed sessions. This has been reported as a WebKit bug.

On Safari, when calling the OT.initPublisher() method for initializing a screen-sharing publisher without a user gesture handler, you may receive an InvalidAccessError error. This is expected behavior for Safari.

In some cases, "MaxListenersExceededWarning" may be logged in the console. This shouldn't cause any problems. We are investigating this issue.

In some cases, when tab-sharing a Google Slides presentation, the video is letter-boxed when the publisher's aspect-ratio is 4:3. This issue is not present when screen-sharing the Google Slides presentation.

On Android 12 and 13, Chrome requires using the "Media Volume" to adjust the volume instead of the phone's volume slider. This issue has been reported as a Chromium bug.

On Android 13, Firefox microphone and camera permissions require a device restart. After you set the permissions in the browser, you need to restart the device for the permissions to take effect.

iOS Safari audio and video loss after incoming phone call. After an iOS device accepts an incoming phone call and returns to an OT session, the audio and video from the iOS device may be dropped. This has been reported here and here as WebKit bugs.

Audio degradation over time on iOS/iPadOS devices with Safari. The audio quality for streams published from Safari on iOS/iPadOS may degrade over time with a growing crackling/distortion sound. This issue has been reported as a WebKit bug.

Video can flicker for streams with the videoType set to "custom". This can happen if video content doesn't change much. Setting the content hint to text or detail mitigates the issue. See this developer guide topic and the documentation of the videoContentHint property the options you pass into the OT.initPublisher() method and the Publisher.setVideoContentHint() method. This issue has been reported as a Chromium bug.

The accessDialogOpened event may be erroneously dispatched. When calling the OT.getUserMedia() method, the accessDialogOpened event may be dispatched, even though no access dialog was shown.

For some mobile Firefox web users, device orientation may corrupt the publisher's video stream. See this Mozilla bug report.

Setting the frame rate does not work in Firefox on macOS when using the built-in FaceTime camera. Setting the frameRate option when calling OT.initPublisher() has no effect. This is the Mozilla bug report for the issue.

Setting the audio bitrate is not supported in streams published in Firefox. Setting the audioBitrate option of the OT.initPublisher() method has no effect in Firefox.

Echo cancellation disabled with stereo audio input in Chrome. Some browsers (such as Chome 73+) do not support echo cancellation for stereo audio (see this Chrome issue report).

In Chrome, publishing is not supported on http (insecure) pages (except for http://localhost). You must serve the page over https (secure). Note that for testing, you can also load a page from the local file system (from the file: URI scheme).

Desktop Safari displays videos upside down when using picture in picture mode. This issue only occurs when subscribing to a video stream published by an iOS Safari client in a routed session.

Fixed issues

Fixed in OpenTok.js 2.29.3

In some browsers, warnings were being logged in the console. We have fixed this issue.

In some cases, supported browsers were erroneously detected as incompatible. We have fixed this issue.

Fixed in OpenTok.js 2.29.2

Automatic reconnections occasionally failed in certain scenarios. We have fixed this issue.

We have fixed some security vulnerabilities.

Fixed in OpenTok.js 2.29.1

In some cases, when screensharing, the mediaStopped and streamDestroyed events were not dispatched. We have fixed this issue.

Fixed in OpenTok.js 2.29.0

In some cases, the Publisher accessDenied event was missing an error message. We have fixed this issue.

Fixed in previous versions

Show details.

More information

See the reference documentation for the OpenTok.js library.

To see sample code and to read more information on using the OpenTok.js library, see the OpenTok Tutorials and Examples page.

For documentation on the OpenTok server-side libraries, see the OpenTok server-side libraries page.

Also check out the OpenTok Help Center.

How to report bugs

We'd love to hear from you! If you have any issues or bugs, you can report them to us at our support page.