Tested on iPhone 7, iOS 13.4 Open Mobile Safari and go to https://milen-yordanov.github.io/webrtc-ios13_4-enumerateDevices/ The first call to enumerateDevices() reports two devices: videoinput and audioinput. The second call to enumerateDevices() reports two devices: audioinput and audioinput. There is no videoinput! The code to reproduce it is as simple as: await navigator.mediaDevices.enumerateDevices() await navigator.mediaDevices.enumerateDevices() See: https://raw.githubusercontent.com/milen-yordanov/webrtc-ios13_4-enumerateDevices/master/index.html Older iOS 13.x and 12.x did not have this issue.
This is a dupe of bug 209417 which is now fixed in WebKit ToT. *** This bug has been marked as a duplicate of bug 209417 ***
There are a number of workarounds: - On iOS, all devices running Safari should have a camera. - Add a shim to enumerateDevices so as to buffer the result of enumerateDevices until capture is granted/devicechange event is fired.