useDevices

useDevices(): Object

Returns information about a participant's media devices and their states, along with helper functions that wrap daily-js device-related methods. For more information about the different error states, check the camera-error reference.

Return type

Returns an object with the following properties:

NameTypeDescription
cameraErrorObject | nullStores the most recent error object that was emitted through the camera-error event
camerasObject[]An array of device objects that contains information about each camera
camStatestring'idle' | 'pending' | 'not-supported' | 'granted' | 'blocked' | 'in-use' | 'not-found' | 'constraints-invalid' | 'constraints-none-specified' | 'undefined-mediadevices' | 'unknown', indicates the general state of camera access
currentCamObject | undefinedReferences the selected device in the cameras array.
currentMicObject | undefinedReferences the selected device in the microphones array.
currentSpeakerObject | undefinedReferences the selected device in the speakers array.
hasCamErrorbooleantrue in case camState is one of 'blocked' | 'in-use' | 'not-found' | 'constraints-invalid' | 'constraints-none-specified' | 'undefined-mediadevices' | 'unknown'
hasMicErrorbooleantrue in case micState is one of 'blocked' | 'in-use' | 'not-found' | 'constraints-invalid' | 'constraints-none-specified' | 'undefined-mediadevices' | 'unknown'
microphonesObject[]An array of device objects that contains information about each microphone
micStatestring'idle' | 'pending' | 'not-supported' | 'granted' | 'blocked' | 'in-use' | 'not-found' | 'constraints-invalid' | 'constraints-none-specified' | 'undefined-mediadevices' | 'unknown', indicates the general state of microphone access
refreshDevicesFunctionRefreshes the list of devices using enumerateDevices()
setCameraFunctionSwitches to the camera with the specified deviceId. Calls setInputDevicesAsync()
setMicrophoneFunctionSwitches to the mic with the specified deviceId. Calls setInputDevicesAsync()
setSpeakerFunctionSwitches to the speaker with the specified deviceId. Calls setOutputDeviceAsync()
speakersObject[]An array of device objects that contains information about each speaker

About camState and micState

With 0.7.0 camState and micState have a new default value of "idle" (in previous versions of Daily React, this value was "pending"). Both states remain "idle" as long as no device access has been requested, which is the case for rooms configured with start_audio_off: true and start_video_off: true. Once device access is requested, camState and micState switch to "pending", as long as device access is pending. Once the user grants device access they will switch to "granted". In case the user blocked device access they switch to "blocked" accordingly. In case of an error the most representative error state will be applied.

Device object properties

NameTypeDescription
deviceObjectThe same device information returned from enumerateDevices()
selectedbooleantrue when this specific device is currently being used by getUserMedia()
statestring'granted' | 'in-use', 'granted' means the device is available, 'in-use' means the device is used by another app

Sample code