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

View full release notes →

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 in dailyConfig.
  • Optimized background effects on Windows by disabling them when hardware acceleration is unavailable.
  • Updated internal dependencies to resolve security vulnerabilities.
  • Simplified recordings_bucket response in room() 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 for DailyRoomInfo.

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 in setInputDevicesAsync.

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 with avoidEval: true.
  • Updated minimum supported version to 0.64.0.

react-native-daily-js

View full release notes →

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 in room() 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

View full release notes →

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

View full release notes →

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

View full release notes →

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.