Skip to main content
Updates from the Daily engineering team across daily-js, Daily React, React Native, daily-python, telephony, and the REST API. Older entries live in the yearly archives.
EU region transcription, SIP video dial-out quality parameters, cross-SDK domain failover, native SDK stability fixes, and SIP 488 codec negotiation responses.

Overview

June brings automatic domain failover (daily.codailywebrtc.com/.net) across all client SDKs for improved connection resilience. daily-js 0.91.0 and react-native-daily-js 0.86.0 add support for specifying the EU region for transcription and new quality parameters (fps, width, height, videoBitrate) for SIP video dial-out. The native SDKs — daily-ios 0.38.0, daily-android 0.38.0, and daily-python 0.30.0 — ship important stability fixes, and daily-python adds custom screen-share audio tracks. On the server side, SIP interoperability improves with proper 488 Not Acceptable responses for incompatible codecs and custom SIP header passthrough for the Daily provider.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.91.0

  • Added support for specifying the EU region for transcription.
  • Added fps, width, height, and videoBitrate parameters to SIP video dial-out.
  • External-facing track names are now included in the list of reserved values that are disallowed as custom track names.
  • Added automatic client domain failover (daily.codailywebrtc.com/dailywebrtc.net) for improved connection resilience.
  • Updated dependencies to resolve vulnerabilities.

react-native-daily-js

View full release notes →

0.86.0

  • Added support for specifying the EU region for transcription.
  • Added fps, width, height, and videoBitrate parameters to SIP video dial-out.
  • Added support for AsyncStorage v2 and v3.
  • External-facing track names are now included in the list of reserved values that are disallowed as custom track names.
  • Added automatic client domain failover (daily.codailywebrtc.com/dailywebrtc.net) for improved connection resilience.
  • Updated dependencies to resolve vulnerabilities.

daily-ios

View full release notes →

0.38.0

  • Added CallClient.initAsync(), a static async factory that runs the blocking WebRTC/MediaSoup initialization off the main thread, keeping the UI responsive during CallClient creation.
  • Added automatic fallback to dailywebrtc.com and dailywebrtc.net when daily.co authoritative nameservers are unreachable, improving connection resilience.
  • Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting allowAdaptiveLayers to false in the camera sendSettings.
  • Fixed an issue where SDK resources were not properly cleaned up when all CallClient instances were released.
  • Fixed an intermittent crash when force-quitting and relaunching the app while the camera was active.
  • Fixed support for the cloud-audio-only recording type.
  • Improved connection performance with a new HTTP client featuring connection timeouts and TLS configuration reuse.

daily-android

View full release notes →

0.38.0

  • Added automatic fallback to dailywebrtc.com and dailywebrtc.net when daily.co authoritative nameservers are unreachable, improving connection resilience.
  • Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting allowAdaptiveLayers to false in the camera sendSettings.
  • Fixed a segmentation fault that could occur when a CallClient was released (or garbage collected) while still in a call.
  • Fixed support for the cloud-audio-only recording type.
  • Improved connection performance with a new HTTP client featuring connection timeouts and TLS configuration reuse.

daily-python

View full release notes →

0.30.0

  • Added automatic fallback to dailywebrtc.com and dailywebrtc.net when daily.co authoritative nameservers are unreachable, improving connection resilience.
  • Fixed a use-after-free that could cause a segmentation fault in the audio playout thread if a CallClient was released while still in a call with participant audio renderers registered.
  • Fixed a segmentation fault that could occur when a CallClient was released (or garbage collected) while still in a call.

0.29.1

  • Fixed an issue where a room configured with enable_recording set to cloud-audio-only was ignored when starting a recording, causing the recording to also capture video.
  • Fixed an issue where StartRecordingProperties none properties were serialized to null.

0.29.0

  • Added support for screenAudio input, making it possible to send a custom screen-share audio track alongside or independently of screenVideo.

Media Services

