All SDKs add native real-time transcription support and background blur and effects are now GA for daily-js.
Overview
We have some big news to share in this release:- Daily now offers real-time transcriptions, powered by Deepgram, native to all it’s SDKs. Get started by adding a credit card to your account to transcribe your meetings.
- Video processing in
daily-jsis now generally available! Add background blur and effects to your calls with better CPU and visual performance. - Select your preferred codec—H.264 or VP8—when publishing video track subscriptions in
daily-iosanddaily-android. - Get audio levels from remote participants with a new observer method, available in
daily-iosanddaily-android.
daily-js
0.56.0
Real-time transcription updates
Daily’s real-time transcription features, powered by Deepgram, are now native to all SDKs. Before, real-time transcription required a Deepgram account and API key. Now you can add a credit card to your Daily account to start transcribing your meetings.Real-time transcriptions can be started in three ways:- Method: Use the
startTranscription()method in thedaily-jsAPI to start transcribing a meeting. An owner can call this method after joining the meeting session. - REST endpoint: The REST API endpoint for starting a meeting transcription is the transcription REST endpoint. Use a POST request to start transcribing a meeting.
- Meeting token: Set the
auto_start_transcriptionmeeting token property for the meeting owner to automatically transcribe a meeting upon joining. Configure the transcription settings for that room using theauto_transcription_settings.
transcription-message which you can listen to to receive transcription messages. Before, you had to listen to the app-message and parse the message. Transcription messages are still available via app-message to preserve backwards compatibility.New transcription options have been added to provide more options for your transcription messages: punctuate, endpointing, and extra. See the startTranscription() docs for more information on the properties.⚠️ This version has two breaking changes:- We removed the
detect_languagetranscription option because it does not support real-time transcriptions. Removedetect_languagefrom your calls tostartTranscription()to start using this version. - We removed the default values for transcription options provided by
daily-js. These options interfered with configuring certain Deepgram options likemodelandtier. Instead, Deepgram default options are used. This change may alter your exact transcription settings. Please double-check transcription behavior when migrating to this version of daily-js.
Background effects are GA
daily-js received a significant upgrade to the background blur and replacement system, resulting in much improved visual and CPU performance. You don’t need to make any changes to start using this improvement and we haven’t made any changes to the updateInputSettings() API. This feature is now generally available!Release notes
For more information, check out the release notes.react-native-daily-js
0.54.0
Real-time transcription updates
See thedaily-js release notes for details.Release notes
For more information, check out the release notes.daily-ios
0.14.0
Select a preferred codec
daily-ios now allows you to select a preferredCodec when publishing your video stream. daily-ios supports H.264 and VP8 as selectable codecs. Get started by checking out the VideoSendSettingsUpdate docs.Reminder: daily-ios also has the ability to publish HEVC by specifying the adaptiveHEVC encoding mode.Remote participant audio level observer
You can now access microphone audio levels from remote participants throughdaily-ios. With this audio data, you can add UI elements to your application to show when users are speaking and at what volume level.Get started by checking out the docs:- Methods:
- CallClientDelegate:
remoteParticipantsAudioLevel
Release notes
For more information, check out the release notes.daily-android
0.14.0
Select a preferred codec
daily-android now allows you to select a preferredCodec when publishing your video stream. daily-android supports H.264 and VP8 as selectable codecs. Get started by checking out the VideoSendSettings docs.Remote participant audio level observer
You can now access microphone audio levels from remote participants throughdaily-android. With this audio data, you can add UI elements to your application to show when users are speaking and at what volume level.Get started by checking out the docs:- Functions:
- CallClientListener:
remoteParticipantsAudioLevel
Release notes
For more information, check out the release notes.Daily Prebuilt
Features and improvements
- Added an overlay to the local user’s screen share view when sharing a screen. This prevents the user from seeing the “hall of mirrors” effect when screen sharing. Yet, it still allows them to receive feedback about the content they’re sharing.
- In Chrome version 120, we updated the blocked screen recovery flow. We added new icons to align with Chrome’s UI refresh.
- We added support for customers to specify custom sendSettings in their Daily Prebuilt call.
Bugfixes
- Fixed an issue where text in the chat notification would overflow the notification box.
- Fixed an issue where emojis would appear oversized in the participant bar tiles in Speaker View.
- Fixed an issue where the Chat panel could appear off-screen in Grid View.
Media Services
- VCS: Audio-only participants, when identified as active speaker, are now rendered correctly in VCS baseline composition dominant mode.
REST APIs
- Added a new meeting token property called
auto_start_transcription. When this property is set for an owner, meeting transcription will begin when a user joins a meeting. - Added a new room property called
auto_transcription_settings. When this property is set, when transcription is started for a room, these transcription settings will be applied.
Dashboard
- The sign-up, login, and password reset fields now all offer the ability to show and hide your password.
Additional
- The oldest supported version of
daily-jsis now 0.47.0.
A big release with a number of new features and improvements, including daily-ios screen sharing support and daily-android transcription support.
Overview
New features in the last month include:- Screen sharing support on
daily-ios - Transcription support on
daily-android - Screen share publishing settings on
daily-iosanddaily-android - Daily Prebuilt’s mobile UX has been improved, including a desktop experience for iPads and tablets
- CPU and visual performance improvements for Daily Prebuilt’s background effects
daily-js
0.55.x
Improvements
This release ofdaily-js includes a number of features, improvements, and bugfixes, including:- Updating the name of
DailyIframetoDailyin order to reduce the confusion between usingdaily-jsto build a custom app and control Daily Prebuilt. - Improved the
cpu-load-changeevent to reduce the likelihood of false positives. - Introduced the new method
meetingSessionSummary()as a replacement forgetMeetingSession()and eventmeeting-session-summary-updatedas a replacement formeeting-session-updated.
Release notes
For more information, check out the release notes:react-native-daily-js
0.53.x
Improvements
This release ofreact-native-daily-js includes a number of features, improvements, and bugfixes, including:- Updating the name of
DailyIframetoDailyin order to reduce the confusion between usingdaily-jsto build a custom app and control Daily Prebuilt. - Improved the
cpu-load-changeevent to reduce the likelihood of false positives. - Introduced the new method
meetingSessionSummary()as a replacement forgetMeetingSession()and eventmeeting-session-summary-updatedas a replacement formeeting-session-updated.
Release notes
For more information, check out the release notes:daily-react
0.16.0
Improvements
- Improved autocompletion for property paths in
tracks, when usinguseParticipantProperty - Added a new
examplesdirectory, with one minimal example
Bugfixes
- Fixed a race condition in
DailyAudiowhen assigning a participant to an<audio>element, who wasn’t updated in React state, yet, which could lead to the participant not being heard. - Fixed the return value of
updateInputSettings, returned fromuseInputSettings
daily-python
0.5.x
Support for addition transcription parameters
It is now possible to pass additional transcription settings tostart_transcription() using the new extra field.Specify input constraints
CustomMediaTrackConstraints, like echo cancellation and noise suppression, can now be specified for inputs. See the VideoInputSettings and AudioInputSettings.Release notes
For more information, check out the release notes:daily-ios
0.13.0
Screen publishing settings
You can now control a screen share’s publishing settings, which allows you to control the resolution, frame rate, and bitrate for a screen share. SeeScreenVideoPublishingSettingsUpdate to get started.Release notes
For more information, check out the release notes.0.12.0
Screen sharing support
daily-ios clients now support screen sharing. Screen sharing is composed of two parts: a broadcast upload extension and the screen share support inside the iOS SDK. For more details, refer to the screen sharing guide.Release notes
For more information, check out the release notes.daily-android
0.13.0
Screen publishing settings
You can now control a screen share’s publishing settings, which allows you to control the resolution, frame rate, and bitrate for a screen share. SeeScreenVideoPublishingSettingsUpdate to get started.Release notes
For more information, check out the release notes.0.12.0
Transcriptions support
Start and stop transcriptions from your daily-android client. SeestartTranscription and stopTranscription to get started.Release notes
For more information, check out the release notes.Daily Prebuilt
Features and improvements
- Tablets and iPads now have the ability to run the full desktop Prebuilt experience. As part of this release, we have disabled picture-in-picture viewing on tablets using Safari.
- Viewing on mobile devices has been improved to optimize for video aspect ratios native to your device.
- Improved the CPU and visual performance of background blur and effects.
- Chat notifications now appear in a snackbar when the Chat panel is not visible.
- Improved CPU performance for users joining a Breakout session.
- Only render the speaking while muted popover while in a meeting.
- Admins are not distinguished in the People panel by a new icon.
Bugfixes
- Fixed an issues where users with a poor connection would appear to fade in and fade out.
- Fixed an issue for users on older browsers where the grid view would resize itself.
- Fixed an issue where users could appear twice in the picture-in-picture view.
Media Services
- All Daily calls now have the ability to add a PSTN & SIP Dial-In number for phone calls.
- Fixed an issue that may have caused transcription messages to return as empty.
- Fixed an issue where transcription messages could be undefined, resulting in an error.
VCS Features
- VCS now supports banner images as part of the image overlay option.
- VCS baseline composition
Bannercomponent’s fade animation can be toggled withbanner.enableTransition. - VCS baseline comp dominant mode sorts active speaker right after screen share when
preferScreenshareis on. EmojiReactionscomponent is now available in the VCS baseline composition.- Chat messages from Prebuilt can be displayed in a VCS composition for recording and live streaming.
- New param
'image.emoji'in VCS baseline comp allows using an emoji instead of an image asset. - Added a new Sidebar component in VCS baseline composition.
- VCS baseline composition new param
'webFrame.zPosition'allows placing the WebFrame element in the background.
Dashboard
- Toggle password visibility when a user is signing up.
Additional
- The oldest supported version of
daily-jsis now 0.46.0.
daily-python adds support for capturing individual audio tracks from a call and daily-js gets more call metrics improvements.
Overview
daily-pythonadds support to capture individual participant audio tracks.daily-jsandreact-native-daily-jsreceive another round of call metrics improvementsdaily-pythoncan now send chat messages to Daily Prebuilt- Daily Prebuilt receives a number of small feature improvements, performance improvements, and bugfixes
daily-js
0.54.0
Call metrics improvements
We continue to improve the call metrics support indaily-js. In this release, we added network round trip time to getNetworkStats(). See networkRoundtripTime and averageNetworkRoundTripTime in the reference docs. We also made other small improvements that improve call metrics for Safari and Firefox users.Release notes
- For more information, check out the release notes.
react-native-daily-js
0.52.0
Call metrics improvements
We continue to improve the call metrics support indaily-js. In this release, we added network round trip time to getNetworkStats(). See networkRoundtripTime and averageNetworkRoundTripTime in reference docs.Release notes
- For more information, check out the release notes.
daily-react
0.15.0
Release notes
useParticipantIds: Fixed an issue that caused temporary CPU spikes and potential memory leaks when handling participant events
daily-python
0.4.0
Capture individual audio tracks
You can now capture and export audio tracks for individual participants from a Daily call. This ability enables new cases, like speech-to-text, content moderation, or audio stream analysis on a per participant basis. Get started by viewing the docs forset_audio_renderer().Eject participants from a call
You can eject participants from a call using adaily-python client. This makes it easier for your server side app to help manage your meetings. Check out the docs for eject_remote_participants() to get started.Release notes
- For more information, check out the release notes.
0.3.1
Release notes
- Fixed an issue that could cause
daily-pythonclients to join a meeting session in a different region. - Fixed a deadlock that could occur when a
CallClientis destroyed.
0.3.0
Send messages to Daily Prebuilt
daily-python now supports sending messages to Daily Prebuilt using the send_prebuilt_chat_message() method.Release notes
- For more information, check out the release notes.
Daily Prebuilt
Features and improvements
- Added skin tone support for chat emoji available when setting the
enable_advanced_chatdomain or room property totrue. - Added the ability for room owners to set other participants as room admins, which allows those users to help manage other participants in that room.
- Improved the camera and microphone toggle button performance.
- Added new event logs for breakout rooms in order to aid troubleshooting.
Bugfixes
- Fixed an issue where participants in a P2P sometimes wouldn’t hear the other participant in the room.
- Fixed an issue where breakout room participants sometimes wouldn’t hear other participants in the breakout room they joined.
- Fixed an issue for Safari users where they’d see a dev tools console error regarding the wake lock.
Media Services
VCS Features
- Added emoji support for VCS server rendering 🎉
- New Emoji built-in component in VCS, useful for rendering single emojis like images
- New font DM Sans available in VCS baseline composition.
REST API
- Added a
urlfilter to /logs/api REST endpoint. - Fixed an issue where recording minutes wouldn’t appear for deleted rooms when pulling data from the /meetings/:meetingId REST endpoint.
Dashboard
- Added support for room names of up to 40 characters in length.
- Fixed a bug that prevents all health reports from being shown in the dashboard.
Additional
- Added support for room names of up to 40 characters in length.
- For rooms where
enable_mesh_sfuis set tofalse, there is now a 1,000 participant limit. - The oldest supported version of
daily-jsis now 0.45.0.
The latest update includes improved call metrics for daily-js and added screen share support for daily-android.
Overview
daily-androidadds support for screen sharing.daily-jsandreact-native-daily-jsreceive a major call metrics upgrade, which will help you better understand the performance of your calls.daily-jsandreact-native-daily-jsadd support for stopping other participants’ screen shares.
daily-android
0.11.0
Hello, screen share
daily-android now supports screen sharing. To get started, check out the docs for startScreenShare(), stopScreenShare(), and setScreenShareProjectionIntent().Release notes
- For more information, check out the release notes.
daily-ios
0.11.0
Release notes
- This release of
daily-iosincludes a number of bugfixes. - For more information, check out the release notes.
daily-js
0.53.0
Call metrics improvements
The call metrics logging has been improved. Improvements include:- Many new call metrics, including min and max values for existing metrics and brand new metrics like
roundTripTimeMaxandroundTripTimeMin packetLosscalculations have been improved to increase accuracypacketsLostPctis deprecated. New values have been added which provide a more accurate measurement of packet loss:packetLossPctAvg,packetLossPctMax,packetLossPctMin, andpacketLossPctLastValue- Improved accuracy of metrics around times when metrics aren’t reported
- Fixed an issue where metrics would stop reporting after a call reconnect
Release notes
- For more information, check out the release notes.
0.52.0
Stop a participant’s screen share
'participants' admins can now stop screen shares initiated by other participants in a session. This added capability allows admins to moderate the content that’s shared in a session.Release notes
- For more information, check out the release notes.
react-native-daily-js
0.51.0
Call metrics improvements
The call metrics logging has been improved. Improvements include:- Many new call metrics, including min and max values for existing metrics and brand new metrics like
roundTripTimeMaxandroundTripTimeMin packetLosscalculations have been improved to increase accuracypacketsLostPctis deprecated and replaced bypacketLossPctAvg- New values have been added which provide a more information about packet loss:
packetLossPctMax,packetLossPctMin, andpacketLossPctLastValue - Improved accuracy of metrics around times when metrics aren’t reported
- Fixed an issue where metrics would stop reporting after a call reconnect
Release notes
- For more information, check out the release notes.
0.50.0
Stop a participant’s screen share
'participants' admins can now stop screen shares initiated by other participants in a session. This added capability allows admins to moderate the content that’s shared in a session.Release notes
- For more information, check out the release notes.
daily-react
0.14.1
Release notes
- This release of
daily-reactincludes performance enhancements and bugfixes. - For more information, check out the release notes for 0.14.0 and 0.14.1.
0.13.0
useDailyError hook
- New hook
useDailyError: this hook returns a stateful representation of the lastmeetingError(emitted pererrorevent) andnonFatalError(emitted pernonfatal-errorevent)
Release notes
- For more information, check out the release notes.
Daily Prebuilt
- Added a visual highlight to Tray icons that are used to open the sidebar in order to help users more easily understand which features are currently in use.
- Added support for the
daily-jscanSendpermissions. - Fixed a handful of Picture-in-Picture bugs that occur on Safari 17.
- Fixed an issue in SFU calls where screen shares would take a while to start playing when received by remote participants.
- Fixed an issue in P2P calls where remote participant audio would occasionally fail to play.
- Fixed an issue for mobile clients where the recording status indicator would appear as only a red dot.
Media Services
Features
- VCS: added a
LowerThirdcomponent; a type of graphic overlay inspired by the television industry.
REST API
Features
- Our AI-powered APIs added support for call session summarization along with the existing clinical notes generation. Contact sales for more information.
- Added support for post-call transcription in French, Hindi, Indonesian, Portuguese, Russian, Spainish, and Turkish for our batch processor APIs. Contact sales for more information.
- Added support for ejecting participants from a room.
- Added support for updating permissions for participants in a call session.
Improvements
- Removed the
formatsinput parameter from our batch processor transcription API. Post-call transcription is now available insrt,json,txt, andvttby default. - The batch processor API now includes an
errorattribute for failed jobs.
Dashboard
- Fixed an issue where room information would not be displayed if the room was provided with a very large
expvalue.
Additional
- The oldest supported version of
daily-jsis now 0.43.0.
The latest update includes HEVC recordings, new REST APIs, and plenty of internal improvements and bugfixes.
Overview
Our latest release shows our commitment to stability, performance, and expanding capabilities. From HEVC support for recordings and live streams, transcriptions in the REST API, to critical reliability improvements, our engineering team continues to innovate thoughtfully.daily-js
0.51.1
- Fixed an error encountered in some development environments, where tracks being muted reported that
MediaStreamTrackis non-extensible.
react-native-daily-js
0.49.1
- Fixed an error encountered in some development environments, where tracks being muted reported that
MediaStreamTrackis non-extensible.
Daily Prebuilt
- Improved UI support for narrow window sizes. For small window widths, the top bar gracefully condenses the UI, avoiding text overlaps.
- Improved performance related to active speaker changes while a screen share takes place.
- Fixed an issue in owner only broadcast calls, where viewers couldn’t pin presenters from the People panel.
- Improved reliability, especially in the case where a mobile user receives a phone call during a Prebuilt call.
Media Services
Features
- Adaptive HEVC is now supported in streaming and recordings.
- VCS: added
image.zPositionandimage.fullScreenScaleModeto the daily-baseline composition to support background graphics layers.
Improvements
- VCS: made a performance improvement where web renders on commit instead of animation frame.
- The
recording-stoppedevent is now sent when a recording is uploaded and ready-to-download. Before, the event was sent when our media service stopped processing video/audio but the recording fragments could still be awaiting network transfers to finish.
Bugfixes
- VCS: fix a text layout issue where glyphs might overflow the given box when breaking lines.
REST API
Features
- Our AI-powered Clinical Notes API is in beta. Contact sales for more information.
- Starting (and stopping) streaming transcriptions is now available in the REST API.
- The
/recordingsendpoint now supports starting and stoppingraw-tracksrecordings.
Additional
- Implemented a workaround for a Chromium bug, where the
getUserMediaAPI always uses the old default device after switching a default device from OS setting. - Fixed an issue for Firefox users were toggling a camera would result in using the lowest simulcast layer.
- The oldest supported version of
daily-jsis now 0.41.0.
Client releases for Web, React Native, iOS, Android, and Daily React!
Overview
Highlights include:daily-androidadding support to decode H.264, beta support for custom tracks, and extended host controlsdaily-iosadds extended host controlsdaily-jsandreact-native-daily-jsboth receive improvedsendAppMessage()functionality and a number of bugfixes
daily-android
0.10.1
Added H.264 decode supports
Android devices can now decode H.264 media streams. This feature allows for iOS and Android interoperability for when iOS clients enable theadaptiveHEVC feature to send H.264 and H.265 hardware encoded media streams.Beta: Custom track supports
daily-android adds beta support for sending and receiving custom tracks.Added Owner controls for remote participant devices
Owners can now control the camera and microphone for other participants in call. This allows meeting hosts to better moderate conversations by muting participants and stopping unwanted microphone noise during a call.Release notes
For more information, check out the release notes.daily-ios
0.10.1
Added Owner controls for remote participant devices
Owners can now control the camera and microphone for other participants in call. This allows meeting hosts to better moderate conversations by muting participants and stopping unwanted microphone noise during a call.Release notes
For more information, check out the release notes.daily-js
0.51.0
Advanced firewall controls for Daily Prebuilt
Daily Prebuilt now supports advanced firewall controls, allowing you to provide an IP proxy or TURN override to comply with strict firewall rules.Contact us to learn more.Bugfixes
This release also contains bugfixes and improvements. Most notably, this release:- Resolves an issue for Firefox users where turning a camera off and then back on would result in the camera video remaining off.
- Improves reliability for iOS Safari who receive a phone call while in a Daily meeting.
Release notes
For more information, check out the release notes.0.50.0
sendAppMessage improvements
sendAppMessage() now supports more ways to send messages between participants. In this release, you can now specify an array of participant IDs to message. To learn more, check out the reference docs.Release notes
For more information, check out the release notes.react-native-daily-js
0.49.0
Bugfixes
This release contains bugfixes and improvements. Most notably, this release:- Improves reliability for iOS users who receive a phone call while in a Daily meeting.
Release notes
For more information, check out the release notes.0.48.0
sendAppMessage improvements
sendAppMessage() now supports more ways to send messages between participants. In this release, you can now specify an array of participant IDs to message. To learn more, check out the reference docs.Release notes
For more information, check out the release notes.daily-react
0.12.0
Release notes
This release contains a number of improvements and bugfixes. For details, checkout the release notes.Daily Prebuilt
- Fixed an issue where participants would infrequently send low bandwidth video even when their network was performing nominally.
- Fixed an issue in the precall lobby where a user would see a message notifying them to grant device permissions even if permissions were already granted.
- Fixed an issue where the meeting end timer’s notification text could be difficult to read if certain custom theme colors were applied.
- Made a number of performance improvements as a result of improving daily-react hooks.
The latest updates include new precall methods and new audio level observer methods.
Overview
Highlights include:- New audio level observers provide access to the local and remote participants’ audio levels in
daily-jsandreact-native-daily-js - New precall methods enable you to build your own test page or run precall checks before users join a call
- Camera and microphone controls in
daily-jsandreact-native-daily-jshave been refactored to add stability and support more use cases
daily-js
0.49.1
Audio level observers
You can now access microphone audio levels from the local or remote participants throughdaily-js. With this audio data, you can add UI elements to your application to indicate when users are speaking and at what volume level. Additionally, these methods have been built to result in essentially no CPU impact.Get started by checking out the docs:- Events:
local-audio-levelandremote-participants-audio-level - Methods:
v2CamAndMic, which is enabled by default in this release.Precall methods
New precall methods have been added, which allow you to check the network connection quality and check for connectivity before a client joins a call. These methods can be used to build your own test page or to perform the checks in your lobby.Learn more about these methods in the docs:testNetworkConnectivity()andabortTestNetworkConnectivity()testConnectionQuality()andstopTestConnectionQuality()testWebsocketConnectivity()andabortTestWebsocketConnectivity()
Refactored local media controls
The controls for the local user’s camera and microphone have been refactored fordaily-js. This refactor offers more stability and provides additional support for use cases where the camera and microphone are handled independently. You can read more about this change in the daily-js release notes.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.react-native-daily-js
0.47.0
Audio level observers
You can now access microphone audio levels from the local or remote participants throughdaily-js. With this audio data, you can add UI elements to your application to indicate when users are speaking and at what volume level. Additionally, these methods have been built to result in essentially no CPU impact.Get started by checking out the docs:- Events:
local-audio-levelandremote-participants-audio-level - Methods:
v2CamAndMic, which is enabled by default in this release.Precall methods
New precall methods have been added, which allow you to check the network connection quality and check for connectivity before a client joins a call. These methods can be used to build your own test page or to perform the checks in your lobby.Learn more about these methods in the docs:testNetworkConnectivity()andabortTestNetworkConnectivity()testConnectionQuality()andstopTestConnectionQuality()testWebsocketConnectivity()andabortTestWebsocketConnectivity()
Refactored local media controls
The controls for the local user’s camera and microphone have been refactored forreact-native-daily-js. This refactor offers more stability and provides additional support for use cases where the camera and microphone are handled independently. You can read more about this change in the react-native-daily-js release notes.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.daily-react
0.11.x bugfixes
- 0.11.1: Improved the
useParticipantPropertyhook’s render performance by only re-rendering when the returned value(s) actually changed. - 0.11.2: Fixed an issue introduced in 0.11.1 where changes to tracks and permissions were not picked up correctly by
useParticipantProperty. - 0.11.3: Fixes an issue where optimized render cycles in
useParticipantIds(see 0.11.0) could lead to stalescreensreturned fromuseScreenShare. - 0.11.4: Fixed an issue where
useParticipantPropertyreturnedundefinedon first render, despite the correct value being available in store already. - 0.11.5: Fixed an issue where comparing
Maps andSets internally inside theusePermissionswould lead to an infinite recursive loop.
Daily Prebuilt
- We added support for Brazilian Portuguese.
- We made a number of bugfixes and performance enhancements.
Media Services
Features
- The VCS baseline composition now includes,
debug.showRoomState, a parameter that displays a transparent overlay of live room’s metadata for debugging purposes.
Improvements
- The VCS Toast component now adapts properly to its text content size so there’s no extra margin. Three new parameters give you more control over the Toast component’s appearance:
toast.maxW_pct_default: the toast’s width as a percentage of the viewport width, default (for landscape and 1:1 video)toast.maxW_pct_portrait: an override width for portrait video (where usually the toast should be wider than in landscape)toast.icon.size_gu: size of the icon displayed inside the toast
- VCS grid mode with a single participant now displays a label matching the
'single'layout mode when'videoSettings.showParticipantLabels'is enabled.
REST API
Dashboard
- The pricing page was updated to reflect new Support and Add-ons.
Additional
- Our brand and website got a facelift! As part of this rollout, the Developer Dashboard, our Docs site, and Daily Prebuilt (direct link only) have logo updates as well. Look for more branding changes in the near future.
- Video processors (bg-blur, bg-replacement) no longer rely on JSdeliver and use Daily’s CDN instead.
- The oldest supported version of
daily-jsis now 0.40.0.
Release highlights for daily-android and daily-ios 0.9.0 and daily-react 0.11.0.
Overview
Highlights include:daily-iosadds support for Adaptive HEVC (H.265 and H.264) streaming via a newiOSOptimizedpublishing encoding mode.- In
daily-android,daily-ios, anddaily-react, you can now modify a user’s admin permissions from within a call using the newcanAdminpermission. daily-androidanddaily-iosboth add support forstagedsubscriptions. Usingstagedsubscriptions, allows your app to remain performant while also being able to increase the participant count. Learn more in our best practices guide.
daily-android
0.9.0
Admin permissions
Admin permissions can now be configured prior to joining a meeting or dynamically from within a meeting. This new permission can be controlled through the updatePermissions method.Release notes
For more information, check out the release notes.daily-ios
0.9.0
Adaptive HEVC
Deliver higher quality video using less bandwidth and CPU with Daily’s Adaptive HEVC feature, available only on iOS. When enabling theiOSOptimized mode for a call, your daily-ios client will send both a high quality HEVC (also known as H.265) encoded video stream and a medium and low quality H.264 encoded video stream. This setting will ensure your application delivers a high-quality, efficient stream to iOS devices while still remaining cross-platform compatible by sending H.264 streams to other clients.This feature is available as an updatePublishing encoding mode:Admin permissions
Admin permissions can now be configured prior to joining a meeting or dynamically from within a meeting. This new permission can be controlled through the updatePermissions method.Release notes
For more information, check out the release notes.daily-react
0.11.0
Features
- New handling of
canAdminpermissions inusePermissions: the hook now returnscanAdminParticipants,canAdminStreamingandcanAdminTranscriptionin addition to the other permission fields. Read more aboutcanAdminin our docs. - New hook
useCPULoad: this hook keeps track of the CPU load state and reason (seegetCpuLoadStats()) via'cpu-load-change'events. - New hook
useRoomExp: this hook determines the meeting ejection date for the local participant, based oneject_after_elapsed,eject_at_room_expandexproom/token configuration.
Improvements
- Improved rendering performance of
useParticipantIdsanduseParticipantProperty: previously both hooks subscribed to all participant objects stored in the recoil state. This led to a lot of unexpected render cycles, e.g.useParticipantIds({ filter: 'remote' })would re-render when the local participant toggled their cam or mic. We’ve restructured the way we store and subscribe to changes in participant objects to achieve only targeted re-renders. Every instance ofuseParticipantIdsnow sets up its own local state of returned ids, and only updates the state when the resulting array of ids doesn’t match the previously stored one. To keep the connection to the recoil state store, we’re now using theuseRecoilTransactionObserver_UNSTABLEhook which worked flawlessly in our internal tests. Please be aware that with this change we’ve introduced at least 1 additional render cycle peruseParticipantIdsto initialize the state.
react-native-daily-js gets screen sharing support and both react-native-daily-js and daily-js get Advanced Network Controls.
Overview
Highlights from the last few weeks include:react-native-daily-jsadds support for screen sharing’- In
react-native-daily-jsanddaily-js, you can now modify a user’s admin permissions from within a call using the newcanAdminpermission react-native-daily-jsanddaily-jsboth add support for an IP proxy and the ability to provide your own TURN server infrastructure
daily-js
0.48.0
Admin permissions
Admin permissions can now be configured prior to joining a meeting or dynamically from within a meeting. Start learning about this new capability in the reference docs.Advanced firewall controls
daily-js now supports an IP proxy and the ability to override Daily’s TURN servers with your own. These new features will help customers who have users in a locked down network environment. Rather than provide an extensive allow list, these new features can help simplify the network requirements for your customers’ environment.Contact us to learn more.Upcoming: Refactored local media controls
Starting in the nextdaily-js version (planned to be 0.49.0), new underlying logic will power the local media controls. You can test this logic yourself in the current version of daily-js by specifying dailyConfig: { v2CamAndMic: true } wherever you provider your call options.For more information on this change, see this README.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.react-native-daily-js
0.46.0
Screen sharing support 🎉
react-native-daily-js now supports screen sharing for both iOS and Android clients. To learn more, check out the reference docs.Admin permissions
Admin permissions can now be configured prior to joining a meeting or dynamically from within a meeting. Start learning about this new capability in the reference docs.Advanced firewall controls
react-native-daily-js now supports an IP proxy and the ability to override Daily’s TURN servers with your own. These new features will help customers who have users in a locked down network environment. Rather than provide an extensive allow list, these new features can help simplify the network requirements for your customers’ environment.Contact us to learn more.Upcoming: Refactored local media controls
Starting in the nextreact-native-daily-js version (planned to be 0.47.0), new underlying logic will power the local media controls. You can test this logic yourself in the current version of react-native-daily-js by specifying dailyConfig: { v2CamAndMic: true } wherever you provider your call options.For more information on this change, see this README.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.Daily Prebuilt
- For mobile devices, added a confirmation step when stopping a recording. This aligns the UX between the desktop and mobile clients and prevents users from mistakenly stopping a recording.
- Fixed an issue where chat would incorrectly identify a user as being offline.
- Fixed an issue where Chrome users would sometimes see their computer go to sleep while in a call and sending media. Note: this is a Chrome regression, which will be fixed in Chrome M116. In the meantime, Prebuilt has added a patch to prevent this issue from occurring.
- Fixed an issue with the breakout rooms feature where reassigning the host role would fail at times.
- Fixed an issue with private rooms where clicking “Request to join” would not actually request to join.
- Fixed an issue for mobile users where an emoji reaction wasn’t sent under specific circumstances.
- Fixed an issue where the layout would not transition back to a participant focused view if a user selected “bandwidth saving” mode while screen sharing.
Media Services
Features
- Cloud recordings that are started by meeting tokens can now specify recording options through the
srotoken property. - The VCS baseline composition now has more override points. Host a
.jsfile on your own server that exports thedecorate*function that is being overwritten and specify that file url throughsession_assetsfor your recording: - A new VCS layout hook called,
useContentSize, is available. It allows a VCS layout function to discover the size of its nested contents after the first pass through the tree. Containers can then adapt to their content size while imposing min/max limits to text flows. An example composition in available in the VCS repository.
Improvements
fontWeightof a VCS Text component can now either be a string or a number.- With VCS, larger rectangles with rounded corners should now more closely match how video layers are rendered.
Bugfixes
- VCS no longer allows fractional pixel units for attributes like
cornerRadius.
REST API
Features
videoBitrateandaudioBitratehave been added to the REST APIs that start live streaming and start recording.
Improvements
- Rate limiting has been added to the
/logsendpoint (100 requests per 5 seconds).
Bugfixes
- Fixed a bug where the
/logsendpoint, given auserSessionId, would return logs from only one meeting session. We now return logs for all meeting sessions for a givenuserSessionId. - Extra input validations have been added to various endpoints.
Additional
- The oldest supported version of
daily-jsis now 0.40.0.
Daily makes improvements to how local devices are accessed via shortcuts.
Overview
Highlights from the last few weeks include:daily-reacthas newuseSendSettingshooks used to interact with the call quality settings- There are new properties returned from
useDevicesthat are accessible via shortcuts - Recordings now follow a new
recordings_templatemaking it similar to our streaming templates
daily-js
0.47.0
Upcoming: Refactored local media controls
We’re getting closer to releasing improved local media controls logic. Indaily-js version 0.49.0, we will be making this new logic the default behavior. You can test this logic now by specifying dailyConfig: { v2CamAndMic: true } wherever you provider your call options.For more information on this change, see this README.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.react-native-daily-js
0.45.0
Upcoming: Refactored local media controls
We’re getting closer to releasing improved local media controls logic. Inreact-native-daily-js version 0.47.0, we will be making this new logic the default behavior. You can test this logic now by specifying dailyConfig: { v2CamAndMic: true } wherever you provider your call options.For more information on this change, see this README.If you have questions or find any issues in your testing, please let us know at (help@daily.co).Release notes
For more information, check out the release notes.daily-react
0.10.0
Features
useSendSettingsis a new hook used to interact and change send settings. SeeupdateSendSettings()for an overview of send settings.useMeetingSessionStateis a new hook used to read and change meeting session data. Check our blog post on custom session data to learn when this API is suitable for you.useParticipantCountsis a new convenience hook aroundparticipantCounts().
Improvements
- New properties returned from
useDevicesarecurrentCam,currentMic, andcurrentSpeaker. These are shortcuts to the accompanyingselecteddevices incameras,microphones, andspeakers. usePermissionsnow accepts an optionalsessionId. This allows to conveniently read a remote participant’spermissions. When nosessionIdis passed, this hook returns the local participant’s permissions.
Daily Prebuilt
- Fixed an issue where there was a delay when trying to mute and unmute the microphone.
- Fixed an issue with VCS recordings where muted participants weren’t displayed with placeholder tiles.
- Fixed an issue where sendSettings applied as a frame property weren’t changing the send settings used in the call.
- Added logging for breakout rooms to support troubleshooting breakout calls.
Media Services
Features
- The VCS baseline composition now has overrides that let you customize the appearance of video items, e.g. to add icons and custom labels, or to modify the default decorations like active speaker highlighting.
Improvements
- Our transcription API now uses the most recent version of the Deepgram SDK (v2.1.1)
- Recordings now follow the new recordings_template — this affects all recording filenames that used the recording template previously.
- Updated our gstreamer pipeline to v1.22.3. Contributing to and syncing with the upstream gstreamer project is beneficial for all parties (us and the open source community).
- Decreased the backend startup time for VCS (especially when using custom assets).
Bugfixes
- Fixed a bug where the
live-streaming-updatedevent would be emitted before thelive-streaming-startedevent. - Patched an issue where RTMP->HLS via Cloudflare Live Endpoints would result in excessive client buffering.
- Fixed a bug that prevented
audio-onlypreset recordings from starting.
Dashboard
- For users that have not verified their email, they will be directed to verify before proceeding to the Daily Dashboard.
Additional
- Ensure that properties that can be applied to a domain or room respect the hierarchy; properties set on the room take precedence over the same property set on the domain.
- The oldest supported version of
daily-jsis now 0.37.0.
daily-js gets new screen sharing controls 🛠️
Overview
Highlights from the last few weeks include:- New screen sharing controls in
daily-js - New recording files can now be scrubbed through
daily-reactintroduces two new APIs:useMeetingState()andusePermissions()
daily-js
0.46.0
Screen sharing controls
You can now exercise more control over your screen share by specifying screen share constraints and modifying the send settings with your own custom settings or selecting from one of Daily’s screen share encoding presets. To learn how to customize screen share constraints, see thestartScreenShare documentation. To learn how to modify the screen share send settings, see the updateSendSettings() documentation.Upcoming: Refactoring local media controls
We are gradually rolling out a complete refactor of our internal logic that deals with gathering and updating a client’s local media (unmuting, changing devices, etc). This refactor will resolve a number of known issues around local device handling and simplify usage and permissions gathering that have long been a source of customer frustrations. 🎉We will be porting all domains to use this new logic in thedaily-js 0.49.0 release. For more information, see this README.Release notes
For more information, check out the release notes.react-native-daily-js
0.44.0
Upcoming: Refactoring local media controls
We are gradually rolling out a complete refactor of our internal logic that deals with gathering and updating a client’s local media (unmuting, changing devices, etc). This refactor will resolve a number of known issues around local device handling and simplify usage and permissions gathering that have long been a source of customer frustrations. 🎉We will be porting all domains to use this new logic in thereact-native-daily-js 0.47.0 release. For more information, see this README.Release notes
For more information, check out the release notes.daily-react
0.9.0
Features
- New hook
useMeetingState(): this hook is a direct wrapper aroundmeetingState()and returns a stateful representation of the current meeting state. More info in our docs. - New hook
usePermissions(): this hook is a convenience wrapper around the local participant’spermissionsobject. Use this hook to determine the presence status and ability to send media. More info in our docs.
Improvements
useLocalSessionId()does not returnnullanymore, which improves compatibility with other hooks likeuseParticipantProperty()oruseMediaTrack(). In case no local participant exists, this hook will return an empty string''.
Bugfixes
- Fixed an issue in combination with daily-js 0.45.0, where an app using
<DailyProvider>without passing acallObjectwould throw an error in development mode with React 18 and strict mode enabled.
Maintenance
- This release requires daily-js 0.45.0 or higher. We’ve updated the peerDependency accordingly.
Daily Prebuilt
- Emoji reactions, in video tiles, now appear in the lower left corner near the participant’s nametag.
- Fixed an issue where mobile users could pull to refresh, which could potentially lead to reloading the call.
- Fixed an issue in iOS Safari where video tracks could retain their last frame, in rare cases.
- Fixed an issue on mobile devices, where the overlay that would appear when someone knocked for room access was not covering the entire screen.
- Fixed an issue where the “speaking while muted” notification would prevent users from tabbing through the UI.
Media Services
Features
- We will begin billing for HLS usage starting in July 2023. Invoices generated in August for the July time period will include HLS usage.
Improvements
- There is a new muxer for all new cloud recordings that enables scrubbing through video files and changes how the files are encoded. This improvement also impacts recordings that will be stored in custom S3 buckets. Existing recordings prior to May 30, 2023 are unaffected.
- The default limit for multi-instance streaming and recording has been increased from 1 to 2.
- We parallelized asset downloads for VCS in order to reduce the startup time for live stream or recording sessions that use VCS.
Bugfixes
- Fixed an issue where
live-streaming-errorevents were previously not emitted at the start of a stream when there was an error. - Fixed an HLS issue where we would sometimes write an updated playlist (m3u8) before uploading a segment. This would cause clients to fail since they would ask for a non-existent segment.
- Fixed an issue where updating a recording session from
videoSettings.roundedCornersfromfalsetotruewould break the recording pipeline.
Additional
- We upgraded our fork of mediasoup to be closer in line with upstream. This upgrade improves the bandwidth estimations in various scenarios.
- Improvements were made to how our platform reconnects to internal data stores when a connection fails (thundering herds are no fun).
- We upgraded a few of our dependent libraries on the server-side; keeping our libraries up-to-date is important from a security and maintenance perspective.
- The oldest supported version of
daily-jsis now 0.34.0.
Daily’s iOS and Android mobile SDKs are now generally available! Check out the changelog to learn more.Customize
In 0.44.0, we added the ability to customize your sendSettings through a preset or your own settings. In this release, we’ve added a new preset called
As a reminder, Customize
In 0.42.0, we added the ability to customize your sendSettings through a preset or your own settings. In this release, we’ve added a new preset called
As a reminder,
Overview
We’ve had another busy few weeks. This time around, we’re excited to announce that our iOS and Android mobile SDKs are now generally available! Check out our iOS and Android docs to get started.daily-js
0.45.0
Customize sendSettings
In 0.44.0, we added the ability to customize your sendSettings through a preset or your own settings. In this release, we’ve added a new preset called bandwidth-and-quality-balanced, which is the new default value. You can now select between any of the three presets or provide your own encodings.Also, you can specify the sendSettings as a frame property, prior to joining to use your custom encodings from the beginning of a call.strictMode now enabled by default
As a reminder, daily-js supports using only a single instance of a call object. In daily-js 0.40.0, we introduced a flag called strictMode which helps you detect if your application is using multiple simultaneous call objects by printing a warning to the console. Starting in 0.45.0, strictMode is enabled by default, which will cause your application to throw an error if multiple call objects are detected. If you need to use 0.45.0 and are still seeing errors, you can disable strictMode.Why is this important? Eliminating instances of multiple call objects will help eliminate bugs in your applications.Release notes
For more information, check out the release notes.react-native-daily-js
0.43.0
Customize sendSettings
In 0.42.0, we added the ability to customize your sendSettings through a preset or your own settings. In this release, we’ve added a new preset called bandwidth-and-quality-balanced, which is the new default value. You can now select between any of the three presets or provide your own encodings.Also, you can specify the sendSettings as a frame property, prior to joining to use your custom encodings from the beginning of a call.strictMode now enabled by default
As a reminder, react-native-daily-js supports using only a single instance of a call object. In react-native-daily-js 0.38.0, we introduced a flag called strictMode which helps you detect if your application is using multiple simultaneous call objects by printing a warning to the console. Starting in 0.43.0, strictMode is enabled by default, which will cause your application to throw an error if multiple call objects are detected. If you need to use 0.43.0 and are still seeing errors, you can disable strictMode.Why is this important? Eliminating instances of multiple call objects will help eliminate bugs in your applications.Release notes
For more information, check out the release notes.daily-android
0.8.0
daily-android is now GA 🎉
The daily-android SDK has been in beta for the last year, and starting with the 0.8.0 release, the SDK is now generally available!Call logs and metrics
Calls now include event logs and metrics, which you can access through the/logs endpoint or the Daily dashboard.Release notes
For more information, check out the release notes.daily-ios
0.8.0
daily-ios is now GA 🎉
The daily-ios SDK has been in beta for the last year, and starting with the 0.8.0 release, the SDK is now generally available!Call logs and metrics
Calls now include event logs and metrics, which you can access through the/logs endpoint or the Daily dashboard.Release notes
For more information, check out the release notes.daily-react
0.8.0
Improvements
- The
'screen'filter foruseParticipantIdsnow filters participants with active screen shares, based on theirtracksproperty. The booleanscreenproperty, as returned by.participants()is deprecated. - Attempts to
.play()video tags rendered fromDailyVideocomponents have been improved. DailyAudioandDailyAudioTracknow supportrmpAudiotracks.DailyVideonow supportsrmpVideotracks.
Bugfixes
- Fixed an issue that could lead to
DailyAudionot re-rendering audio tags correctly, which would result in missing sound from remote participants.
Daily Prebuilt
- Participants in a breakout room can now request help from the host by clicking a “Contact host” button in their tray.
- When a participant attempts to speak while their microphone is muted, they’re alerted of this fact by a popup.
- Mobile devices now send portrait video as 9:16 and landscape video as 16:9. The Prebuilt tiles were updated to support the new ratios.
- When network connectivity drops, the chat form field becomes disabled. This is to prevent participants from sending messages that aren’t received due to a lack of connectivity.
Media Services
- We now automatically add
EXT-X-PROGRAM-DATE-TIMEto our HLS output (playlist). This may be used as a basis for seeking, for display, or other purposes.
REST API
- The
DELETE /rooms/:nameendpoint now uses “has a room been expired for > 24 hours” to determine whether it can be deleted, rather than “is a room expired”.
Dashboard
- When updating your credit card information, you must now add your address. We require this information for tax purposes.
Additional
- Fixed an issue where the video upload bitrate could be a negative number.
- Fixed an issue where the
network-quality-changeevent could have aqualityvalue greater than 100%. - A number of internal room management performance optimizations were made.
- The oldest supported version of
daily-jsis now v0.32.0.
Overview
April was a very busy month! Some highlights include:- You can modify the send settings for the local camera and custom tracks that you publish via the
updateSendSettings()API - HIPAA organizations can now record using raw tracks
- Noise cancellation is now easier to find and use in Daily Prebuilt
- Daily Prebuilt’s breakouts feature now supports calls with more than 50 participants
experimentalChromeVideoMuteLightOff in favor of keepCamIndicatorLightOn.daily-js
0.44.1
Bugfixes
- Fixed an issue where simulcast encodings set within dailyConfig were not respected.
0.44.0
Features
- Updated our default simulcast settings and provided new methods to read and modify simulcast settings within a call. We provide two presets which match most needs,
'bandwidth-optimized'and'quality-optimized', but developers can specify custom settings as well for advanced usage. SeeupdateSendSettings()for more details.- Related to the above work, we have changed the default send resolution when using daily-js in mobile browsers:
- Android: before the resolution was 720x1280. Now, the default resolution is 360x640.
- iOS: before the resolution was 480x640. Now, the default resolution is 360x640.
- iPads now use mobile resolution and layer defaults. Previously, some iPads were using defaults intended for desktops.
- Related to the above work, we have changed the default send resolution when using daily-js in mobile browsers:
- Added participant selection for recording and streaming layouts.
Bugfixes
- Fixed an issue where switching mic after starting camera video processing could cause the camera processor to go away.
- Fixed an issue where quickly calling
updateInputSettings()multiple times in succession could lead to a video or audio processor not being applied.
Other improvements
- Improved the behavior of recordings when a meeting is moved from one SFU to another, e.g. due to a networking issue or a new version of the server being deployed. A recording error is now thrown in those cases, allowing developers or end users to restart the recording or otherwise respond.
- Improved handling of call logs during disconnect to ensure logs are properly flushed during a disconnect.
0.43.0
Features
- Daily JS now allows HIPAA organizations to use raw tracks recordings.
Bugfixes
- Fixed a bug where, in P2P mode, toggling the camera off and back on would disable background effects.
- Fixed an occasional WASM memory access error by adding an additional safety check around video not existing when trying to process it.
- Fixed a bug where
getInputSettings()could erroneously report afterload()(orstartCamera(), orjoin()) that you had no processors specified, until the firstinput-settings-updatedevent fired. This could occur even if you specified one in the preload cache via a constructor argument, or a previous call toupdateInputSettings(). - Fixed an issue where a non-default device could be selected automatically as though it were the default.
- Fixed an issue where the unprocessed track could occasionally be sent when background processing is enabled.
- Fixed an issue where leaving soon after joining could result in
attempt to send to closed socketorerror connecting to the sfuerrors to be logged. - Fixed a longstanding issue where back-to-back
available-devices-updatedevents (with identical payloads) would fire in the case of a combination input/output device (i.e. a headset) being plugged in or unplugged. - Fixed some out of date type definitions for
DailyInputVideoSettings. - Fixed
DailyEventObjectFatalErrortypes to resolve correctly in typescript codebases.
Other improvements
- Improved handling of failure to switch from P2P to SFU topology when a recording is initiated. A recording error is now emitted, rather than failing silently.
- Updated several libraries with security issues reported by npm audit to versions without reported vulnerabilities.
- Deprecate
experimentalChromeVideoMuteLightOffin favor ofkeepCamIndicatorLightOn, and flip the default. If not specified otherwise, turning off the camera now turns the camera indicator light off. - Improved device detection code to use
devicechangeevent wherever available rather than polling. - Adjusted the cpu load trigger for disabling background processing to be a little more optimistic and less likely to disable processing.
react-native-daily-js
0.42.1
Bugfixes
- Fixed an issue where simulcast encodings set within
dailyConfigwere not respected.
0.42.0
Features
- Updated our default simulcast settings and provided new methods to read and modify simulcast settings within a call. We provide two presets which match most needs,
'bandwidth-optimized'and'quality-optimized', but you can specify custom settings as well for advanced usage. SeeupdateSendSettings()for more details.- Related to the above work, we have changed the default send resolution when using daily-js in mobile browsers:
- Android: before the resolution was 720x1280. Now, the default resolution is 360x640.
- iOS: before the resolution was 480x640. Now, the default resolution is 360x640.
- iPads now use mobile resolution and layer defaults. Previously, some iPads were using defaults intended for desktops.
- Related to the above work, we have changed the default send resolution when using daily-js in mobile browsers:
- Added participant selection for recording and streaming layouts.
Bugfixes
- Fixed an issue where publishing encodings weren’t always respected on React Native for Android.
- Fixed an issue where a websocket error would be logged after leaving a call using React Native for Android.
Other improvements
- Improved the behavior of recordings when a meeting is moved from one SFU to another, e.g. due to a networking issue or a new version of the server being deployed. A recording error is now thrown in those cases, allowing developers or end users to restart the recording or otherwise respond.
- Improved handling of call logs during disconnect to ensure logs are properly flushed during a disconnect.
0.41.0
Features
- Daily JS now allows HIPAA organizations to use raw tracks recordings.
Bugfixes
- Fixed an issue where calculation of CPU metrics could throw an error on react native.
- Fixed a bug where
getInputSettings()could erroneously report afterload()(orstartCamera(), orjoin()) that you had no processors specified, until the firstinput-settings-updatedevent fired. This could occur even if you specified one in the preload cache via a constructor argument, or a previous call toupdateInputSettings(). - Fixed an issue where a non-default device could be selected automatically as though it were the default.
- Fixed an issue where leaving soon after joining could result in
attempt to send to closed socketorerror connecting to the sfuerrors to be logged. - Fixed a longstanding issue where back-to-back
available-devices-updatedevents (with identical payloads) would fire in the case of a combination input/output device (i.e. a headset) being plugged in or unplugged. - Fixed some out of date type definitions for
DailyInputVideoSettings. - Fixed
DailyEventObjectFatalErrortypes to resolve correctly in typescript codebases.
Other improvements
- Updated several libraries with security issues reported by npm audit to versions without reported vulnerabilities.
- Improved device detection code to use
devicechangeevent wherever available rather than polling.
Daily Prebuilt
Features
- The user’s noise cancellation selection is cached in order to make it easier to reuse their preferred setting.
- Added large call support (enabled through the
experimental_optimize_large_callsroom property) for breakout rooms. By enablingexperimental_optimize_large_callsfor a breakouts enabled room, you can now add more than 50 participants to a breakout room. - Owners in a breakout room now have the ability to see the attendee list for all rooms from the People panel.
- Users can now enable noise cancellation from the precall lobby. When
enable_noise_cancellation_uiis enabled for a room, a newReducebutton appears in the lobby that lets users turn noise cancellation on and off.
Bugfixes
- Fixed an issue where local users couldn’t pin themselves.
- Fixed an issue where Picture-in-Picture would sometimes fail to start.
- Fixed an issue where a console error was emitted due to a
play()attempt being interrupted. This has no functional impact, but removes an error from occurring.
Media Services
- HIPAA-enabled domains can now create raw-tracks recordings.
- Continued tuning and testing a new video muxer which will create seekable video without remuxing.
- Ensured that
transcription-startedevents are sent to new participants that join a call. - Fixed a regression that caused recordings using the
fpsparameter to fail for valid inputs.
VCS
- Fixed a bug with
videoSettings.preferredParticipantIdsthat unintentionally removed certain participants from a recording. - Resolved security vulnerabilities of dependent libraries in
daily-vcs.
REST API
- Made a number of performance optimizations for the room creation API.
Dashboard
- Added support to display iOS and Android version and library information for native mobile users.
- Fixed an issue where some toggles in the dashboard’s Room tab needed to be double clicked to enable and disable features.
- Fixed an issue where a console error was emitted due to a JSON error.
Additional
- We are now collecting sales tax for existing customers in New York.
- Optimized some internal communication paths to reduce the overload system load for our SFUs.
- The oldest supported version of
daily-jsis now v0.32.0.
Overview
This is an action-packed Changelog with a number of new feature releases including:- Noise cancellation powered by Krisp is available in
daily-jsand Daily Prebuilt - Breakout rooms is available in Daily Prebuilt
- Prebuilt Integrations API public beta is available in Daily Prebuilt. Embed third-party apps like whiteboards and chat apps using this new API.
- CPU Load Change event is available in
daily-js. Use this new event to improve call quality by monitoring CPU load using.
daily-js
0.42.2
Features
- Noise cancellation powered by Krisp is now available as a public beta! Check out our blog post on this feature to learn more.
- We also added a new event called
cpu-load-change, which reports when the CPU load transitions from low to high (and vice versa). This event can be used along with other quality events to improve call quality admist suboptimal network and device conditions. Refer to our reference docs for details.
Bugfixes
- Fixed an issue with default audio output change detection as well as an issue where the device returned by
callObject.getInputDevices().speakerwould often be a microphone. - Fixed an issue where a non-default audio output device specified via
setOutputDeviceAsync()wouldn’t properly apply to audio elements in the DOM if they were added after the call tosetOutputDeviceAsync(). For example, if a new participant joined afterward, or ifsetOutputDeviceAsync()were invoked beforejoin(). - Fixed a problem where
setInterval()intervals that the call object starts are never cleaned up if the user doesn’t end upjoin()ing a call first. Intervals should be cleaned up when the user invokesdestroy(), whether or not they everjoin()ed. There is one side effect of this change: now, afterdestroy()is run, the call object will always be left withmeetingState()as either'left-meeting'or'error', whereas previously the call object could also be left in a number of other states. - Fixed an issue where if you join a meeting in P2P mode with mic on, your audio sometimes doesn’t play for the other person.
- Fixed the
DailyEventObjectCameraErrorandDailyCameraErrorObjecttype definitions to resolve to their defined camera error types, allowing developers to handle the different types of camera errors ergonomically in a TypeScript codebase. - Fixed an issue in our TypeScript definitions of custom layout properties passed to
startRecording()/startLiveStreaming().composition_idis now marked as optional. - Fixed an issue where, in P2P mode, toggling the camera off and back on would disable background effects.
Other improvements
- Increased the number of internal call quality statistics we record, for example the number of pauses and freezes in a video track or audio track.
- Added detail to connection failure meeting errors.
- Made a change to ensure that
instanceIdshould always be included inlive-streaming-startedevents.
react-native-daily-js
0.40.0
Features
- We added a new CPU event called
cpu-load-changewhich reports when the CPU transitions from low to high utilization state (and vice versa). This event can be used along with other quality events to improve call quality admist suboptimal network and device conditions. Refer to our reference docs for details.
Bugfixes
- Fixed a small typo in the React Native TypeScript definitions.
- Fixed an issue with default audio output change detection, as well as an issue where the device returned by
callObject.getInputDevices().speakerwould often be a microphone. - Fixed a problem where
setInterval()intervals that the call object starts are never cleaned up if the user doesn’t end upjoin()ing a call first. Intervals should be cleaned up when the user invokesdestroy(), whether or not they everjoin()ed. There is one side effect of this change: now, afterdestroy()is run, the call object will always be left withmeetingState()as either'left-meeting'or'error', whereas previously the call object could also be left in a number of other states. - Fixed an issue where if you join a meeting with mic on, your audio sometimes doesn’t play for the other person.
- Fixed the
DailyEventObjectCameraErrorandDailyCameraErrorObjecttype definitions to resolve to their defined camera error types, allowing developers to handle the different types of camera errors ergonomically in a TypeScript codebase. - Fixed an issue in our TypeScript definitions of custom layout properties passed to
startRecording()/startLiveStreaming().composition_idis now marked as optional. - Fixed an issue where, in P2P mode, toggling the camera off and back on would disable background effects.
Other improvements
- Increased the number of internal call quality statistics we record, for example the number of pauses and freezes in a video track or audio track.
- Added detail to connection failure meeting errors.
- Made a change to ensure that
instanceIdshould always be included inlive-streaming-startedevents.
daily-react
0.7.3
Improvements
- Updated wrapper methods to
daily-jsexposed from hooks to infer function types fromdaily-jsto avoid type mismatches betweendaily-reactanddaily-js. This impacts:useInputSettings().updateInputSettingsuseLiveStreaming().startLiveStreaminguseLiveStreaming().stopLiveStreaminguseLiveStreaming().updateLiveStreaminguseReceiveSettings().updateReceiveSettingsuseRecording().startRecordinguseRecording().stopRecordinguseRecording().updateRecordinguseScreenShare().startScreenShareuseScreenShare().stopScreenShareuseTranscription().startTranscriptionuseTranscription().stopTranscription
- Added checks for destroyed call objects to prevent calling
daily-jsmethods on already destroyed instances - Dropped Node.js 12 from our CI/CD checks. This means that using
daily-reactin Node.js 12 setups isn’t tested anymore. Node.js 12 stopped receiving security updates in April 2022.
Bugfixes
- Fixed potentially stale state information for waiting participants returned from
useWaitingParticipants(). - Fixed an issue where
useReceiveSettings()could return outdated information about received layers.
Daily Prebuilt
- Breakout rooms are now available as a public beta! You can enabled this feature either at the domain level, which will apply to all rooms, or at the room level, which will apply to specific rooms.
- The Prebuilt Integrations API public beta launched! With this new API, you can embed any third-party website into Daily Prebuilt as an iframe. In our early testing, we found some popular use cases to be adding a collaborative whiteboard and a third-party chat API. Refer to our reference docs to learn more. Also, keep a lookout for an upcoming blog post with some example integrations.
- Along with the Prebuilt Integrations API, we’ve added a new Sidebar API, which allows you to open the Sidebar to a specific tab using
setSidebarView(). This feature goes hand-in-hand with asidebarintegration. - Fixed an issue where tooltips would appear without a cursor hover.
- Added the ability to select an emoji skin tone. This feature is enabled when you enable Reactions or Advanced Chat.
VCS
- Parameter
videoSettings.omitPausedis now renamed tovideoSettings.omitPausedVideo. - Refactored our core library to bring performance improvements to VCS composition rendering while lowering CPU usage.
- Fixed a bug where text was not center aligned in the baseline composition slate component.
- The
transformobject now has additional properties:scale, scaleX, scaleY. This transform only applies to graphics, not video. - The VCS baseline composition now has a new
text.scale_xparameter, which is useful for changing the width of your text.
REST API
- Added new batch operations beta feature for creating and deleting rooms.
- Added a few more input guards for API parameters and similar cases.
Dashboard
- Added the ability to enable or disable the noise cancellation UI in Prebuilt as a domain and room property. You can control this property using the
Noise cancellation UIsetting in the dashboard. - Made a number of security improvements, including invalidating previous sessions upon changing an email address and improving the robustness of dashboard invite links.
Additional
- Fixed a bug where, in P2P mode, toggling the camera off and back on could disable background effects.
- We’ve updated our fork of mediasoup with upstream improvements and bugfixes.
- The oldest supported version of
daily-jsis now v0.31.0.
March 15, 2023
In this release, we made a number of bug fixes toupdateInputSettings(), which is used to configure background blur and effects. In addition, we made a number of performance improvements to the SDKs and Daily Prebuilt. Lastly, Daily calls now switch to an SFU topology when the 3rd participant joins a call.daily-js
0.41.0
- Made
inputSettingsspecifiable in thejoin(),createCallObject(), andcreateFrame()methods, so that developers no longer need tojoin()first, and then callupdateInputSettings(). See theinputSettingsobject’s documentation for more info. - Fixed an issue where processed video tracks could fall back to a default aspect ratio when muted and unmuted, introducing unwanted cropping or letterboxing.
- Fixed a memory leak which could occur when processed video tracks are muted and unmuted.
- Fixed TypeScript definitions for streaming layouts to remove
composition_idfrom the object passed to theupdateRecording()function (where it is not allowed), while keeping it instartRecording(), wherecomposition_idis required. - Fixed an issue where
iframeEventInputSettingsUpdateError()was being sent an error object and not the error message string it expected. - Improved handling of custom backgrounds in the case where the background’s aspect ratio doesn’t match the video’s aspect ratio, by fitting the custom background within the video frame.
- Updated
mediasoup-clientto version 3.6.80, which among other things, adds unified plan support for React Native. - Fixed an issue where calling
updateInputSettings()immediately before callingsetLocalVideo()would result in an error.
react-native-daily-js
0.39.0
- Fixed TypeScript definitions for streaming layouts to remove
composition_idfrom the object passed to theupdateRecording()function (where it is not allowed), while keeping it instartRecording(), wherecomposition_idis required. - Updated
mediasoup-clientto version 3.6.80, which among other things, adds unified plan support for React Native, allowing our library to updatereact-native-webrtcto 106.0.6. - Updated
react-native-webrtcto 106.0.6, which drops support for Plan B and adds support for Unified Plan inreact-native-daily-js. Caution: As a consequence of the above, be careful not to use this version ofreact-native-webrtcwith any earlier versions ofreact-native-daily-js, or any earlier versions ofreact-native-webrtcwith this version ofreact-native-daily-js, as they will not be able to communicate.
Daily Prebuilt
- Reduced the required amount of upload bandwidth required when a participant screen shares by no longer sending the top simulcast layer. This results in less bandwidth and CPU use for users that screen share.
- Updated the emoji reaction streams such that both the Speaker and Grid view work similarly.
- Fixed an issue where a meeting owner would not see a name change made by a participant who knocked for access to a private room.
- Fixed an issue in Safari 14 where chat would not scroll correctly.
- Fixed an issue where the layout would shift when opening the participant actions menu on a participant’s tile.
VCS
- Fixed an issue in the VCS Simulator where the peer list was out of sync with the inputs selected by the user.
Dashboard
- Fixed an issue where accounts with lots of recordings were having issues loading the Recordings tab.
- Fixed an issue where the onboarding test call was not working.
- Fixed an issue where tooltips would appear at the wrong size or in the wrong place when the browser was zoomed in or out.
Additional
- Daily calls now switch from a P2P to an SFU network topology when the 3rd participant joins a call. When the switchover happens can be controlled by a domain and room property called
sfu_switchover. Through data analysis and experience, we’ve found that P2P calls perform best as 1:1 calls. Calls with 3 or more participants perform optimally on Daily’s SFU infrastructure. - Resolved numerous bugs and security findings to help keep Daily’s calls and platforms safe.
- Fixed an issue that caused duplicate usage billing.
- The oldest supported version of
daily-jsis now v0.30.0.
The latest updates to the Daily real-time audio and video API, including several API improvements, performance improvements, and bugfixes.
February 28, 2023
In this release, we delivered a number of improvements and fixes across the platform. Fordaily-js and react-native-daily-js developers, please view the READMEs linked below to learn about upcoming changes to the APIs.daily-js
0.40.0
- Today, calls are by default configured to leave the camera indicator light on even after the camera has been turned off. We’re in the process of changing that behavior such that the camera light turns off after the camera has been turned off. The first step in that process is adding a
keepCamIndicatorLightOnflag. This flag currently causes no change todaily-jsbehavior. In the near future, that flag will become an opt-in flag when the default behavior changes. See the README for more information. - Daily supports using only a single instance of a call object. Using multiple, simultaneous call objects causes various unexpected issues. To help detect these issues, we’ve added an opt-in flag called
strictModewhich throws anErrorif more than one call object is detected in use.strictModewill become the default behavior beginning in 0.43.0. See the README for more information. - Added a
getCallInstance()method, which can get a handle to your call instance from anywhere in case you lost track of it. - Added a new
typefield to track events, which can be any of"video","audio","screenVideo","screenAudio","rmpVideo","rmpAudio", or other values of typestringfor custom tracks. - Live streams can now emit update events, including events for errors and interruptions.
- Fixed an issue where fullscreen mode wouldn’t trigger on iframed calls.
- Fixed an issue with Safari < 16 where, when
experimentalChromeVideoMuteLightOffis set, turning the camera off and then on would result in your local camera track having a 4:3 aspect ratio. - Fixed an issue where background setting and camera stream changes occurring at the same time could conflict and cause errors.
- Fixed an issue where background settings could not be applied if the camera had never been enabled.
- Fixed an issue where a
403 Forbiddenerror could occur while downloadingdaily-jscomponents, if those components are accessed during Daily production deployments.
react-native-daily-js
0.38.0
- Daily supports using only a single instance of a call object. Using multiple, simultaneous call objects causes various unexpected issues. To help detect these issues, we’ve added an opt-in flag called
strictModewhich throws anErrorif more than one call object is detected in use.strictModewill become the default behavior beginning in 0.43.0. See the README for more information. - Added a
getCallInstance()method, which can get a handle to your call instance from anywhere in case you lost track of it. - Added a new
typefield to track events, which can be any of"video","audio","screenVideo","screenAudio","rmpVideo","rmpAudio", or other values of typestringfor custom tracks. - Live streams can now emit update events, including events for errors and interruptions.
- Fixed an issue where background setting and camera stream changes occurring at the same time could conflict and cause errors.
- Fixed an issue where background settings could not be applied if the camera had never been enabled.
- Fixed an issue where a
403 Forbiddenerror could occur while downloadingdaily-jscomponents, if those components are accessed during Daily production deployments.
Daily Prebuilt
- Prebuilt now supports calling
enumerateDevices()before calling join. This allows developers to build their own prejoin experience before starting a Prebuilt call. - Fixed an issue where the host would see the Allow/Deny prompt for a knocking visitor appear partially covered up by the sidebar.
- Fixed an issue on mobile browsers where long participant names would overflow the text container of the paging controller.
- Fixed a bug where, in a very large group call, the microphone mute state can become out of sync with the remote participant’s microphone state.
- Fixed an issue in Safari 16 where Picture-in-Picture was not working correctly.
- Improved Safari 16 Picture-in-Picture to support displaying multiple participants and screen shares.
- Disabled Picture-in-Picture and the microphone for Safari 14 and below due to Safari not supporting the required APIs.
REST API
- The
POST /roomsendpoint for creating new rooms now has a rate limit of 50 requests per 30 seconds; this is the same rate limit as theDELETE /rooms/:nameendpoint. See our rate limits for more information. - The
GET /meetingsendpoint now includes ano_participantsoptional parameter. If set totrue, this endpoint won’t return the participant list in each meeting. This is useful for meetings with large numbers of participants.
Live streaming & recording
- Recordings stored in custom S3 buckets can now be saved with custom prefixes based on these predefined variables:
room_name,domain_name,mtg_session,date, &instanceId. This setting can be applied as a room or domain configuration. Seerecordings_templatefor more details. - Recordings & RTMP streams have a new max video bitrate of 10 Mbps.
- RTMP streams now have a lower minimum video bitrate of 10 kbps for audio-only streams.
- The
"live-streaming-updated"event now returns astateon a successful reconnection ("connected") or failure ("interrupted"). - Fixed a bug where the last segment of an HLS recording wasn’t being written to the S3 bucket.
VCS
- Add support for direction handling for the
splitvideo setting:videoSettings.split.direction. It allows you to control whether the split is"horizontal"or"vertical". The default is automatic given the viewport,"auto-by-viewport". - Add new active speaker highlight parameters:
videoSettings.highlight.color: the color of the active speaker highlight. The default isrgb(255, 255, 255).videoSettings.highlight.stroke_gu: the width of the highlight. The default is0.2.
- Improved screen share support in the VCS Simulator. Simulated screen shares are now consolidated with camera inputs where possible, so that each camera and screen share creates just one simulated room peer (as opposed to previous implementation that included screen shares as separate peers).
- The VCS Simulator now includes a dropdown menu that allows for faster access to each param group:
videoSettings,text,image,toast,webFrame,openingSlate,titleSlate. - Fixed a bug that allowed x/y coordinates to be negative, which made some compositors unhappy.
Dashboard
- Fixed an issue where accounts with a large number of recordings would find the Recordings tab slow to load.
Additional
- Fixed an issue where the aspect ratio would change to 4:3 when applying video processing to a video track (e.g., applying background blur or an image).
- Improved memory utilization when applying video processing to a video track (e.g., applying background blur or an image)
- Improved how background images with non-16:9 ratios are applied when adding a background image to a camera stream.
- Fixed an issue where an error was returned when applying background blur or a background image before a camera was turned on.
- Fixed a bug that occurred after we upgraded the Deepgram SDK used for our transcription feature. We are currently running Deepgram SDK v1.14.0.
- Updated server logging so that all transcribed content is redacted from logs.
- The oldest supported version of
daily-jsis now v0.30.0.
The latest updates to the Daily real-time audio and video API.
February 1, 2023
In this release, we delivered a number of bug fixes and security enhancements across our platform.daily-js
0.38.0
- Fixed a bug where an undefined property access error could be thrown while unmuting when a device is not found.
- Fixed an issue where a blocked device could appear to have a blank track and be unmuted.
- Fixed TypeScript definitions for
startCustomTrack()andstopCustomTrack(). - Updated TypeScript definitions for
DailyTrackSubscriptionOptions. - Reduced the memory footprint of video processor URL objects once they’re no longer needed.
- Improved the logic that prevents non-owner participants from sending mute video and audio commands to others in a call.
- Removed a long-deprecated path to set the local owner flag.
react-native-daily-js
0.36.0
- Fixed a bug where an undefined property access error could be thrown while unmuting when a device is not found.
- Fixed an issue where one blocked device being blocked could cause both devices to appear as blocked.
- Fixed an issue where a blocked device could appear to have a blank track and be unmuted.
- Updated TypeScript definitions for
DailyTrackSubscriptionOptions. - Reduced the memory footprint of video processor URL objects once they’re no longer needed.
- Improved the logic that prevents non-owner participants from sending mute video and audio commands to others in a call.
- Removed a long-deprecated path to set the local owner flag.
Daily Prebuilt
- Added validity checks to the emoji reactions, so only available reactions can be sent to others.
REST API
- Improved information protection during the sign-up/log-in flow by not returning whether emails are valid or not.
- Improved protection of password reset emails by not sharing password reset information with third parties.
Additional
- The oldest supported version of
daily-jsis now v0.29.0.
The latest updates to the Daily real-time audio and video API, including new REST API endpoints, improvements to daily-react, and longer streaming durations.
January 18, 2023
In this release, we delivered a number of improvements and fixes across the platform. Highlights include new REST API endpoints, improvements todaily-react, longer streaming durations, and more.daily-js
0.37.0
- Added a type definition for the
"not-allowed"fatal error for cases when users are not allowed to enter a meeting. - Fixed an issue where an error could be thrown while formatting a number used in a telemetry calculation.
react-native-daily-js
0.35.0
- Added a type definition for the
"not-allowed"fatal error for cases when users are not allowed to enter a meeting. - Fixed an issue where an error could be thrown while formatting a number used in a telemetry calculation.
daily-react
0.7.0
- New hook,
useAudioLevel: this hook allows you to monitor the volume of a givenMediaStreamTrack. Read more in ouruseAudioLeveldocs. DailyAudioTrackandDailyVideonow both accept arefand additional HTML attributes to be passed to the underlying DOM element.DailyAudionow accepts arefas an imperative handle. The assignedrefhas a couple of getter methods to query for a subset of<audio>elements. Check ourDailyAudiodocs for detailed information.useDevicesnow returns a new initial state,"idle", forcamStateandmicState. Before this release it defaulted to"pending", which is now only true while a request for device access is actually pending.- Improved the speaker slot assignment logic in
DailyAudio. useLocalSessionIdnow correctly returns the local participant’ssession_idafterleave()-ing a call andpreAuth()-ing again.
0.7.1
- Fixed an issue where
camStatereturned fromuseDevices()switched back to"idle"when muting the camera. - Fixed an issue where
useLocalSessionIdreturned a stalesession_idwhen the local participant was updated immediately before callingleave().
Daily Prebuilt
- Added a microphone test feature to the precall lobby. This allows users to test how their mic sounds before joining a call.
- Updated the React button in the tray from a smiley to a heart icon to better align the button stylings in the tray.
- Fixed an issue where participant names would appear out of alphabetical order in the People panel.
REST API
- Official documentation our API rate limits has been added.
- Added a new API endpoint that allows you to fetch presence data for a specific room.
- Added a two new API endpoints that allow you to fetch information about meetings when those meetings contain a large number of participants. The first endpoint provides data for a specific meeting. The second endpoint provides a paginated list of participants for a specific meeting.
- Added a few performance optimizations to the rooms creation endpoint.
- Fixed a bug so that the logs endpoint properly returns a HTTP 400 when no meeting was found for the given user session ID.
Live streaming & recording
- The default streaming
maxDurationis now86400seconds (24 hours) and is separate from the recordingmaxDurationof10800seconds (3 hours). - Added support for
customAudiotracks in recordings. - Enhanced our media pipeline to ensure all recordings will continue to upload in the event of a recording failure error.
VCS
- All meetings that are streamed or recorded with non-custom layouts are now powered by Daily VCS in the backend.
Additional
- The oldest supported version of
daily-jsis now v0.27.0.