Issue with onNetworkQualityChange: Event fires only once (or never) despite network throttling (SDK 3.12.0)

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

  1. Join a meeting using Computer Audio.

  2. Open Chrome DevTools → Network tab.

  3. Change throttling from “No throttling” to “Slow 3G”.

  4. 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

  1. Is onNetworkQualityChange the correct event for real-time monitoring, or is it deprecated in favor of onAudioQos?

  2. 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!