Telephony

  • Added server-side support for a new startDialIn() method to dynamically start a SIP dial-in endpoint. The client-side API will be included in an upcoming daily-js release.
  • SIP calls with incompatible codecs now receive a proper 488 Not Acceptable error response, and the rtpmap for the offered Opus codec has been fixed for better codec negotiation interoperability.
  • Custom SIP headers are now passed through for calls using the Daily SIP provider.
  • dialout-error events now include custom SIP headers.
  • Fixed a crash that could occur when a SIP session timed out after the session had already been terminated.

Recording

  • The recording-error event now includes the recordingId, making it easier to correlate errors with specific recordings.

Streaming

  • Fixed a VCS composition issue where pinned tracks that dropped from an explicit pin list were not evicted from the layout.

Other

  • Oldest supported daily-js version bumped to 0.85.0, with 0.86.0 approaching end-of-support.

REST API

Critical Firefox 149 fix, provider and sipCallId in telephony events, mtgSessionId in presence endpoints, and VCS simulator video mode.

Overview

May brings daily-js 0.90.0 and react-native-daily-js 0.85.0 with a critical fix for a Firefox 149 regression that prevented remote participant media from playing, and new provider and sipCallId fields across all dial-in and dial-out events for improved telephony observability. On the server side, presence endpoints now include mtgSessionId, and the VCS simulator gains video mode support along with a layer pinning fix.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.90.0

  • Added provider and sipCallId fields to all dialin-* and dialout-* events, making it easier to correlate telephony events with specific calls and providers.
  • ⚠️ Fixed a Firefox 149 regression that caused remote participant media not to play.
  • Fixed a corner case in iOS user-agent detection.
  • Updated dependencies to resolve vulnerabilities.

react-native-daily-js

View full release notes →

0.85.0

  • Added provider and sipCallId fields to all dialin-* and dialout-* events.
  • Updated dependencies to resolve vulnerabilities.

daily-python

View full release notes →

0.28.1

  • Fixed a segmentation fault that could occur after virtual microphone or speaker inputs or publishing updates.

Media Services

Streaming

  • Added video mode to the VCS simulator, allowing developers to test video layouts directly in the simulator.
  • Fixed a track add bug in VCS layer pinning.

REST API

  • Added mtgSessionId to the responses of GET /presence and GET /rooms/:name/presence.
daily-react 0.25.0 with multi-instance recording and streaming, daily-python 0.28.0 with screen share custom tracks, and SIP telephony improvements.

Overview

April brings daily-react 0.25.0 with support for multiple concurrent recording and live streaming instances, and daily-python 0.28.0 with screen share custom tracks and Adaptive Bitrate enabled by default for camera tracks. On the server side, SIP dial-in and dial-out events now include sipCallId and provider fields, Signalwire is selectable as a telephony provider, and VCS streaming gains a configurable label placement parameter along with a mic status indicator.Complete release history for our client SDKs is available in our Github release notes:

daily-react

View full release notes →

0.25.0

  • Added support for multiple concurrent recording and live streaming instances. useRecording() and useLiveStreaming() now accept an instanceId parameter for per-instance state. New useRecordingInstances() and useLiveStreamingInstances() hooks return all active instances, and new RecordingInstanceState and LiveStreamingInstanceState types are exported. Stopping or erroring one instance no longer clears state for others.
  • Added networkStatus to the return value of useNetwork().
  • Added support for the cloud-audio-only recording type.
  • The daily-react version is now reported through daily-js via the new aboutClient API, so it’s included in call logs regardless of which library creates the call instance.

daily-python

View full release notes →

0.28.0

  • Added support for screenVideo custom tracks. You can now send a custom screen share track by setting inputs.screenVideo.settings.customTrack.id.
  • Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting allow_adaptive_layers to False in the camera send_settings.
  • Fixed support for the cloud-audio-only recording type.
  • Fixed panics in signalling reconnect paths when room lookup returns no worker.

