March 30, 2025
Overview
As we close out the first quarter, recent updates across the Daily ecosystem deliver major new features and bug fixes. We've introduced the canReceive
permission for fine-grained media control, revamped network statistics (networkState, networkStateReasons) while deprecating older metrics, enhanced telephony capabilities (caller ID, SIP stability, API improvements), refined recording composition, and fixed bugs across the platform.
Complete release history for our client SDKs is available in our Github release notes:
daily-js
0.77.0
Introduced canReceive
Permission
We extended the available permissions to include canReceive
, which allows meeting owners to control the media tracks of others in the session. This feature enables use cases like "warm transfers" (e.g., ensuring a customer doesn't hear an agent before the handoff is complete) and other scenarios requiring selective visibility or audibility within a call. See the participant permissions documentation for details.
Improved Network Quality Statistics
We introduced two new fields in the object returned by getNetworkStats()
to provide more accurate network quality data: networkState
and networkStateReasons
. These replace the deprecated threshold
and quality
fields, offering a more reliable assessment based on send/receive packet loss, round-trip time, and available outgoing bitrate.
Bug fixes and improvements
- Fixed
proxyUrl
support indailyConfig
. - Optimized background effects on Windows by disabling them when hardware acceleration is unavailable.
- Updated internal dependencies to resolve security vulnerabilities.
- Simplified
recordings_bucket
response inroom()
method for enhanced security.
0.76.0
Bug fixes and performance improvements
- Updated Krisp noise cancellation library to v2.2.1.
- Fixed switching back from custom video track to device track via
setInputDevicesAsync()
. - Fixed
iceTransportPolicy
configuration to correctly override domain defaults. - Added
enable_dialout
to TypeScript definitions forDailyRoomInfo
.
0.75.2
Bug fixes
- Fixed unnecessary video track re-acquisition during input settings updates.
0.75.1
Bug fixes
- Fixed video constraint preservation when changing devices.
- Removed console error for null
deviceId
insetInputDevicesAsync
.
0.75.0
Enhanced Participant Type for Dial-in/out
The participant
object now includes specific participantType
values to identify telephony participants: sip-dial-in
, sip-dial-out
, pstn-dial-in
, and pstn-dial-out
. This allows for clearer identification of how participants joined via SIP or PSTN dial-in/out.
Dynamic Input Track Constraints
Introduced support for dynamically customizing media track constraints during a call using updateInputSettings()
. This allows changing camera resolution, frame rate, or switching between front and rear cameras without rejoining. The previous constraint-setting methods (userMediaAudioConstraints
, userMediaVideoConstraints
, and setBandwidth
trackConstraints) are now deprecated.
Bug fixes and improvements
- Fixed track event reliability for rapid muting/unmuting and custom tracks.
- Fixed track event participant info on leave.
- Improved Krisp initialization error handling.
- Fixed
ondevicechange
undefined error on certain systems. - Updated Banuba SDK to eliminate need for
'unsafe-eval'
CSP directive withavoidEval: true
. - Updated minimum supported version to 0.64.0.
react-native-daily-js
0.74.0
Introduced canReceive
Permission
Added support for the new canReceive
permission for granular control over which media tracks participants receive. See the participant permissions documentation for details.
Improved Network Quality Statistics
Introduced networkState
and networkStateReasons
fields in getNetworkStats()
, replacing deprecated threshold
and quality
metrics.
Bug fixes and improvements
- Added caller ID support for SIP PSTN transfers in
sipCallTransfer()
. - Fixed
proxyUrl
support. - Updated dependencies for security fixes.
- Simplified
recordings_bucket
response inroom()
method.
0.73.0
Bug fixes
- Fixed switching from custom video track back to device track.
- Fixed
iceTransportPolicy
configuration override. - Added
enable_dialout
to TypeScript definitions.
0.72.1
Reverted Erroneous API Changes
Reverted unintended deprecation notices for updateInputSettings()
and dynamic track constraints to maintain React Native's existing device handling APIs.
0.72.0
Enhanced Participant Type for Dial-in/out
Added specific participantType
values for telephony participants: sip-dial-in
, sip-dial-out
, pstn-dial-in
, and pstn-dial-out
.
Added Audio-Only Raw Tracks Recording
Added raw-tracks-audio-only
streaming config for audio-only recording support.
Bug fixes
- Fixed track event reliability for muting and custom tracks.
- Updated internal REST APIs to use native utilities.
- Added participant info to
track-stopped
events on leave.
0.71.0
Bug fixes and improvements
- Added
sessionId
to dial-in events.
daily-android
0.30.0
Ignore Network Devices API
Introduced CallClient.GlobalConfig.setIgnoredNetworkDevices()
to exclude specific network interfaces (VPNs, virtual adapters) during ICE candidate gathering for improved connection reliability.
Bug fixes
- Fixed ICE server configuration application via
CallClient.setIceConfig()
.
0.29.0
Automatic Cloud Recording Start
Added support for automatically starting cloud recording on join when start_cloud_recording: true
is set in the meeting token.
Bug fixes and improvements
- Fixed reconnection with expired meeting tokens.
- Updated dependencies (ffmpeg, libav, libvpx) for security patches.
daily-ios
0.30.0
Bug fixes
- Fixed ICE server configuration application via
setIceConfig()
.
0.29.0
Automatic Cloud Recording Start
Added support for automatically starting cloud recording on join when start_cloud_recording: true
is set in the meeting token.
Bug fixes
- Fixed reconnection with expired meeting tokens.
daily-python
0.17.0
Improved Linux Compatibility
Recompiled against glibc 2.28 for broader Linux distribution support.
0.16.1
Bug fixes
- Fixed virtual speaker device selection.
0.16.0
Update canReceive
Permissions Support
Added support for modifying remote participant's canReceive
permission via update_remote_participants()
.
Bug fixes
- Fixed ICE server configuration application.
0.15.0
Automatic Cloud Recording Start
Added support for automatically starting cloud recording on join when start_cloud_recording: true
is set in the meeting token.
Bug fixes
- Fixed reconnection with expired meeting tokens.
Daily Prebuilt
Transcription Language Defaults
Transcription now defaults to the room/domain lang
configuration when started via Closed Captions, falling back to English if not configured.
Media Services
Recording and Live Streaming
New Features
- Scale Mode Overrides: Added
videoSettings.split.scaleModeOverrides
for individual participant scaling in split layout compositions. - Background Color Support: VCS render pipeline now supports custom background colors via
backgroundColor
parameter.
Bug fixes
- Fixed audio-only participant filtering in baseline compositions.
- Fixed instance ID handling for raw tracks recording.
Telephony
Enhanced Caller ID Control
Added callerId
support in sipCallTransfer()
for PSTN transfers with improved default caller ID selection logic.
API Improvements
- Domain dial-in configs endpoint now supports filtering by multiple phone numbers.
- Purchased phone numbers endpoint now includes pagination support.
- Room creation API provides more specific telephony provisioning error messages.
Bug fixes and improvements
- Improved SIP INVITE handling to prevent signaling state errors.
- Enhanced error messages for invalid call transfers.
- Fixed layout updates for disconnected SIP participants.
- Added comprehensive transfer guide documentation.
Transcription
Bug fixes
- Fixed race condition when stopping or updating transcription immediately after starting.