Changelog: Video SDK - iOS - 2.5.5

Released: 2026-03-16 Updated: 2026-03-30

Visit Changelog

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_Share in ZoomVideoSDKError.
  • Add new error code for cleanupfunction to return Errors_Cannot_Call_Cleanup_In_Session when calling it in session.
    • New enum in ZoomVideoSDKError.
    Errors_Cannot_Call_Cleanup_In_Session = 7700,
    
  • createAnnotateHelper should 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 support for multiple languages versions of telephony “welcome” message.

    • Add new parameter in ZoomVideoSDKInvitePhoneUserInfoin ZoomVideoSDKPhoneHelper.h.
    @property (nonatomic, copy) NSString     * _Nullable languageCode;
    @property (nonatomic, copy) NSString     * _Nullable variantId;
    
    • Add new parameter in ZoomVideoSDKPhoneWelcomeMessageInfo in ZoomVideoSDKPhoneHelper.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;