Daily Prebuilt

  • Tightened the iOS user-agent match to reject spoofed iOS substrings.
  • Fixed transcription language fallback so that an empty string falls back to the default language (switched from ?? to ||).

Media Services

Telephony

  • SIP dial-in and dial-out events now include sipCallId and provider fields, making it easier to correlate events with specific calls and providers.
  • Signalwire and Daily can now be selected as a telephony provider for dial-in and dial-out.
  • Standardized the provider value to lowercase signalwire in dial-in and dial-out events.
  • Added provider as a valid parameter for the startDialout API.
  • Added support for video track updates on SIP video calls.
  • Fixed screen share track addition for SIP video.
  • Added support for configuring a Cloudflare anycast IP address instead of the STUN server hostname.

Recording

  • Added a new enable_raw_tracks_event_json domain and room property to opt into JSON event output for raw-tracks recordings.
  • Added more WAV settings for raw-tracks transcoded mode.
  • Raw-tracks listings now verify S3 item ContentType to avoid including unexpected files.

Streaming

  • Added a new VCS parameter videoSettings.grid.labelPlacement for customizing participant label position in streaming layouts.
  • Added a mic status indicator and a highlight border inset to VCS layouts.
  • Fixed VCS participant label misindexing in audio-only layouts.
Smaller call-machine bundle (~2MB less), VCS layout animations, configurable max API keys, and daily-js 0.81.0 minimum version bump.

Overview

March includes significant performance improvements for daily-js and react-native-daily-js, with the initial call-machine bundle now ~2MB smaller through dynamic loading. Audio processor errors no longer automatically mute the microphone, and testCallQuality() reliability has been fixed. On the server side, VCS streaming layouts gain animation support, and a new max_api_keys domain property lets you limit API key creation per domain. The oldest supported daily-js version has been bumped to 0.81.0, with versions through 0.83.1 approaching end-of-support.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.89.1

  • Fixed an issue causing all testCallQuality() tests to fail.
  • Fixed remaining vulnerabilities in dependencies.

0.89.0

  • Reduced initial call-machine bundle download size by ~2MB. Larger portions are now dynamically loaded as-needed.
  • Audio processor errors no longer automatically mute the microphone.
  • Removed the client-side 3-hour limit for raw-tracks recordings. Limits are now handled server-side.
  • Fixed auto-syncing audio output device on Safari, where setSinkId requires a user gesture and was causing repeated errors.
  • Improved system idle detection to avoid stale reconnect retries after 5 minutes of inactivity. Calls will now leave cleanly in idle scenarios.
  • Breaking: If you self-host the call-machine-bundle using callObjectBundleUrlOverride, a new separate bundle is now required for Krisp noise cancellation. Contact help@daily.co for upgrade instructions.

react-native-daily-js

View full release notes →

0.84.1

  • Fixed remaining vulnerabilities in dependencies.

0.84.0

  • Reduced initial call-machine bundle download size by ~2MB with dynamic loading.
  • Added digitDurationMs option to sendDTMF() for configurable DTMF digit duration.
  • Removed the client-side 3-hour limit for raw-tracks recordings.
  • Improved system idle detection to avoid stale reconnect retries after 5 minutes of inactivity.
  • Breaking: If you self-host the call-machine-bundle using callObjectBundleUrlOverride, a new separate bundle is now required for Krisp noise cancellation. Contact help@daily.co for upgrade instructions.

Dashboard

  • Added a configurable max_api_keys domain property to set the maximum number of API keys allowed per domain.

Media Services

Telephony

  • Fixed video not working with Linphone SIP client.
  • Improved STUN server fallback during SDP negotiation retry.
  • Fixed hung media workers caused by unresolved SIP transport promises.
  • Improved handling of active SIP sessions during meeting moves.
  • Broadcast app messages are no longer sent to participants in the knocking (waiting room) state.
  • Oldest supported daily-js version bumped to 0.81.0. Versions through 0.83.1 are approaching end-of-support.

