
Share:
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.
Video Client SDK 2.35.1 Release: Promises and Scalable Layer Selection
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_NETWORKpermission 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?
Subscribe to the Developer Newsletter
Follow us on X (formerly Twitter) for updates
Watch tutorials on our YouTube channel
Connect with us on the Vonage Developer page on LinkedIn
Help us improve our developer experience by filling out our Voice of the Developer Feedback
Stay connected and keep up with the latest developer news, tips, and events.
Share:
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.