OpenTok.js

The OpenTok.js library lets you use Vonage Video API-powered video sessions on the web.

This page covers the following topics:

Important notes:

Chrome M136 on Windows – audio device detection issue We are aware of a Chrome M136 issue on Windows where the browser may intermittently respond slowly or fail when retrieving audio device information. This is a known issue and has been addressed in Chrome version 137.0.7150.0, with the fix also merged into an upcoming patch of Chrome 136 expected to be released shortly. In the meantime, if you encounter this issue, we recommend either rolling back to Chrome 135 and pinning it, or using an alternate browser. Please contact support if you need help implementing a workaround.

Issues fixed in Safari 15.4 and 15.5. Safari versions 15.4 and 15.5 (which ship with iOS 15.4 and 15.5 and macOS 12.3 and 12.4) fix the following issues, which could affect apps that use OpenTok.js (in Safari):

  • Audio issues when using certain models of Bluetooth headsets. On certain models of Bluetooth headsets, audio could drop out. This WebKit bug is fixed in Safari 15.4.
  • Echo issues when switching microphones in macOS Safari. Switching the microphone used by a publisher could result in an echo of the publisher's audio. The echo did not appear on the subscriber's side. This WebKit bug is fixed in Safari 15.5.
  • Critical bug publishing H.264 video in routed sessions in iOS 15.1. In iOS 15.1, publishing H.264 video in routed sessions would fail. This WebKit bug was fixed in Safari 15.4.
  • Low audio volume is iOS Safari. This WebKit bug is fixed in Safari 15.4.

End-to-end encryption — In OpenTok.js 2.27.0, end-to-end encryption will not work with clients using an earlier version of OpenTok.js. When you upgrade your app to use OpenTok.js 2.27.0+, make sure all clients are using OpenTok.js 2.27.0+ if the app uses end-to-end encryption..

Overview

All applications that use the Vonage Video API are composed of two parts:

  • The client side, which uses the OpenTok client SDKs and runs in a user’s browser or mobile app
  • The server side, which uses the OpenTok server SDKs and runs on your server to pass authentication information to the client

The client SDK for building web-based applications that use the Vonage Video API is OpenTok.js. This JavaScript library provides most of the core functionality for your app, including:

  • Connecting to a session
  • Publishing streams to a session
  • Subscribing to streams in a session

Client SDKs are also available for iOS and Android. All OpenTok client SDKs can interact with one another. You can learn more about the basics of OpenTok clients, servers, sessions and more on our Video API Basics page.

The current version of the OpenTok.js library can interoperate with OpenTok apps written with version 2.32+ of the OpenTok client SDKs:

Building with OpenTok.js

The best way to learn how to use the OpenTok.js library is to follow our Basic Video Chat tutorial for web:

View tutorial

Once you understand the basics of building with OpenTok.js, you can get more detailed information and learn how to customize your application with our Developer Guides. To investigate specific API classes and methods, you can review the OpenTok.js Reference.

Loading OpenTok.js

To load OpenTok.js in your web page, add the following script tag:

<script src="https://static.opentok.com/v2/js/opentok.min.js"></script>  

Installation via GitHub Packages

In addition to installing from the npm registry, the Client SDK packages are also available through GitHub Packages' NPM registry. This provides an alternative distribution channel for enterprise environments that require GitHub-based package management.

Available Packages

The following package is published to GitHub Packages:

Setup Instructions

To install packages from GitHub Packages' NPM registry, you need to configure npm to authenticate with GitHub:

1. Create a GitHub Personal Access Token (PAT)

Generate a personal access token with read:packages scope from your GitHub account settings.

2. Configure your .npmrc file

Add the following configuration to your project's .npmrc file or your user-level ~/.npmrc file:

Replace YOUR_GITHUB_TOKEN with your GitHub personal access token.

3. Install the package

Once configured, you can install the package using the standard npm install command:

Note on Package Availability

Both the traditional npm registry and GitHub Packages registry are kept in sync. You can choose either distribution method based on your organization's package management preferences. The traditional npm installation method (via npm install @opentok/client from the default registry) remains fully supported and requires no additional configuration.

For more information about working with GitHub Packages' NPM registry, see the GitHub Packages documentation.

Browser support

The OpenTok.js library is currently supported in:

  • Google Chrome (latest release version)
  • Google Chrome for Android (latest release version)
  • Google Chrome for iOS (latest release version)
  • Firefox (latest release version)
  • Firefox for Android (latest release version)
  • Beta support for Firefox for iOS (latest release version)
  • Microsoft Edge versions 79+ for Windows and macOS (Chromium-based versions of Edge)
  • Safari on macOS and iOS (latest release version). For information on video interoperability and other issues, see the Safari browser support page.
  • Opera (latest release of desktop version only)
  • Electron (latest release version)
  • Samsung Internet (latest release version)
  • WebView (android.webkit.WebView) Android API level 36+
  • WebView (wkwebview) iOS 18.6+

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.

System requirements

For reliable video streaming in modern browsers, ensure your device meets these recommended specs:

  • CPU: A recent dual-core processor; a quad-core (e.g., Intel Core i5 / Ryzen 5) or better for 1080p or heavy multitasking.
  • GPU: Modern integrated graphics (Intel UHD/Iris Xe or AMD Radeon or Nvidia Graphics) for 1080p; hardware decoding support for video coding is strongly recommended.
  • RAM: At least 8 GB for everyday streaming; 16 GB recommended if you keep many tabs or apps open.
  • Storage: SSD preferred for fast loading and system responsiveness.
  • Network: Reliable internet connectivity; works over Wi‑Fi, Ethernet, or cellular.
  • Other: Hardware acceleration should be enabled in the browser for optimal performance.

These recommendations ensure stable playback, lower CPU usage, and smooth performance when streaming video.

OpenTok version numbers

You can include the OpenTok.js library in your web page using a <script> tag:

<script src="https://static.opentok.com/v2/js/opentok.min.js"></script>  

The OpenTok.js version number consists of three parts:

  • The major version number — This number (the first number) is incremented when there is a new version that includes an API change that is not backward compatible.
  • The minor version number — This number (the second number) is incremented when there is a new version that adds new functionality.
  • The patch number — This number (the third) is incremented when there is a new version that fixes bugs or improves performance without adding new functionality.

For example, v2.4.0 is major version 2, minor version 4 (of major version 2), and revision 0 (of v2.4). As revision versions are released, changes are included in the root minor revision. For example, when v2.2.3 is released, its changes are included in v2.2.

To reference a specific revision, you can include the complete version number (such as "v2.4.0") in the src attribute. However, we recommend that you specify only the major version number. Vonage officially supports the current version of the library. If you are loading an older version, we ask that you upgrade to take advantage of the latest bug fixes and features in the OpenTok platform.

Important: Always use the libraries we provide unmodified. This ensures that you use the latest up-to-date, tested code. The Vonage Video API does not support the use of modified libraries.

For more information on specific versions of OpenTok.js, see the OpenTok release notes. To learn when new versions of OpenTok.js become available, go to the Video API - New Releases page and click the Follow button.