Streaming

  • The new VCS pipeline is now the default for new customers. In April, we are transitioning existing customers to the new pipeline; the legacy pipeline will be EOLed later this summer. In the meantime, you can switch between the new and legacy pipelines with the enable_legacy_compositor flag.
  • Added a layout animation system for VCS (Video Compositing Service) streaming layouts.
  • Fixed RTMP URL handling for streaming destinations.
  • Improved jitter buffer latency and added video stall detection for RTMP streaming.

Recording

  • Added event-json as a valid dataOutputs option for recordings via the REST API. We’re considering making event-json the default output format and invite feedback from the community. Note that this would add an additional event-json file to the existing S3 folder and may break downstream workflows that assume only media files are present.

REST API

  • Added validation for the cloud-audio-only room and meeting token property.
  • New max_api_keys domain property to configure the maximum number of API keys per domain.
DTMF tone support for SIP calls, raw-tracks recording improvements, Krisp SDK lazy loading, and webhook event ID timestamps.

Overview

February brings DTMF tone support for SIP calls, improved raw-tracks recording reliability during meeting moves, and a Krisp SDK performance optimization that splits noise cancellation into a separate bundle for faster page loads. Audio processor errors no longer mute the microphone, and the 3-hour limitation for raw-tracks recordings has been removed.Complete release history for our client SDKs is available in our Github release notes:

Daily Prebuilt

  • Audio processor error handling updated to no longer mute the microphone on Krisp errors.
  • Fixed a mute state sync race condition on the first call of the day.
  • Krisp SDK is now loaded as a separate bundle for faster initial page load.
  • Added a user-facing notification when the Krisp SDK fails to load.
  • Updated noise cancellation overload translations.

Dashboard

  • Improved dashboard loading speed.
  • Removed references to the deprecated owner_only_broadcast property.

Media Services

Telephony

  • Added DTMF (telephone-event) support for sending and receiving DTMF tones during SIP calls.
  • Added a setting to keep rooms open without WebRTC participants (for SIP-only scenarios).
  • Fixed the call transfer initiated event for SIP REFER.
  • Fixed dial-in events to be preserved when no peer is in the room yet.

Recording

  • Removed the 3-hour limitation for raw-tracks recordings.
  • Improved raw-tracks recording reliability during meeting moves when the SFU connection changes.
  • Added user_name and user_id to raw-tracks recording events.
  • Recording finished webhooks are now reliably sent from the upload finisher for improved delivery.

Webhooks

  • Webhook event IDs now include timestamps, matching the format shown in the documentation.

Transcription

  • Added model parameters to the transcription info field.

REST API

  • Fixed the /domains/member endpoint to return all non-revoked API tokens.
Recording dataOutputs for transcripts and chat, cloud-audio-only recording, laptop lid session handling, CPU load detection improvements, and Kamailio call transfer support.

Overview

January is a feature-rich month with new recording capabilities including dataOutputs for recording-synchronized transcripts, chat messages, and event logs, plus a new cloud-audio-only recording type. We’ve also improved session handling for laptop lid closures, refined CPU load detection, and shipped call transfer support on our new telephony infrastructure.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.87.0

  • Fixed an issue in Chrome where the Compute Pressure API did not work inside an iframe due to permissions policy restrictions.

0.86.0

  • Introduced a new dataOutputs option in startRecording() to capture auxiliary data alongside the recording media. Three output types are supported:
    • event-json — a JSON file describing recording session events (media file starts, track updates, etc.)
    • transcript-webvtt — a WebVTT file with transcription events, timecode-aligned with the recording media (requires an active live transcription)
    • chat-webvtt — a WebVTT file with chat messages, timecode-aligned with the recording media
    Data output files are included in the recording download link and written to your custom S3 bucket when configured. Note: these outputs capture events, they do not start services.
  • Added support for a new cloud-audio-only recording type. This produces m4a files with the audio/mp4 content type. It can be used alongside other recording types and does not share an instance ID with RTMP/HLS streaming.
  • Fixed an issue where sessions would attempt to reconnect after long periods of laptop lid closure. Sessions now automatically disconnect after 5 minutes of detected inactivity.
  • Fixed uncaught errors in join() and startCamera() when no room URL is provided or the URL is invalid. These now properly throw an error and leave meetingState() in "left-meeting".
  • Improved the cpu-load-change event by requiring multiple consecutive high CPU readings before reporting high load and by refining global decode time calculation to exclude videos with empty frame metrics.
  • Added compute pressure state to the getCpuLoadStats() API when supported by the browser.
  • Added max_app_message_size to DailyRoomInfo types.

