April 3, 2023

Overview

This is an action-packed Changelog with a number of new feature releases including:

  • Noise cancellation powered by Krisp is available in daily-js and 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.

Check out the notes below to learn more about those features and more!

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().speaker would 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 to setOutputDeviceAsync(). For example, if a new participant joined afterward, or if setOutputDeviceAsync() were invoked before join().
  • Fixed a problem where setInterval() intervals that the call object starts are never cleaned up if the user doesn't end up join()ing a call first. Intervals should be cleaned up when the user invokes destroy(), whether or not they ever join()ed. There is one side effect of this change: now, after destroy() is run, the call object will always be left with meetingState() 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 DailyEventObjectCameraError and DailyCameraErrorObject type 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_id is 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 instanceId should always be included in live-streaming-started events.

react-native-daily-js

0.40.0

Features

  • We added a new CPU event called cpu-load-change which 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().speaker would 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 up join()ing a call first. Intervals should be cleaned up when the user invokes destroy(), whether or not they ever join()ed. There is one side effect of this change: now, after destroy() is run, the call object will always be left with meetingState() 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 DailyEventObjectCameraError and DailyCameraErrorObject type 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_id is 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 instanceId should always be included in live-streaming-started events.

daily-react

0.7.3

Improvements

  • Updated wrapper methods to daily-js exposed from hooks to infer function types from daily-js to avoid type mismatches between daily-react and daily-js. This impacts:
    • useInputSettings().updateInputSettings
    • useLiveStreaming().startLiveStreaming
    • useLiveStreaming().stopLiveStreaming
    • useLiveStreaming().updateLiveStreaming
    • useReceiveSettings().updateReceiveSettings
    • useRecording().startRecording
    • useRecording().stopRecording
    • useRecording().updateRecording
    • useScreenShare().startScreenShare
    • useScreenShare().stopScreenShare
    • useTranscription().startTranscription
    • useTranscription().stopTranscription
  • Added checks for destroyed call objects to prevent calling daily-js methods on already destroyed instances
  • Dropped Node.js 12 from our CI/CD checks. This means that using daily-react in 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 a sidebar integration.
  • 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.omitPaused is now renamed to videoSettings.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 transform object 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_x parameter, 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 UI setting 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-js is now v0.31.0.