Released: 2026-03-26 Updated: 2026-04-07
Summary: Adds support for Xcode and iOS 26, AI-friendly structured API documentation, and enhanced QoS statistics consistent with the Web SDK. Key updates include multi-language telephony support and auto-loading multi-video streams, as well as breaking changes that refine session cleanup and annotation helper usage. To ensure reliable command channel and message exchange functionality, users are advised to upgrade to version 2.2.10 or later for compatibility with version 2.5.5 and later.
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 macOS 26.
- Minimum supported macOS version has been updated to 10.15.
Breaking Changes
- Add new error code for
cleanupfunction to returnZMVideoSDKErrors_Cannot_Call_Cleanup_In_Sessionwhen calling it in session.- New enum in
ZMVideoSDKErrors.
typedef enum { ...... ZMVideoSDKErrors_Cannot_Call_Cleanup_In_Session = 7700, }ZMVideoSDKErrors; - 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.- Add new lib.
zUnifyWebViewApp.framework
zVideoAppPlugin.bundle
- Remove lib.
zUnifyWebView.framework
Added
-
New user QoS statistics data to be consistent with web SDK.
- Add new enum in
ZMVideoSDKDef.h.
typedef enum { ZMVideoSDKStatisticsDirection_Send = 0, ZMVideoSDKStatisticsDirection_Receive = 1 } ZMVideoSDKStatisticsDirection; - Add new enum in
-
Add new callback in
ZMVideoSDKDelegate.h.- (void)onQOSStatisticsReceived:(ZMVideoSDKQOSStatistics * _Nonnull)statistics user:(ZMVideoSDKUser * _Nullable)user; -
Add new interface in
ZMVideoSDKUserHelper.h.@interface ZMVideoSDKQOSStatistics : NSObject @property (nonatomic, assign, readonly) ZMVideoSDKStatisticsDirection direction; @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) ZMVideoSDKNetworkStatus networkLevel; @property (nonatomic, assign, readonly) ZMVideoSDKDataType statisticsType; @property (nonatomic, assign, readonly) NSInteger avg_loss; @property (nonatomic, assign, readonly) NSInteger max_loss; @property (nonatomic, assign, readonly) NSInteger bandwidth; @end @interface ZMVideoSDKQOSSendStatistics : ZMVideoSDKQOSStatistics @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 ZMVideoSDKQOSRecvStatistics : ZMVideoSDKQOSStatistics @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 -
Add support for multiple languages versions of telephony “welcome” message.
- New interface in
ZMVideoSDKPhoneHelper.
(NSArray* _Nullable)getPhoneWelcomeMessageInfoList;- New property in
ZMVideoSDKInvitePhoneUserInfo.
@property (nonatomic, copy, nullable) NSString* languageCode; @property (nonatomic, copy, nullable) NSString* variantId; - New interface in
Deprecated
-
Deprecated inteface in
ZMVideoSDKUserHelper.h.@property (nonatomic, assign, readonly) int bpf DEPRECATED_MSG_ATTRIBUTE("Use bps instead"); @property (nonatomic, assign, readonly) ZMVideoSDKNetworkStatus videoNetworkStatus DEPRECATED_MSG_ATTRIBUTE("Use networkLevel instead"); @property (nonatomic, assign, readonly) int bpf DEPRECATED_MSG_ATTRIBUTE("Use bps instead"); @property (nonatomic, assign, readonly) ZMVideoSDKNetworkStatus shareNetworkStatus DEPRECATED_MSG_ATTRIBUTE("Use networkLevel instead");
Fixed
- Fixed an issue that prevented subscribing to share canvas after the sender paused and resumed sharing.