react-native-daily-js

View full release notes →

0.83.0

  • Introduced a new dataOutputs option in startRecording() to capture auxiliary data alongside the recording media. Supports event-json, transcript-webvtt, and chat-webvtt output types.
  • Added support for the new cloud-audio-only recording type.
  • Fixed an issue where sessions would attempt to reconnect after long periods of laptop lid closure.
  • Fixed uncaught errors in join() and startCamera() when no room URL is provided or the URL is invalid.
  • Improved the cpu-load-change event accuracy.
  • Added max_app_message_size to DailyRoomInfo types.
  • Added missing type definitions for streaming and recordings.

Daily Prebuilt

  • Removed automatic camera turn-off behavior on bad network conditions.

Dashboard

  • Updated Cloud recording storage tooltip.
  • Removed HIPAA 30-day trial wording.

Media Services

Telephony

  • Added call transfer support on the new Kamailio-based telephony infrastructure.
  • Added support for numeric SIP usernames.

Recording

  • Added server-side support for dataOutputs recording option and the cloud-audio-only recording type.
  • Fixed download link file extensions for recordings stored in custom S3 buckets.
Recording-synchronized transcripts, gapless audio for raw-tracks, CPU warning notifications, and Prebuilt session resume and background effects fixes.

Overview

December brings recording-synchronized transcripts, a new gapless audio pipeline for raw-tracks recording, and configurable CPU warning notifications in Daily Prebuilt. We’ve also improved session resume reliability after laptop lid closures and added automatic detection to disable background effects on underpowered hardware.Complete release history for our client SDKs is available in our Github release notes:

Daily Prebuilt

  • Added a new enable_cpu_warning_notifications domain and room property to control whether CPU warning notifications are shown to users.
  • Background effects are now automatically disabled when a WebGL software renderer is detected, preventing poor performance on underpowered hardware.
  • Fixed poor network state handling.
  • Fixed session resume issues that could occur after closing and reopening laptop lids.

Dashboard

  • Added configuration for the new enable_cpu_warning_notifications property.
  • Updated settings deletion copy.

Media Services

Recording

  • Added support for recording-synchronized transcripts via dataOutputs in startRecording().
  • New transcoded gapless audio pipeline for raw-tracks recording, producing continuous audio files without gaps.
  • Raw-tracks recording now works with the force_audio_only_recording flag.
  • Fixed file extension for WAV files in transcoded gapless audio mode.
  • Fixed a missing room state update during meeting move restore that could cause recording state inconsistencies.

Transcription

  • Deepgram model improvement program opt-out is now enabled by default for improved data privacy.
SIP codec negotiation, call transfer fixes, recording enhancements, and Prebuilt breakout room and screen sharing fixes.

Overview

November is a server-focused release with telephony improvements including SIP codec negotiation and call transfer reliability fixes, recording enhancements, and Daily Prebuilt bug fixes for breakout rooms and screen sharing on Chrome.Complete release history for our client SDKs is available in our Github release notes:

Daily Prebuilt

  • Fixed the “request for help” feature from the main room during breakout sessions.
  • Improved handling of blocked-by-browser screen share errors in Chrome.

Dashboard

  • Removed Intercom chat widget from the dashboard. Contact us at help@daily.co for support.

Media Services

