https://a.storyblok.com/f/270183/1368x665/cf9a0b4cfb/25aug_dev-blog_client-sdk-v2351_1368x665.jpg

Video Client SDK 2.35.1 Release: Promises and Scalable Layer Selection

Published on August 20, 2026

Time to read: 4 minutes

Video API Client SDK 2.35.1 is now available, bringing native Promise support to the JavaScript SDK, a new scalable layer selection API, and platform updates across every supported SDK. 

The 2.35.1 release is available across JavaScript (Web), iOS, Android, Linux, and Windows.

For a complete list of changes, see the full release notes

Promise Support in the JavaScript SDK 

The JavaScript ecosystem has long standardized on promises and async/await, while the Video API JS SDK historically relied on callbacks. Version 2.35.1 closes that gap by adding native promise support across all major JS SDK functions, while keeping full backward compatibility with existing callback-based code. 

This is a non-breaking change. Every callback-style integration you have today continues to work exactly as before. You can migrate your codebase function-by-function to promises at your own pace or keep using callbacks. 

There are two patterns depending on the method type. 

Functions that previously returned void now accept an optional callback and return a Promise: 

// Callback style (still works) 
session.connect(token, function(error) { 
  if (error) { return handleError(error); } 
  session.publish(publisher, function(error) { 
    if (error) { return handleError(error); } 
  }); 
}); 
 
// Promise / async-await style (new in 2.35.1) 
try { 
  await session.connect(token); 
  await session.publish(publisher); 
} catch (error) { 
  handleError(error); 
} 

Functions that previously returned an object now expose a .promise() method: 

// Callback style (still works) 
const publisher = OT.initPublisher(targetElement, properties, function(error) { 
  if (error) { console.error(error); } 
}); 
 
// Promise / async-await style (new in 2.35.1) 
try { 
  const publisher = await OT.initPublisher.promise(targetElement, properties); 
} catch (error) { 
  console.error(error); 
}  

You can also run parallel operations cleanly with Promise.all()

const [sub1, sub2] = await Promise.all([ 
  session.subscribe.promise(stream1, el1), 
  session.subscribe.promise(stream2, el2), 
]); 

There are no plans currently to remove callback support. 

In the meantime, you can read the migration guide and find updated sample apps in the Vonage Video API Web Samples repository

Scalable Layer Selection API 

Version 2.35.1 introduces a new public API that lets developers programmatically query and dynamically configure Scalable Video Coding (SVC) layer settings for VP8 Simulcast and VP9 SVC streams. This API is available across all SDKs: JavaScript (Web), iOS, Android, Linux, and Windows. 

The default automatic layer selection works well for most scenarios, but some use cases call for explicit control. A low-bandwidth or battery-constrained device might benefit from reducing the number of active layers to lower encoding workload. A screensharing or content-heavy session might need to lock in a higher spatial layer for sharpness. This API makes those adjustments straightforward. 

Here is a quick example using the JavaScript SDK: 

// Force L1T3 (1 spatial layer, 3 temporal layers; keeps resolution, reduces frame rate) 
await publisher.setScalabilityMode('L1T3'); 

You can also combine the new API with existing publisher constraints: 

// 1) Initialize a publisher with 1080p 
const publisher = OT.initPublisher('publisher', { 
  resolution: '1920x1080', 
  frameRate: 30, 
  videoContentHint: 'detail', 
}); 
 
// 2) Adjust constraints after initialization 
await publisher.setPreferredResolution({ width: 1920, height: 1080 }); 
await publisher.setPreferredFrameRate(15); 
 
// 3) Optionally override the scalability mode 
await publisher.setScalabilityMode('L1T3'); 

The API is designed to handle VP8 Simulcast and VP9 SVC uniformly. 

For full documentation, see the Scalable Video guide

Platform Updates 

WebRTC M145 Upgrade for Native SDKs 

The iOS, Android, Linux, and Windows SDKs have been upgraded from WebRTC M121 to M145. This brings meaningful improvements in performance and quality, security and compliance, and standards interoperability, as well as updates to key dependencies including libvpx, Opus 1.6, BoringSSL, libyuv, and libsrtp. 

Android 17 Validation 

The Android SDK has been updated to compile and target API level 37, and all Android 17 behavior changes have been analyzed and validated: 

  • Local network access: WebRTC ICE uses raw UDP/TCP sockets, so the new ACCESS_LOCAL_NETWORK permission is not required. 

  • Background audio hardening: Internal audio focus handling has been updated from the deprecated AudioManager.requestAudioFocus() to the recommended AudioFocusRequest API

  • Certificate Transparency: All Vonage server endpoints are already compliant; no changes are needed in your app. 

The JS SDK has also been validated on Chrome/Chromium and WebView on Android 16 and 17. 

iOS SDK: CocoaPods to Swift Package Manager 

CocoaPods is moving to read-only status by the end of 2026, and the broader iOS ecosystem has shifted to Swift Package Manager (SPM) as Apple’s officially supported dependency manager. Starting with 2.35.1, the iOS SDK is distributed exclusively via SPM: 

For step-by-step instructions on switching from CocoaPods, see the migration guide

Getting Started 

Ready to upgrade? Here’s what you need to know. 

Installation for JavaScript/Web: 

npm install @vonage/client-sdk-video@2.35.1 

For native SDKs, visit our documentation for platform-specific installation instructions. 

Note: The React Native SDK follows each native SDK release after the necessary integration, testing, and validation work is complete. 

Conclusion 

Version 2.35.1 is a significant step forward for developer experience. Promise-based patterns in the JS SDK make asynchronous code cleaner and easier to maintain, the Scalable Layer Selection API unlocks fine-grained control over video codec behavior, and the WebRTC M145 upgrade ensures the native SDKs stay current with modern security and performance standards. 

If you’re building rich video experiences, this release has something for you. 

Have a question or want to share what you're building?

Stay connected and keep up with the latest developer news, tips, and events.

Share:

https://a.storyblok.com/f/270183/400x400/20c99f31de/mateusz-sell.png
Mateusz SellProduct Manager

Mateusz is a Product Manager on the Vonage Video Team, where he is responsible for the core platform. He believes that great developer experience starts with software that is reliable and predictable, and he channels that conviction into every prioritization decision he makes. Outside of work, he enjoys cycling and board games.