Released: 2026-03-16 Updated: 2026-03-30
Summary: Add support for Xcode and iOS 26, AI-friendly API documentation, and enhanced QoS statistics to ensure consistent performance tracking across platforms. It includes critical compatibility updates requiring an upgrade to version 2.2.10 or later for reliable command channel functionality, as well as new features like auto-loading multi-video streams and multi-language telephony support. Breaking changes further refine session management through updated error handling for cleanup functions and specific timing requirements for the annotation helper.
Important notes
- Video SDK versions prior to 2.2.10 will not be compatible with versions 2.5.5 or later for command channel, message exchange. It’s recommended that you upgrade all clients to new version 2.2.10 or later to ensure reliable command channel, message exchange, and consistent chat experience.
- AI-Friendly Documentation
- This SDK release ships AI-friendly API documentation in a structured, machine-readable format to help developers and AI-assisted workflows discover and understand the Zoom Video SDK public APIs faster. For more information, see Using AI assistants with the Video SDK.
- Upgrade Xcode to 26, the base SDK upgrade to iOS 26. You may need to remove the “-ld_classic” in other link flags from your project.
Breaking Changes
- Remove duplicate enum
Errors_Session_You_Have_No_ShareinZoomVideoSDKError. - Add new error code for
cleanupfunction to returnErrors_Cannot_Call_Cleanup_In_Sessionwhen calling it in session.- New enum in
ZoomVideoSDKError.
Errors_Cannot_Call_Cleanup_In_Session = 7700, - New enum in
createAnnotateHelpershould not be called immediately after sharing is started. It should only be called after receiving the share start callback, which indicates that the sharing session is ready.
Added
- Add the parameter in join session context to auto-loading multi-video stream in
ZoomVideoSDKSessionContext.
- Add parameter for automatically load multi stream, default is YES.
```objectivec
@property (nonatomic, assign) BOOL autoLoadMutliStream;
```
-
New user QoS statistics data to be consistent with web SDK.
- Add new interface get QOS status and audio session category in
ZoomVideoSDKDelegate.h.
(void)onQOSStatisticsReceived:(ZoomVideoSDKQOSStatistics * _Nonnull)statistics user:(ZoomVideoSDKUser * _Nullable)user; (void)onAudioError:(ZoomVideoSDKAudioHelper * _Nullable)helper errorType:(ZoomVideoSDKAudioErrorType)errorType detail:(NSInteger)detail;- Add new interface define QOS status in
ZoomVideoSDKUser.h.
typedef NS_ENUM(NSInteger, ZoomVideoSDKStatisticsDirection) { /** Sending media statistics */ ZoomVideoSDKStatisticsDirection_Send = 0, /** Receiving media statistics */ ZoomVideoSDKStatisticsDirection_Receive = 1, }; @interface ZoomVideoSDKQOSStatistics : NSObject @property (nonatomic, assign, readonly) ZoomVideoSDKStatisticsDirection direction; @property (nonatomic, assign, readonly) NSInteger timestamp; @property (nonatomic, copy, readonly) NSString * _Nullable codecName; @property (nonatomic, assign, readonly) NSInteger rtt; @property (nonatomic, assign, readonly) NSInteger jitter; @property (nonatomic, assign, readonly) NSInteger width; @property (nonatomic, assign, readonly) NSInteger height; @property (nonatomic, assign, readonly) NSInteger fps; @property (nonatomic, assign, readonly) NSInteger bps; @property (nonatomic, assign, readonly) NSInteger bytesTransferred; @property (nonatomic, assign, readonly) NSInteger packetsLost; @property (nonatomic, assign, readonly) NSInteger packetsTransferred; @property (nonatomic, assign, readonly) ZoomVideoSDKNetworkStatus networkLevel; @property (nonatomic, assign, readonly) ZoomVideoSDKDataType statisticsType; @property (nonatomic, assign, readonly) NSInteger avg_loss; @property (nonatomic, assign, readonly) NSInteger max_loss; @property (nonatomic, assign, readonly) NSInteger bandwidth; @end @interface ZoomVideoSDKQOSSendStatistics : ZoomVideoSDKQOSStatistics @property (nonatomic, assign, readonly) NSInteger frameWidthInput; @property (nonatomic, assign, readonly) NSInteger frameHeightInput; @property (nonatomic, assign, readonly) NSInteger frameRateInput; @property (nonatomic, assign, readonly) NSInteger bytesSent; @property (nonatomic, assign, readonly) NSInteger packetsSent; @property (nonatomic, assign, readonly) NSInteger totalPacketSendDelay; @property (nonatomic, assign, readonly) NSInteger totalEncodeTime; @property (nonatomic, assign, readonly) NSInteger framesEncoded; @end @interface ZoomVideoSDKQOSRecvStatistics : ZoomVideoSDKQOSStatistics @property (nonatomic, assign, readonly) NSInteger bytesReceived; @property (nonatomic, assign, readonly) NSInteger packetsReceived; @property (nonatomic, assign, readonly) NSInteger estimatedPlayoutTimestamp; @property (nonatomic, assign, readonly) NSInteger totalDecodeTime; @property (nonatomic, assign, readonly) NSInteger framesDecoded; @property (nonatomic, assign, readonly) NSInteger jitterBufferDelay; @property (nonatomic, assign, readonly) NSInteger jitterBufferEmittedCount; @end @interface ZoomVideoSDKVideoStatisticInfo : ZoomVideoSDKQOSStatistics @property (nonatomic, assign) ZoomVideoSDKNetworkStatus videoNetworkStatus DEPRECATED_MSG_ATTRIBUTE("Use networkLevel instead"); @end @interface ZoomVideoSDKShareStatisticInfo : ZoomVideoSDKQOSStatistics @property (nonatomic, assign) ZoomVideoSDKNetworkStatus shareNetworkStatus DEPRECATED_MSG_ATTRIBUTE("Use networkLevel instead"); @end - Add new interface get QOS status and audio session category in
-
Add support for multiple languages versions of telephony “welcome” message.
- Add new parameter in
ZoomVideoSDKInvitePhoneUserInfoinZoomVideoSDKPhoneHelper.h.
@property (nonatomic, copy) NSString * _Nullable languageCode; @property (nonatomic, copy) NSString * _Nullable variantId;- Add new parameter in
ZoomVideoSDKPhoneWelcomeMessageInfoinZoomVideoSDKPhoneHelper.h.
@interface ZoomVideoSDKPhoneWelcomeMessageInfo : NSObject @property (nonatomic, copy) NSString * _Nullable languageCode; @property (nonatomic, copy) NSString * _Nullable languageName; @property (nonatomic, copy) NSString * _Nullable variantId; @end- Add new interface in
ZoomVideoSDKPhoneHelper.h.
- (NSArray * _Nullable)getPhoneWelcomeMessageInfoList; - Add new parameter in