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_elapsedis set to a negative value. - Fixed an
OverconstrainedErroron 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-warningis now logged, as this scenario can significantly reduce video frame rates. - Improved
networkStatecalculations by removingrecvPacketLoss, which could be misleading. - Added
instanceIdto 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_elapsedis set to a negative value. - Improved
networkStatecalculation by removingrecvPacketLossfrom the formula. - Added
instanceIdto 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
canReceivepermission 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-downloadandraw-tracks-recording-errorwebhooks now include aninstance_idto uniquely identify raw tracks recording sessions. - Fixed an issue to ensure the
instanceIdis correctly propagated for raw tracks recordings from the initial API call through to the final webhook event.
Telephony
dialin.readyWebhook: Introduced thedialin.readywebhook event, which notifies you when a room's SIP endpoint is ready to receive an inbound call.originField in Dial-Out Webhooks: Dial-out webhook events now include anoriginfield, 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.