Issues with Zoom AppSDK Event Listeners and Retrieving Meeting Start Time via API

Issue 1: How to Properly Clean Up Event Listeners in Zoom AppSDK?

Description: I’m using the Zoom AppSDK and adding an event listener as follows:

zoomSdk.addEventListener("onParticipantChange", handleParticipantChange);

My issue is that when my component unmounts, I want to remove this listener . However, the following cleanup method does not seem to work:

zoomSdk.removeEventListener("onParticipantChange", handleParticipantChange);

Even after manually executing the removal, the event listener still seems to be active.

Code Snippet of handleParticipantChange :

const handleParticipantChange = (data) => {
    console.log("Participant change event triggered:", data);

    setParticipants((prevParticipants) => {
      const participantName = data.participants[0]["screenName"];
      const status = data.participants[0]["status"];

      // Handle participant leaving
      if (status === "leave") {
        return prevParticipants.filter((p) => p.name !== participantName);
      }

      // Handle participant joining
      if (status === "join") {
        // Check if participant already exists
        const exists = prevParticipants.some((p) => p.name === participantName);
        if (!exists) {
          return [...prevParticipants, { name: participantName, talkTime: "0%" }];
        }
      }
    });
};

Questions:

  1. What is the correct way to ensure removeEventListener properly cleans up the event listener?
  2. Could this be related to how the Zoom SDK handles event bindings internally?
  3. Are there any additional debugging steps or workarounds I should try?

Issue 2: How to Retrieve Meeting Start Time via Zoom API?

Description: I successfully called the Zoom API to retrieve meeting details, but the response does not include start_time , which is the key attribute I need to calculate elapsed meeting time.

After some investigation, I suspect this is because my app’s scopes do not include meeting:read:admin , but I also do not see an option to add it in my app’s scope settings.

Additionally, I found a response stating:

“The reason you don’t see start_time in the API response is that your meeting type is 4, which means it’s a personal meeting room (PMI) or an instant meeting. start_time is usually included only for scheduled meetings (type 2) or recurring meetings (type 3).”

Questions:

  1. Is this explanation correct?
  2. If so, is there an alternative way to retrieve the start time for an ongoing PMI/instant meeting?
  3. Is there any Zoom API endpoint that provides this information reliably?
  4. How can I confirm if my current scopes are preventing start_time from appearing in the response?

Additional Information:

I’ve attached a screenshot of my current scope settings for reference.