Skip to main content
These events fire when network quality or connection state changes, when CPU load fluctuates, and when prejoin tests complete.

network-quality-change

Fires when the network quality assessment changes.
As of daily-js 0.77.0, threshold and quality are deprecated in favor of networkState and networkStateReasons. Version 0.77.0 also added the stats bundle to the event payload.
string
Always "network-quality-change".
string
The ID of the call client instance that emitted this event.
string
Current network assessment: 'good', 'low', or 'bad'.
string[]
Reasons contributing to a 'low' or 'bad' state. Possible values include 'sendPacketLoss' and 'recvPacketLoss'. Omittied if networkState is 'good'.
object
The latest network stats bundle. Shape matches the return value of getNetworkStats().
string
deprecated
Deprecated. Use networkState instead.
number
deprecated
Deprecated. Use networkState instead.

network-connection

Fires when a network connection is established or interrupted. Every call uses two connections simultaneously:
  • signaling — carries call setup and management. If interrupted and not reconnected within ~20 seconds, the participant is ejected from the call.
  • peer-to-peer or sfu — carries audio and video. A call uses one or the other, never both. All calls default to SFU topology, including 1:1 calls. See P2P vs SFU calls for details. Both reconnect automatically as long as signaling is alive.
string
Always "network-connection".
string
The ID of the call client instance that emitted this event.
string
The connection type: 'signaling', 'peer-to-peer', or 'sfu'.
string
The connection event: 'connected' or 'interrupted'.
string
Present for peer-to-peer connections. The remote peer’s session_id.
string
Present for sfu connections. The SFU server ID — useful for debugging and support reports.

cpu-load-change

The cpu-load-change event applies to video calls only.
Fires when the CPU load state changes. When cpuLoadState is 'high', consider lowering outgoing video quality via updateSendSettings(), requesting a lower simulcast layer via updateReceiveSettings(), or reducing video subscriptions in large calls.
string
Always "cpu-load-change".
string
The ID of the call client instance that emitted this event.
string
Current CPU load assessment: 'low' or 'high'.
string
The reason for the current state: 'none' (load is low), 'encode' (video encoding), 'decode' (video decoding), or 'scheduleDuration' (Daily code not completing within its scheduled interval).

test-completed

Fires when a prejoin test completes.
This event fires when a prejoin test method completes.
string
Always "test-completed".
string
The ID of the call client instance that emitted this event.
string
Which test completed: 'call-quality', 'p2p-call-quality', 'network-connectivity', or 'websocket-connectivity'.
object
The test results. Shape matches the return type of the corresponding test method.

See also