February 28, 2023

In this release, we delivered a number of improvements and fixes across the platform. For daily-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 keepCamIndicatorLightOn flag. This flag currently causes no change to daily-js behavior. 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 strictMode which throws an Error if more than one call object is detected in use. strictMode will 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 type field to track events, which can be any of "video", "audio", "screenVideo", "screenAudio", "rmpVideo", "rmpAudio", or other values of type string for 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 experimentalChromeVideoMuteLightOff is 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 Forbidden error could occur while downloading daily-js components, 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 strictMode which throws an Error if more than one call object is detected in use. strictMode will 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 type field to track events, which can be any of "video", "audio", "screenVideo", "screenAudio", "rmpVideo", "rmpAudio", or other values of type string for 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 Forbidden error could occur while downloading daily-js components, 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 /rooms endpoint for creating new rooms now has a rate limit of 50 requests per 30 seconds; this is the same rate limit as the DELETE /rooms/:name endpoint. See our rate limits for more information.
  • The GET /meetings endpoint now includes a no_participants optional parameter. If set to true, 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. See recordings_template for 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 a state on 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 split video 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 is rgb(255, 255, 255).
    • videoSettings.highlight.stroke_gu: the width of the highlight. The default is 0.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-js is now v0.30.0.