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.
Custom SIP headers in dial-out errors, SIP trunk support for the Daily provider, OCI storage for recordings and transcripts, and a 100KB cap on update-permissions payloads.

Overview

daily-js 0.92.0 and react-native-daily-js 0.87.0 include custom SIP headers in dial-out error events, add the missing types for several event objects, and extend the daily.codailywebrtc.com/.net domain failover to iframe embeds. Server-side, recordings and transcripts can now be stored in OCI buckets, SIP trunking is supported with the Daily SIP provider, and the HLS master playlist now reports BANDWIDTH in bits per second so players adapt correctly. The update-permissions REST endpoint now returns a 400 naming its 100KB limit instead of an opaque 500.Complete release history for our client SDKs is available in our Github release notes:

daily-js

View full release notes →

0.92.2

0.92.0

  • dialout-error events now include custom SIP headers.
  • Added the missing types for the dialout-answered and meeting-session-summary-updated event objects, which previously fell back to the generic event type.
  • Improved handling of device mutes caused by canSend permissions being revoked.
  • Fixed custom tracks whose names begin with cam or screen being misclassified as camera or screen tracks.
  • Prebuilt iframe embeds now use the same domain failover (daily.codailywebrtc.com/dailywebrtc.net) that was introduced for custom clients in 0.91.0.
  • Updated mediasoup-client to 3.21.0 and refreshed dependencies to resolve vulnerabilities.

react-native-daily-js

View full release notes →

0.87.1

  • Fixed an issue introduced in 0.91.0 causing testWebsocketConnection() to fail when called before a room URL was provided.

0.87.0

  • dialout-error events now include custom SIP headers.
  • Added the missing types for the dialout-answered and meeting-session-summary-updated event objects.
  • Improved handling of device mutes caused by canSend permissions being revoked.
  • Updated mediasoup-client to 3.21.0 and refreshed dependencies to resolve vulnerabilities.

daily-python

View full release notes →

0.32.0

  • Fixed an issue where SIP transfer server error messages were not handled properly.
  • Fixed multiple memory, thread, and file descriptor leaks when creating and releasing CallClients.

Daily Prebuilt

  • Added Slovak and Czech language support. Both are now selectable with setDailyLang().
  • Improved handling of device mutes when a participant’s canSend permissions are revoked mid-call.

Media Services

Telephony

  • Added SIP trunk support for the Daily SIP provider, so a customer-managed trunk can deliver calls into Daily rooms.
  • Consolidated dial-in parameter validation and case conversion. Room-level dialin-sip configuration remains snake_case, while the REST API takes camelCase parameters, matching the dial-out APIs.
  • Added duplicate call-id detection in the SIP trunk webhook, so a redelivered invite no longer creates a second session.
  • Fixed a race between concurrent SIP trunk creation requests.
  • Fixed SIP participant ejection in cascaded (mesh-SFU) meetings.

Recording

  • Added support for storing recordings in an OCI bucket, alongside the existing AWS S3 support. REST API errors are now consistent across both providers.
  • Access links for recordings in Daily-owned buckets are now issued as CloudFront signed URLs.
  • Improved raw-tracks S3 upload reliability and observability.
  • A meeting move that fails to restore a recording now emits a recording-error event rather than an RTMP error.
  • Recording state is no longer cleared when a recording type and instance ID don’t match, which could stop an unrelated in-progress recording.

Transcription

  • Added support for storing transcripts in an OCI bucket. Transcription responses now include a storage_provider field.

Streaming

  • Fixed the HLS master playlist writing BANDWIDTH and AVERAGE-BANDWIDTH in kbps instead of the bits per second required by RFC 8216. Every value was 1000x too small, so players never adapted down to a lower variant.

Other

  • Oldest supported daily-js version bumped to 0.87.0, with 0.89.0 approaching end-of-support.
  • Fixed meeting-move restore failures in large meetings caused by stale lock-holder data on peer SFUs.

REST API

  • POST /rooms/:name/update-permissions now enforces a 100KB payload limit, returning a 400 naming the limit instead of an opaque 500. This matches the existing session-data limit; payloads that succeed today are unaffected.
  • redirect_on_meeting_exit is now validated against a per-domain host allowlist, including in self-signed meeting tokens.
  • Retired legacy plan endpoints now return a 400 pointing at support instead of attempting a plan change against a retired plan ID.
  • /get-period-usage no longer returns a 500 when the usage cache is unavailable; usage is computed and returned regardless.
  • Batch processor summary artifacts are now stored with a text/plain content type instead of the malformed plain/text.
  • Documented that participant webhook consumers should dedupe on type plus session_id.

Dashboard

  • Participant call-log fetches are now capped at 3000 rows, keeping the page responsive for very large meetings.
daily-react dial-in/dial-out hooks, raw-tracks audio-only recording across native SDKs, SIP multi-codec negotiation, and phone number redaction for SIP/PSTN.

Overview

daily-react 0.26.0 adds first-class useDialOut and useDialin hooks, a useMeetingSessionSummary hook, and custom track support in DailyVideo and DailyAudioTrack. The native SDKs — daily-ios 0.39.0, daily-android 0.39.1, and daily-python 0.31.0 — add the raw-tracks-audio-only recording layout preset and fix several crashes. Server-side, SIP calls can now negotiate multiple codecs, phone numbers are redacted from SIP/PSTN logs, and raw-tracks recording is more resilient to slow S3 uploads.Complete release history for our client SDKs is available in our Github release notes:

daily-react

View full release notes →

0.26.0

  • Added useDialOut and useDialin hooks for the PSTN/SIP telephony APIs. useDialOut exposes a sessions map keyed by sessionId plus startDialOut, stopDialOut, sendDTMF, sipCallTransfer, and sipRefer, with onDialOut* callbacks. useDialin exposes isReady, sipEndpoint, provider, and a sessions map, with onDialin* callbacks. Both reset on left-meeting and on call-instance destruction.
  • Added a useMeetingSessionSummary hook that reactively surfaces the server-assigned session id, useful for correlating a call with recordings, logs, and REST API resources. It returns null until the session has started.
  • DailyVideo and DailyAudioTrack now accept a custom trackName for tracks started with startCustomTrack(), and their type prop is now optional. Custom tracks can be read with useMediaTrack(id, trackName). Note that trackName is resolved as a participant-property path, so names containing . are unsupported.
  • A local participant’s own custom track is no longer incorrectly forced playable or mirrored.
  • Fixed the local self-view losing its mirror transform after leaving picture-in-picture, such as a browser-triggered auto-PiP on tab switch.

0.25.3

  • atomFamily now imports from the jotai-family package instead of the deprecated jotai/utils export, keeping daily-react compatible with jotai v3.

daily-ios

View full release notes →

0.39.0

  • Added StreamingLayout.rawTracksAudioOnly, the raw-tracks-audio-only recording layout preset for audio-only raw-tracks recordings.
  • Fixed an issue where participants would appear as guest in saved transcriptions.
  • Fixed an issue where the raw-tracks-audio-only recording layout preset in a meeting token’s start_cloud_recording_opts was ignored, causing raw-tracks recordings to include video.

daily-android

View full release notes →

0.39.1

  • Fixed a crash when microphone capture fails. The error is now reported through CallClientListener.onError(...).

0.39.0

  • Added StreamingLayout.RawTracksAudioOnly, the raw-tracks-audio-only recording layout preset for audio-only raw-tracks recordings.
  • Fixed an issue where participants would appear as guest in saved transcriptions.
  • Fixed an issue where the raw-tracks-audio-only recording layout preset in a meeting token’s start_cloud_recording_opts was ignored, causing raw-tracks recordings to include video.
  • Server-side startRecording() failures are now reported as proper recording errors instead of an opaque deserialization error.

0.38.1

  • Constructing a CallClient no longer crashes with an ExceptionInInitializerError on devices where EGL/GLES initialization fails. A non-fatal error is reported through CallClientListener.onError(...) instead, and an audio-only session remains possible.

daily-python

View full release notes →

0.31.0

  • daily-python now requires Python 3.8 or newer, a consequence of the pyo3 0.29.0 upgrade below.
  • Upgraded pyo3 to 0.29.0 to address GHSA-36hh-v3qg-5jq4, an out-of-bounds read in the nth / nth_back implementations of PyList and PyTuple iterators.

Daily Prebuilt

  • Fixed the local self-view losing its mirror transform after a browser-triggered automatic picture-in-picture, such as Chrome’s auto-PiP on tab switch. Previously, toggling between grid and speaker view was the only workaround.
  • Fixed the chat sidebar scrollbar flickering on Linux and Windows when message content height sat right at the panel boundary.
  • Prebuilt now serves Next.js framework and dynamic assets from the fallback domain rather than daily.co, so the call loads correctly during a daily.co outage.
  • daily-js now discovers a working base domain at iframe load time, falling back to dailywebrtc.com/dailywebrtc.net if daily.co is unreachable.
  • Fixed custom track stream type classification in the SFU. Only the exact canonical tags (cam-audio/cam-video, screen-audio/screen-video) are mapped to cam and screen; custom tracks whose names begin with cam or screen keep their own media tag instead of being misclassified.

Media Services

Telephony

  • SIP calls can now offer and accept multiple codecs. Dial-out offers all supported codecs with your preferred codec ranked first, and dial-in accepts any codec supported by the bridge, selecting your preferred codec when the invite offers it and otherwise the top codec from the invite. This is gated by the enable_sip_multi_codec domain property.
  • The dialout-answered event is now emitted for calls using the Daily SIP provider, alongside dialout-connected.
  • Phone numbers are now redacted in SIP/PSTN logs, with all but the last four digits replaced.
  • Fixed a crash in the SIP bridge when a provider delivered DTMF under a second SSRC, which Twilio does when a key is pressed.
  • Fixed overlapping calls to remove all SIP participants, which could trigger redundant stop-SIP calls.

Recording

  • Cloud recording finalization is no longer preempted by teardown errors, such as a participant video resolution change racing the stop. This previously truncated recordings by dropping the final container metadata.
  • Raw-tracks recordings now tolerate slow S3 uploads: the per-request timeout and retry count are configurable, and the sink queue is deeper, so a transient upload stall no longer tears down the track pipeline.
  • Fixed raw-tracks transcoded audio being replaced with silence when decoded audio arrived late, by giving the audio mixer explicit latency.

Streaming

  • Fixed the counting of streaming instances for limit checks so that stopped instances no longer count against the limit.

Other

  • Meeting session data writes are now retried when the backing store is failing over, instead of being silently dropped.

REST API

  • Added transcription_geo (global or eu) to the POST /rooms/:name/transcription/start OpenAPI schema. The field was already supported and honored by the server, but was missing from the REST reference.
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.

Older updates

2025

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