# Devices list update issue

**URL:** <https://devforum.zoom.us/t/devices-list-update-issue/134149>\
**Category:** Web\
**Created:** [June 18, 2025, 1:30pm UTC](https://devforum.zoom.us/t/devices-list-update-issue/134149 "2025-06-18T13:30:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pavlo1](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/pavlo1/32/69662_2.png) [@Pavlo1](https://devforum.zoom.us/u/Pavlo1)\
**Post date:** [June 18, 2025, 1:30pm UTC](https://devforum.zoom.us/t/devices-list-update-issue/134149/1 "2025-06-18T13:30:35Z")

</div>

**Description**  
It seems that the cameraList returned by stream.getCameraList does not update when the camera permission status changes to ‘granted’.

Steps to reproduce:

- start the call without granting any permissions
- change the camera permission to **granted**
- call **await navigator.mediaDevices.enumerateDevices()** and get actual list of available devices
- call **mediaStream.getCameraList()**, but get same empty list.

The same for already audio permissions granted.

Camera device id appears in list only after **stream.startVideo()**

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/b/3/b3b16053912d67b92199e850fc3357a027899172.jpeg)

Hope, screenshot help you.  
P.S other devices list does not update as well on changes status

**zoom/videosdk 2.1.10**

**Device:**

- Device: [Dell Inc. XPS 15 9520]
- OS: [Ubuntu 22.04.5 LTS]
- Browser: [Google Chrome Version 136.0.7103.59 (Official Build) (64-bit)]

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [June 19, 2025, 5:38am UTC](https://devforum.zoom.us/t/devices-list-update-issue/134149/2 "2025-06-19T05:38:00Z")

</div>

Hey @Pavlo1

Thanks for your feedback.

> - call **mediaStream.getCameraList()**, but get same empty list.

It’s by design. We will update the camera list after `startVideo` is called and camera permission is granted. We will improve this behavior in a future version.

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![freelancer.nak](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/freelancer.nak/32/40968_2.png) [@freelancer.nak](https://devforum.zoom.us/u/freelancer.nak)\
**Post date:** [June 21, 2025, 11:59am UTC](https://devforum.zoom.us/t/devices-list-update-issue/134149/3 "2025-06-21T11:59:16Z")

</div>

@Pavlo1 Hi,

You can handle this by combining device and permission listeners, and updating the lists after connection:

```auto
navigator.mediaDevices.ondevicechange = async () => {
  await updateDeviceLists();
};

async function bindPermissionListeners() {
  const camPerm = await navigator.permissions.query({ name: 'camera' });
  const micPerm = await navigator.permissions.query({ name: 'microphone' });

  camPerm.onchange = async () => {
    await updateDeviceLists();
  };

  micPerm.onchange = async () => {
    await updateDeviceLists();
  };
}

client.on('connection-change', (payload) => {
  if (payload.state === 'Connected') {
    setTimeout(() => {
      updateDeviceLists();
    }, 1000);
  }
});

async function updateDeviceLists() {
  const devices = await navigator.mediaDevices.enumerateDevices();
  console.log(devices);
  const stream = client.getMediaStream();
  console.log(await stream.getCameraList());
  console.log(await stream.getMicList());
  console.log(await stream.getSpeakerList());
}

bindPermissionListeners();
updateDeviceLists();

```

Upgrading to **Video SDK 2.2.0+** is also recommended.

Best,  
Naeem Ahmed

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [June 21, 2026, 11:59am UTC](https://devforum.zoom.us/t/devices-list-update-issue/134149/4 "2026-06-21T11:59:51Z")

</div>

Closed on June 21, 2026, 11:59am UTC

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
