> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# March 30, 2025

> The latest updates to Daily's real-time audio and video APIs.

## 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](https://github.com/daily-co/daily-js/releases)
* [react-native-daily-js](https://github.com/daily-co/react-native-daily-js/releases)
* [daily-react](https://github.com/daily-co/daily-react/releases)
* [daily-ios](https://github.com/daily-co/daily-client-ios/blob/main/CHANGELOG.md)
* [daily-android](https://github.com/daily-co/daily-client-android/blob/main/CHANGELOG.md)
* [daily-python](https://github.com/daily-co/daily-python/blob/main/CHANGELOG.md)

***

## daily-js

[View full release notes →](https://github.com/daily-co/daily-js/releases)

### 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](/reference/daily-js/instance-methods/participants#param-permissions) for details.

#### Improved Network Quality Statistics

We introduced two new fields in the object returned by [`getNetworkStats()`](/reference/daily-js/instance-methods/get-network-stats) 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()`](/reference/daily-js/instance-methods/update-input-settings). 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 →](https://github.com/daily-co/react-native-daily-js/releases)

### 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](/reference/daily-js/instance-methods/participants#param-permissions) for details.

#### Improved Network Quality Statistics

Introduced `networkState` and `networkStateReasons` fields in [`getNetworkStats()`](/reference/react-native/instance-methods/get-network-stats), 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 →](https://github.com/daily-co/daily-client-android/blob/main/CHANGELOG.md)

### 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 →](https://github.com/daily-co/daily-client-ios/blob/main/CHANGELOG.md)

### 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 →](https://github.com/daily-co/daily-python/blob/main/CHANGELOG.md)

### 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](/docs/guides/features/dial-in-dial-out/transfers).

### Transcription

#### Bug fixes

* Fixed race condition when stopping or updating transcription immediately after starting.