Telephony

  • Added support for preferred codec negotiation based on the SIP invite SDP.
  • Fixed room ID preservation during call transfers when a room is deleted mid-transfer.
  • Fixed SIP username filtering for pinless dial-in configuration.

Recording

  • Fixed stop recording by instance ID to correctly detect the recording type.
  • Optimized audio bitrate to 96kbps for audio-only recordings.
  • The GET recordings API now includes roomName in the response.

REST API

  • Fixed 404 errors for presence queries on deleted rooms.
Narrower CSP for video backgrounds, audio-only recording property, dynamic SIP dial-in endpoints, and telephony and recording fixes.

Overview

October brings a Content Security Policy improvement for video background processing, removing the need for the broad unsafe-eval directive. We’ve also added a new force_audio_only_recording domain property, dynamic SIP dial-in endpoint creation, and several telephony and recording reliability fixes across our platform.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.85.0

  • You no longer need to specify the broad unsafe-eval in your Content Security Policy (CSP) when using video background processing (virtual backgrounds or background blur). You can now use the narrower wasm-unsafe-eval instead.
  • Fixed an issue where the initial send settings were not being respected for cam video.

react-native-daily-js

View full release notes →

0.82.0

  • Fixed an issue where the initial send settings were not being respected for cam video.

Daily Prebuilt

  • Added a Krisp system overload notification to inform users when audio processing is under heavy CPU load.
  • Fixed recording handling when recording types are configured as comma-separated values.
  • Fixed dynamic chunk loading issues that could cause failures in certain deployment configurations.

Dashboard

  • Removed Daily Bots dashboard links and unified domain handling.

Media Services

Telephony

  • Added support for dynamically creating SIP dial-in endpoints.
  • SIP participants are now properly ejected when a room is deleted.
  • Fixed presence data for dial-out participants who are the first to join a room.
  • Fixed pagination in the list phone numbers API.
  • Fixed error handling in the list available numbers API.

Recording and Transcription

  • Added a new force_audio_only_recording domain property for audio-only recording.
  • Meeting-move-aware transcription is now enabled by default.
  • Fixed Deepgram extra metadata encoding for transcription sessions.
Phone extension support for dial-out, Android 16KB page size compatibility, auto-start recording reliability, and new Picture-in-Picture events.

Overview

September adds phone extension support for dial-out operations across our client SDKs, Android 16KB page size compatibility for React Native, and improved reliability for auto-start recording and transcription. We’ve also added new Picture-in-Picture events for Daily Prebuilt and improved handling for unsupported browsers.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.84.0

  • Added support for calling phone extensions during dial-out operations. You can now specify an extension number and wait time before dialing the extension after the main call connects.
  • Added Prebuilt-specific pip-started and pip-stopped events.
  • Improved reliability of handling auto-start recording and transcription options when joining a room.
  • Improved handling for unsupported browsers. The Daily constructor will now throw an error of WebRTC not supported or suppressed if the browser cannot support a call.

react-native-daily-js

View full release notes →

0.81.0

  • Added support for Android 16KB page size.
  • Added support for calling phone extensions during dial-out operations. You can now specify an extension number and wait time before dialing the extension after the main call connects.
  • Improved reliability of handling auto-start recording and transcription options when joining a room.

Dashboard

  • Added a cancel plan button to the billing interface.
Chrome 140 and Firefox 142 compatibility fixes, pre-join screen sharing, Krisp CPU overload handling, telephony improvements, and Prebuilt accessibility updates.

Overview

August brings browser compatibility fixes for Chrome 140 and Firefox 142, new screen sharing capabilities before joining a call, and telephony improvements including dial-out extensions and cross-domain SIP transfers. We’ve also shipped Daily Prebuilt accessibility improvements, a high CPU usage notification, and stability fixes across our media services.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.83.1

  • Updated mediasoup-client for compatibility with Chrome 140. Without this fix, joining or reconnecting to a call without an audio track would fail on Chrome 140.
  • Added a workaround for a Firefox 142 bug that caused daily-js to incorrectly report bad network conditions due to roundTripTime.
  • Fixed a regression in 0.82.0 where captureOptions passed to startScreenShare() were ignored.
  • Removed deprecated and unused rtp-tracks recording support.

