I am implementing the Web SDK (Client View) in a Next.js application. My goal is to monitor the user’s connection quality to alert them if their network becomes unstable.
I am trying to use the onNetworkQualityChange listener. However, I am facing an issue where the event triggers only once (usually upon joining, returning a specific status or -1) and then never triggers again, even if I simulate a bad connection using Chrome DevTools Network Throttling (e.g., switching to “Slow 3G”).
Environment
-
Zoom Web SDK version: 3.12.0 (Loaded via CDN script source)
-
Framework: Next.js 15.5.9
-
React: 19.1.0
-
Browser: Chrome (latest)
Implementation Details I am loading the SDK using the Next.js <Script> tag with strategy="afterInteractive".
Code Snippet This is how I registered the listener inside my component:
// Inside ZoomMtg.join success callback or useEffect
const Z = window.ZoomMtg;
console.log("Registering network listener..."); Z.inMeetingServiceListener("onNetworkQualityChange", (data) => { console.log("[Network Change Event]", data); // data.level is usually logged once, then silence. });
This only returns once:
{
level: -1
type: "downlink"
userId: 16819200
}
Steps to Reproduce
-
Join a meeting using Computer Audio.
-
Open Chrome DevTools → Network tab.
-
Change throttling from “No throttling” to “Slow 3G”.
-
Observe the console.
Expected Behavior I expect onNetworkQualityChange to fire continuously or at least whenever the network conditions drastically change (level dropping from 5 to 1).
Actual Behavior The event is either silent or fires a single time during initialization. It does not react to network throttling changes during the session.
Question
-
Is
onNetworkQualityChangethe correct event for real-time monitoring, or is it deprecated in favor ofonAudioQos? -
Does this event strictly require
SharedArrayBuffer(COOP/COEP) to function properly, or should it work in a fallback mode?
Any guidance would be appreciated. Thanks!