WebRTC Metrics

A comprehensive overview of WebRTC statistics, derived calculations, extracted features, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats

Back
clientenumeratedevicesdevicespermissions

enumerateDevices (feature)

Client-level feature counting how often the session enumerated media devices.

Description

Client-level feature, extracted per session into features_client.

enumerateDevicesCount records how many times navigator.mediaDevices.enumerateDevices() was called during the session. rtcstats-server derives it from the client trace.

Why it matters

A session that calls enumerateDevices a handful of times is normal: the app lists cameras and microphones for a device picker, then relists when the user opens settings. A count that runs into the dozens usually means something is off. It can be a device picker stuck in a re-render loop, a retry path hammering enumeration while it waits on a permission that never resolves, or code probing repeatedly for a device that is not there. Because the count is captured per session, an unusually high value is a cheap flag for that churn, and a population shift in the average often lines up with a UI change on the device-selection screen.

SQL example

Sessions with an unusually high enumeration count, last 7 days:

SELECT
  server.id,
  client.enumerate_devices_count
FROM "rtcstats-server" AS server
JOIN features_metadata AS metadata ON metadata.dump_id = server.id
JOIN features_client   AS client   ON client.dump_id   = metadata.id
WHERE server.created_at > NOW() - INTERVAL '7 days'
  AND client.enumerate_devices_count > 20
ORDER BY client.enumerate_devices_count DESC;

See also