Screen sharing not visible to participants in Web Client SDK 5.1.4

Context:

We previously utilized SDK version 3.7.0. Following recent Chromium updates affecting WebRTC, our users experienced the “black screen” issue. According to the official changelog, this was addressed in v5.1.4, so we performed the upgrade.

The Issue:

While v5.1.4 successfully resolves the WebRTC black screen bug, it has introduced a new critical issue: When a Host shares their screen, the content is not visible to Participants.

Host Status: Indicates they are successfully sharing.

Participant Status: Receives no video stream/feed for the shared screen (remains blank or shows previous state).

Regression: This functionality worked correctly in v3.7.0.

Code

SDK Setup (CDN):

<!-- Vendor dependencies -->
<script src="https://source.zoom.us/5.1.4/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/5.1.4/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/5.1.4/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/5.1.4/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/5.1.4/lib/vendor/lodash.min.js"></script>

<!-- SDK -->
<script src="https://source.zoom.us/zoom-meeting-5.1.4.min.js"></script>

SDK Initialization:

ZoomMtg.setZoomJSLib('https://source.zoom.us/5.1.4/lib', '/av');
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
ZoomMtg.i18n.load('en-US');

ZoomMtg.init({
    debug: false,
    disableInvite: true,
    defaultView: 'gallery',
    disableZoomLogo: true,
    leaveUrl: '<leave_url>',
    isSupportAV: true,
    meetingInfo: ['topic', 'host'],
    success: function() {
        ZoomMtg.showMeetingHeader({ show: false });
        ZoomMtg.showInviteFunction({ show: false });

        ZoomMtg.join({
            signature: '<jwt_signature>',       // HMAC-SHA256 JWT signed with SDK Secret
            meetingNumber: '<meeting_number>',
            userName: '<display_name>',
            userEmail: '<user_email>',
            passWord: '<meeting_password>',
            // zak token included for host only
            zak: '<zak_token>',                 // omitted for participants
            success: function() {},
            error: function(e) { console.log(e); }
        });
    },
    error: function(res) { console.log(res); }
});

Signature JWT payload (generated server-side)

{
  "appKey": "<SDK_CLIENT_ID>",
  "sdkKey": "<SDK_CLIENT_ID>",
  "mn": "<meeting_number>",
  "role": 0,
  "iat": <issued_at_epoch>,
  "exp": <iat + 21600>,
  "tokenExp": <iat + 21600>
}

Observed behaviour:

  • role: 1 (Host) → Screen share works, host sees “You are sharing”

  • role: 0 (Participant) → Receives no screen share stream; video area stays black/blank

  • Same code worked correctly on SDK v3.7.0