April 30, 2025
Overview
We've shipped stability improvements across the board this month. Key fixes include meeting ejection logic, network state calculations, and slow join diagnostics. The Python SDK now supports custom audio tracks, and raw tracks recordings now include instance IDs in webhooks.
Complete release history for our client SDKs is available in our Github release notes:
daily-js
0.78.0
- Fixed ejection logic to prevent incorrect ejections or joins when a user's local clock is out of sync. ⚠️ Note: Participants can no longer join if
eject_after_elapsed
is set to a negative value. - Fixed an
OverconstrainedError
on Chrome that occurred when providing an invalid audiodeviceId
. - Fixed an issue where unhandled errors during Krisp initialization could cause problems when joining a call.
- Reverted a change that disabled background effects on Windows when software WebGL is in use. Instead, a
video-processor-warning
is now logged, as this scenario can significantly reduce video frame rates. - Improved
networkState
calculations by removingrecvPacketLoss
, which could be misleading. - Added
instanceId
to webhooks for raw tracks recordings. - Added performance logging for
enumerateDevices()
to help identify slow join times, especially on Firefox when the tab is not in focus. - Removed the beta feature warning from
testCallQuality()
.
react-native-daily-js
0.75.0
- Fixed ejection logic to prevent issues caused by mismatched local clock times. ⚠️ Note: Participants can no longer join if
eject_after_elapsed
is set to a negative value. - Improved
networkState
calculation by removingrecvPacketLoss
from the formula. - Added
instanceId
to webhooks for raw tracks recordings. - Added performance logging for
enumerateDevices()
to help diagnose slow join times.
daily-python
0.18.0
- Introduced support for creating, updating, and removing custom audio tracks. You can now use
CallClient.add_custom_audio_track()
,CallClient.update_custom_audio_track()
, andCallClient.remove_custom_audio_track()
for advanced audio manipulation. - Improved
canReceive
permission support to ensure track states ("off"
,offReasons
) update correctly when permissions are granted or revoked. - Audio and video renderer callbacks (
set_audio_renderer()
,set_video_renderer()
) now receive the audio or video source as the last argument. - Reduced "no subscription for consumer" and "Failed to close consumer" log messages from error to debug, as these often occur during normal participant disconnections.
Media Services
Recording
- Instance ID in Webhooks: The
recording.ready-to-download
andraw-tracks-recording-error
webhooks now include aninstance_id
to uniquely identify raw tracks recording sessions. - Fixed an issue to ensure the
instanceId
is correctly propagated for raw tracks recordings from the initial API call through to the final webhook event.
Telephony
dialin.ready
Webhook: Introduced thedialin.ready
webhook event, which notifies you when a room's SIP endpoint is ready to receive an inbound call.origin
Field in Dial-Out Webhooks: Dial-out webhook events now include anorigin
field, specifying the PSTN number or SIP URI that initiated the call.Default SIP Codec: Added a domain-level property to set default codecs for SIP/PSTN calls. Opus is now the default codec for all dial-in calls.
On-Demand SIP Endpoints: SIP endpoints for dial-out are now created on-demand when
startDialOut()
is called, improving resource efficiency and room creation reliability.Error Messaging: Enhanced error messages for dial-in/out configurations during room creation.