> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# December 6, 2022

> The latest updates to Daily's real-time audio and video APIs.

## Dec 6, 2022

In this release, we've added official support for custom tracks to `daily-js`. You can now add multiple cameras and/or microphones to your Daily call through supported APIs.

## daily-js

### 0.34.0

* Added support for sending custom tracks in addition to camera, mic, and screen tracks. If you were previously using beta methods to do this, you can migrate your code to use the new methods, which support sending custom tracks in peer-to-peer mode.
* Added a [`showUserNameChangeUI` call option](/reference/daily-js/types/daily-call-options#param-show-user-name-change-ui) for controlling whether to display the user name change UI in embedded Daily Prebuilt (`true` by default). When set to `false`, you should use [tokens](/reference/rest-api/meeting-tokens) to assign participants `user_name`s.
* Added a `maxDuration` option when starting a recording. The max recording duration is 3 hours if not specified. It is recommended you not touch this setting unless you’re planning on particularly long recorded meetings.
* Fixed erroneously-reported track states for `rmpAudio` and `rmpVideo` tracks when a remote media player was paused.

### 0.34.1

* Fixed an issue where custom tracks would not start as expected and would throw an error.
* Fixed an issue where the call state would not be correctly set to `left-meeting` upon leaving the call.

### 0.35.0

* Added detection of playback interruptions in remote media.
* Cleaned up debug logging to reduce log noise.

### 0.35.1

* Fix a case where a warning log may throw an exception.

## react-native-daily-js

### 0.32.0

* Added a `maxDuration` option when starting a recording. The max recording duration is 3 hours if not specified. It is recommended you not touch this setting unless you’re planning on particularly long recorded meetings.
* Fixed a bug where, on iOS 16 or later, selecting a non-bluetooth audio device (using `setAudioDevice()`) would erroneously cause the bluetooth audio device to disappear from subsequent calls to `enumerateDevices()`.
* Fixed erroneously-reported track states for `rmpAudio` and `rmpVideo` tracks when a remote media player was paused.

### 0.33.0

* Added detection of playback interruptions in remote media.
* Fixed an issue where changing a device while the media type published by that device is disabled would not take effect. For example, changing from user to environment-facing camera while the camera is off.
* Cleaned up debug logging to reduce log noise.

### 0.33.1

* Fix a case where a warning log may throw an exception.

## Daily Prebuilt

<img src="https://mintcdn.com/daily-co/k5NXwOZS3v6Jul7S/assets/changelog/changelog-35-prebuilt-mobile-page-controller.png?fit=max&auto=format&n=k5NXwOZS3v6Jul7S&q=85&s=c76591d7b52e0ec1d7cf620ecc0c302c" alt="Prebuilt mobile page controller" height="500" data-path="assets/changelog/changelog-35-prebuilt-mobile-page-controller.png" />

* Revamped the mobile web client's paging controller. Now you can expand a menu to see the available grid pages, see which participants on each page, and jump directly to a page. You can still swipe through pages, but this allows for faster navigation in larger calls.
* Made a number of performance improvements that reduce the CPU impact, especially in larger calls.
* Show or hide the user name entry UI in the People panel using the `showUserNameChangeUI` `daily-js` property.
* Improved error handling for cloud recordings, so that hosts are always notified when a recording encounters an issue.

## Daily React

### 0.6.1

* `DailyProvider` now accepts `recoilRootProps` to control the behavior of its internal `RecoilRoot`. You can pass `recoilRootProps={{ override: false }}` to let `daily-react` store its state in your application's own `RecoilRoot`.
* Hooks with event callbacks no longer wrap calling the passed callback in `setTimeout(() => onX.?(ev), 0)` to reduce fragmentation of stack traces.

### 0.6.2

* Prefixed recoil atom keys with `daily-react-` to avoid naming conflicts when integrating Daily React with an application based on Recoil itself.
* Added `filter` option to `useActiveSpeakerId` to allow limiting active speakers to subgroups.
* Fixed an issue where `DailyDevices` could throw an error due to a non-existent `local` participant object.
* Fixed `DailyAudio` to only consider subscribed audio tracks.

## Additional

* Fixed an issue where the video track's frame rate would drop when background effects were applied.
