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 thedaily.co → dailywebrtc.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
- Fixed an issue introduced in 0.91.0 causing
testWebsocketConnection()to fail when called before a room URL was provided.
0.92.0
dialout-errorevents now include custom SIP headers.- Added the missing types for the
dialout-answeredandmeeting-session-summary-updatedevent objects, which previously fell back to the generic event type. - Improved handling of device mutes caused by
canSendpermissions being revoked. - Fixed custom tracks whose names begin with
camorscreenbeing misclassified as camera or screen tracks. - Prebuilt iframe embeds now use the same domain failover (
daily.co→dailywebrtc.com/dailywebrtc.net) that was introduced for custom clients in 0.91.0. - Updated
mediasoup-clientto 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-errorevents now include custom SIP headers.- Added the missing types for the
dialout-answeredandmeeting-session-summary-updatedevent objects. - Improved handling of device mutes caused by
canSendpermissions being revoked. - Updated
mediasoup-clientto 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
canSendpermissions 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-sipconfiguration remainssnake_case, while the REST API takescamelCaseparameters, 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-errorevent 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_providerfield.
Streaming
- Fixed the HLS master playlist writing
BANDWIDTHandAVERAGE-BANDWIDTHin 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-permissionsnow enforces a 100KB payload limit, returning a400naming the limit instead of an opaque500. This matches the existing session-data limit; payloads that succeed today are unaffected.redirect_on_meeting_exitis now validated against a per-domain host allowlist, including in self-signed meeting tokens.- Retired legacy plan endpoints now return a
400pointing at support instead of attempting a plan change against a retired plan ID. /get-period-usageno longer returns a500when the usage cache is unavailable; usage is computed and returned regardless.- Batch processor summary artifacts are now stored with a
text/plaincontent type instead of the malformedplain/text. - Documented that participant webhook consumers should dedupe on
typeplussession_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-classuseDialOut 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
useDialOutanduseDialinhooks for the PSTN/SIP telephony APIs.useDialOutexposes a sessions map keyed bysessionIdplusstartDialOut,stopDialOut,sendDTMF,sipCallTransfer, andsipRefer, withonDialOut*callbacks.useDialinexposesisReady,sipEndpoint,provider, and a sessions map, withonDialin*callbacks. Both reset onleft-meetingand on call-instance destruction. - Added a
useMeetingSessionSummaryhook that reactively surfaces the server-assigned session id, useful for correlating a call with recordings, logs, and REST API resources. It returnsnulluntil the session has started. DailyVideoandDailyAudioTracknow accept a customtrackNamefor tracks started withstartCustomTrack(), and theirtypeprop is now optional. Custom tracks can be read withuseMediaTrack(id, trackName). Note thattrackNameis 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
atomFamilynow imports from thejotai-familypackage instead of the deprecatedjotai/utilsexport, keeping daily-react compatible with jotai v3.
daily-ios
View full release notes →0.39.0
- Added
StreamingLayout.rawTracksAudioOnly, theraw-tracks-audio-onlyrecording layout preset for audio-only raw-tracks recordings. - Fixed an issue where participants would appear as
guestin saved transcriptions. - Fixed an issue where the
raw-tracks-audio-onlyrecording layout preset in a meeting token’sstart_cloud_recording_optswas 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, theraw-tracks-audio-onlyrecording layout preset for audio-only raw-tracks recordings. - Fixed an issue where participants would appear as
guestin saved transcriptions. - Fixed an issue where the
raw-tracks-audio-onlyrecording layout preset in a meeting token’sstart_cloud_recording_optswas 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
CallClientno longer crashes with anExceptionInInitializerErroron devices where EGL/GLES initialization fails. A non-fatal error is reported throughCallClientListener.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_backimplementations ofPyListandPyTupleiterators.
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 adaily.cooutage. - daily-js now discovers a working base domain at iframe load time, falling back to
dailywebrtc.com/dailywebrtc.netifdaily.cois 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 tocamandscreen; custom tracks whose names begin withcamorscreenkeep 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_codecdomain property. - The
dialout-answeredevent is now emitted for calls using the Daily SIP provider, alongsidedialout-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(globaloreu) to thePOST /rooms/:name/transcription/startOpenAPI 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.co → dailywebrtc.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, andvideoBitrateparameters 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.co→dailywebrtc.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, andvideoBitrateparameters 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.co→dailywebrtc.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 duringCallClientcreation. - Added automatic fallback to
dailywebrtc.comanddailywebrtc.netwhendaily.coauthoritative nameservers are unreachable, improving connection resilience. - Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting
allowAdaptiveLayerstofalsein the camerasendSettings. - Fixed an issue where SDK resources were not properly cleaned up when all
CallClientinstances were released. - Fixed an intermittent crash when force-quitting and relaunching the app while the camera was active.
- Fixed support for the
cloud-audio-onlyrecording 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.comanddailywebrtc.netwhendaily.coauthoritative nameservers are unreachable, improving connection resilience. - Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting
allowAdaptiveLayerstofalsein the camerasendSettings. - Fixed a segmentation fault that could occur when a
CallClientwas released (or garbage collected) while still in a call. - Fixed support for the
cloud-audio-onlyrecording 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.comanddailywebrtc.netwhendaily.coauthoritative nameservers are unreachable, improving connection resilience. - Fixed a use-after-free that could cause a segmentation fault in the audio playout thread if a
CallClientwas released while still in a call with participant audio renderers registered. - Fixed a segmentation fault that could occur when a
CallClientwas released (or garbage collected) while still in a call.
0.29.1
- Fixed an issue where a room configured with
enable_recordingset tocloud-audio-onlywas ignored when starting a recording, causing the recording to also capture video. - Fixed an issue where
StartRecordingPropertiesnone properties were serialized tonull.
0.29.0
- Added support for
screenAudioinput, making it possible to send a custom screen-share audio track alongside or independently ofscreenVideo.
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 Acceptableerror response, and thertpmapfor 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-errorevents 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-errorevent now includes therecordingId, 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
- Added
created_atandupdated_atto transcripts API responses. - Added an opt-in
include_sip_participantsquery parameter toGET /meetings/:id.
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 newprovider 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
providerandsipCallIdfields to alldialin-*anddialout-*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
providerandsipCallIdfields to alldialin-*anddialout-*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
mtgSessionIdto the responses ofGET /presenceandGET /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 includesipCallId 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()anduseLiveStreaming()now accept aninstanceIdparameter for per-instance state. NewuseRecordingInstances()anduseLiveStreamingInstances()hooks return all active instances, and newRecordingInstanceStateandLiveStreamingInstanceStatetypes are exported. Stopping or erroring one instance no longer clears state for others. - Added
networkStatusto the return value ofuseNetwork(). - Added support for the
cloud-audio-onlyrecording type. - The daily-react version is now reported through daily-js via the new
aboutClientAPI, 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
screenVideocustom tracks. You can now send a custom screen share track by settinginputs.screenVideo.settings.customTrack.id. - Adaptive Bitrate (ABR) is now enabled by default for camera tracks. It can still be disabled by setting
allow_adaptive_layerstoFalsein the camerasend_settings. - Fixed support for the
cloud-audio-onlyrecording 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
sipCallIdandproviderfields, 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
providervalue to lowercasesignalwirein dial-in and dial-out events. - Added
provideras a valid parameter for thestartDialoutAPI. - 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_jsondomain 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
ContentTypeto avoid including unexpected files.
Streaming
- Added a new VCS parameter
videoSettings.grid.labelPlacementfor 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, andtestCallQuality() 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
setSinkIdrequires 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
digitDurationMsoption tosendDTMF()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_keysdomain 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_compositorflag. - 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-jsonas a validdataOutputsoption for recordings via the REST API. We’re considering makingevent-jsonthe default output format and invite feedback from the community. Note that this would add an additionalevent-jsonfile 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-onlyroom and meeting token property. - New
max_api_keysdomain 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_broadcastproperty.
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_nameanduser_idto 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/memberendpoint 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 includingdataOutputs 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
dataOutputsoption instartRecording()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
-
Added support for a new
cloud-audio-onlyrecording type. This produces m4a files with theaudio/mp4content 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()andstartCamera()when no room URL is provided or the URL is invalid. These now properly throw an error and leavemeetingState()in"left-meeting". -
Improved the
cpu-load-changeevent 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_sizetoDailyRoomInfotypes.
react-native-daily-js
View full release notes →0.83.0
- Introduced a new
dataOutputsoption instartRecording()to capture auxiliary data alongside the recording media. Supportsevent-json,transcript-webvtt, andchat-webvttoutput types. - Added support for the new
cloud-audio-onlyrecording type. - Fixed an issue where sessions would attempt to reconnect after long periods of laptop lid closure.
- Fixed uncaught errors in
join()andstartCamera()when no room URL is provided or the URL is invalid. - Improved the
cpu-load-changeevent accuracy. - Added
max_app_message_sizetoDailyRoomInfotypes. - 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
dataOutputsrecording option and thecloud-audio-onlyrecording 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_notificationsdomain 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_notificationsproperty. - Updated settings deletion copy.
Media Services
Recording
- Added support for recording-synchronized transcripts via
dataOutputsinstartRecording(). - 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_recordingflag. - 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.cofor 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
roomNamein 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 broadunsafe-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-evalin your Content Security Policy (CSP) when using video background processing (virtual backgrounds or background blur). You can now use the narrowerwasm-unsafe-evalinstead. - 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_recordingdomain 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-startedandpip-stoppedevents. - 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 suppressedif 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.