Changelog: Video SDK - Electron - 2.6.0

Released: 2026-06-23 Updated: 2026-07-01

Visit Changelog

Summary: Breaking changes include new session leave reasons for subsession transitions. Added a new two-step join flow (prepareJoin/commitJoin) for faster session connections, emoji reaction support with six reaction types, and expanded audio quality monitoring with detailed QoS statistics. Other additions include machine answer detection for phone invitations, failover status tracking, and enhanced external video source configuration options. Also includes API naming improvements for consistency and an increased command channel payload limit of 1024 bytes.

Breaking Changes

  • Joining or leaving a subsession now triggers the onSessionLeave callback with a new leave reason.

    const ZoomVideoSDKSessionLeaveReason = {
    // ...
      /** User leaves current session because joining a subsession. */
      ZoomVideoSDKSessionLeaveReason_JoinSubsession: 5,
      /** User leaves current session because returning to the main session. */
      ZoomVideoSDKSessionLeaveReason_ReturnToMainSession: 6,
    }
    

Added

  • Add new enum values in ZoomVideoSDKCallback.

    const ZoomVideoSDKCallback = {
        // ...
        /** Notification of the sharing process windows state has changed (e.g. all windows closed or minimized).
         * @note This callback is only triggered for the presenter, not for viewers.
         */
        onSharingProcessWindowsStateChanged: 68,
        // ...
        /** Notification of user's failover status changed. */
        onUserFailoverStatusChanged: 70,
        /** Notification when an emoji reaction is received from a participant. */
        onEmojiReactionReceived: 71,
    }
    
  • Add a new enum value in PhoneStatus.

    const PhoneStatus = {
        // ...
        /** Answered by machine. */
        PhoneStatus_AnsweredByMachine: 10
    }
    
  • Add new enums ZoomVideoSDKEmojiReactionType.

    const ZoomVideoSDKEmojiReactionType = {
        /** For initialization. */
        ZoomVideoSDKEmojiReactionType_None: 0,
        /** Clap reaction. */
        ZoomVideoSDKEmojiReactionType_Clap: 1,
        /** Thumbs up reaction. */
        ZoomVideoSDKEmojiReactionType_Thumbsup: 2,
        /** Heart reaction. */
        ZoomVideoSDKEmojiReactionType_Heart: 3,
        /** Tears of joy reaction. */
        ZoomVideoSDKEmojiReactionType_Joy: 4,
        /** Open mouth reaction. */
        ZoomVideoSDKEmojiReactionType_Openmouth: 5,
        /** Tada reaction. */
        ZoomVideoSDKEmojiReactionType_Tada: 6,
    }
    
  • Add a new bDetectMachine parameter to invitePhoneUser (lib/zoom_video_sdk_phone.js).

    /**
     * Invite the specified user to join the session by call out.
     * @method invitePhoneUser
    // ...
     * @param {Boolean} bDetectMachine Optional: true to enable machine answer detection. Otherwise, false.
    // ...
     */
    invitePhoneUser
    
  • Add a new isInFailover value to getUserInfo (lib/zoom_video_sdk_user_util.js).

    /** Whether the user is in failover. */
    userObj.isInFailover = message.getIsinfailover()
    
  • Add a new sendEmojiReaction interface (lib/zoom_video_sdk_emoji_reaction.js).

    /**
     * Send an emoji reaction to all participants in the session.
     * @method sendEmojiReaction
     * @param {Number} type The emoji reaction type to send. See {@link ZoomVideoSDKEmojiReactionType}.
     * @return {Number} If the function succeeds, the return value is ZoomVideoSDKErrors_Success. Otherwise, this function returns an error.
     */
    sendEmojiReaction
    
  • Add a pre-connection (two-step join) flow to speed up the actual session join.

    • New interfaces in the zoom_video_sdk module (lib/zoom_video_sdk.js).

      /**
       * Pre-join a session (two-step join). Call commitJoin to confirm or cancelPrepareJoin to cancel.
       * @method prepareJoin
       * @param {String} sessionName The name of the session to join. This is required.
       * @param {String} sessionPassword The password for the session. Optional.
       * @param {String} token The JWT token used for session authentication. This is required.
       * @param {String} username The display name of the user in the session. This is required.
       * @param {Boolean} localVideoOn Indicates whether the local video should be turned on by default. Optional. Default value is true.
       * @param {Boolean} connect Whether to connect the local audio when joining a session. Optional. Default is true.
       * @param {Boolean} mute Whether to mute the audio initially. Optional. Default is false.
       * @param {Boolean} preProcessor Optional.
       * @param {Boolean} externalVideoSource  Optional.
       * @param {Number} sessionIdleTimeoutMins The duration (in minutes) before an idle session times out. If set to 0, the session will never timeout automatically. Optional. Default is 40 minutes.
       * @param {Number} timeoutInterval Optional pre-join timeout in seconds. 0 means SDK default (30 seconds); valid non-zero values are 1 to 60.
       * @return {Number} ZoomVideoSDKErrors_Success on success; otherwise an error code.
       */
      prepareJoin
      
      /**
       * Confirm join after prepareJoin. Valid in the two-step join flow.
       * @method commitJoin
       * @return {Number} ZoomVideoSDKErrors_Success on success.
       */
      commitJoin
      
      /**
       * Cancel prepare join. Valid in the two-step join flow.
       * @method cancelPrepareJoin
       * @return {Number} ZoomVideoSDKErrors_Success on success.
       */
      cancelPrepareJoin
      
    • New error codes in ZoomVideoSDKErrors (lib/zoom_video_sdk_defines.js)

      /** Pre-join flow: not in prepare join flow. */
      ZoomVideoSDKErrors_Session_PreJoin_Not_In_Flow: 2017,
      /** Pre-join flow: already committed (user has confirmed). */
      ZoomVideoSDKErrors_Session_PreJoin_Already_Commit: 2018,
      /** Pre-join flow: timeout. */
      ZoomVideoSDKErrors_Session_PreJoin_Timeout: 2019,
      
  • Add a new externalVideoSourceDataFormat option for join and prepareJoin (lib/zoom_video_sdk.js).

    /**
     * @param {Number} externalVideoSourceDataFormat Optional. 0: I420 limited, 1: I420 full. Default 1.
     */
    
  • Provide audio QoS statistics data. New fields are added to the QOSStatistics object delivered by the onQOSStatisticsReceived callback.

    {
        // Send-only addition
        headerBytesSent,                // Total bytes of RTP headers (and padding) sent (send only)
        // Recv-only additions
        headerBytesReceived,            // Total bytes of RTP headers (and padding) received (receive only)
        packetsDiscarded,               // Non-FEC packets discarded by NetEQ (receive only, audio only)
        fecPacketsReceived,             // Total number of FEC packets received (receive only, audio only)
        fecPacketsDiscarded,            // FEC packets discarded by NetEQ (receive only, audio only)
        jitterBufferTargetDelay,        // Accumulated current target delay of the jitter buffer, in seconds (receive only, audio only)
        jitterBufferMinimumDelay,       // Accumulated minimum achievable jitter buffer delay, in seconds (receive only, audio only)
        totalSamplesReceived,           // Total audio samples generated by NetEQ (receive only, audio only)
        concealedSamples,               // Samples produced by concealment instead of real decode (receive only, audio only)
        silentConcealedSamples,         // Subset of concealedSamples that are silent (receive only, audio only)
        concealmentEvents,              // Number of concealment events (receive only, audio only)
        insertedSamplesForDeceleration, // Samples inserted to slow down playout, i.e. deceleration (receive only, audio only)
        removedSamplesForAcceleration,  // Samples removed to speed up playout, i.e. acceleration (receive only, audio only)
        totalSamplesDuration,           // Total duration of all audio samples received, in seconds (receive only, audio only)
        audioLevel,                     // Most recent audio level of the received stream, range [0.0, 1.0] (receive only, audio only)
        totalAudioEnergy                // Accumulated audio energy (receive only, audio only)
    }
    

Changed

  • Rename several SDK APIs for naming consistency.
    • Rename isMicOriginalInputEnable to isMicOriginalInputEnabled
    • Rename isHighFidelityMusicModeEnable to isHighFidelityMusicModeEnabled
    • Rename isEchoCancellationEnable to isEchoCancellationEnabled
    • Rename isStereoAudioEnable to isStereoAudioEnabled
  • Increase the command channel payload size limit to 1024.