0.82.0

  • Added support for calling startScreenShare() prior to join(). A call to preAuth() or startCamera() is still required first to initialize state.
  • Fixed and improved error handling for setOutputDevicesAsync(). The method now throws an error if the call fails.
  • Updated dependencies to resolve security vulnerabilities.
  • Bumped Krisp to the latest version with updated models. Added handling for CPU overload which can cause choppy voice output. This will temporarily and silently pause audio processing while the CPU recovers. If overload continues, daily-js will emit an audio-processor-error with errorMsg of "Krisp error: system overload", turn off the processor, and mute the microphone.

react-native-daily-js

View full release notes →

0.80.0

  • Updated mediasoup-client dependency to latest.
  • Removed deprecated and unused rtp-tracks recording support.

0.79.0

  • Updated dependencies to resolve security vulnerabilities.

Daily Prebuilt

  • Fixed unblock instructions in embedded Prebuilt on Chrome on iOS.
  • Added a high CPU usage notification snackbar.
  • Improved accessibility throughout the Prebuilt interface.

Media Services

Telephony

  • Added support for providing a phone extension in startDialout().
  • Enabled SIP call transfer to non-Daily domains.
  • Improved handling of dial-in properties when creating rooms with dial-in configured.
  • Added roomName to transcription webhook events.

Recording

  • Fixed a bug where audio tracks were not being added to recordings.
New network status callbacks, improved telephony error handling, and platform-wide stability fixes.

Overview

This month’s updates bring new network status callbacks to our native mobile SDKs, giving you more insight into connection health. We’ve shipped a new dialin-error type (start-failed) that triggers when SIP registration fails, a critical audio playback fix for Safari in Daily React, and numerous stability improvements across our backend services.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.81.0

  • Added ignoreAudioLevel parameter to startCustomTrack() to exclude a track from audio level calculations.
  • Improved enumerateDevices() logging and reduced noisy error reporting.

react-native-daily-js

View full release notes →

0.78.0

  • Added a new dialin-error type to start-failed.
  • Fixed a potential null pointer exception during module initialization.
  • Improved enumerateDevices() logging and reduced noisy error reporting.

daily-react

View full release notes →

0.23.1

  • Fixed an issue that could prevent audio playback in Safari after a participant leaves.
  • Added an optional interval parameter to the useAudioLevelObserver() hook.
  • Updated the useNetwork() hook to return the new networkState and networkStateReasons properties.
  • Added user_name and rawResponse to the Transcription type definition.

daily-android

View full release notes →

0.32.0

  • Added a new onNetworkConnectionStatusUpdated() callback to monitor call-critical network connections.
  • Added support for handling mid-call session ID changes.
  • Fixed a potential null pointer exception during device list changes.

daily-ios

View full release notes →

0.32.0

  • Added a new delegate function (networkConnectionStatusUpdated) to monitor call-critical network connections.
  • Added support for handling mid-call session ID changes.
  • Fixed a bug where userID could be nil in the call configuration, even when present in the token.

daily-python

View full release notes →

0.19.4

  • Added set_log_level() and a log_level init argument for controlling log verbosity.

Media Services

Telephony and Recording/Livestreaming

  • Added a new start-failed error type to the dialin-error event. This fires when the SIP address on a room fails SIP registration with the SIP network.
  • Improved handling of non-unique ‘from’ numbers in PSTN dial-in, allowing multiple participants to join from the same caller ID.
  • Shipped numerous stability improvements for SIP registration, raw tracks recording, and connection reliability.

Older updates

2025

5 updates from 2025.

2024

8 updates from 2024.

2023

18 updates from 2023.

2022

16 updates from 2022.

2021

12 updates from 2021.

2020

8 updates from 2020.