> ## 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.

# April 30, 2025

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

## 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](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.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 audio `deviceId`.
* 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 removing `recvPacketLoss`, 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

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

### 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 removing `recvPacketLoss` from the formula.
* Added `instanceId` to webhooks for raw tracks recordings.
* Added performance logging for `enumerateDevices()` to help diagnose slow join times.

***

## daily-python

[View full release notes →](https://github.com/daily-co/daily-python/blob/main/CHANGELOG.md)

### 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()`, and `CallClient.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` and `raw-tracks-recording-error` webhooks now include an `instance_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 the `dialin.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 an `origin` 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.
