> ## 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.

# June 5, 2024

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

## Overview

In May, we were busy extending support for SIP, dial-in, and dial-out use cases. Additionally, we've continued to round out our client SDKs with the top feature requests from Q1 of this year, including:

* Adding zoom and flashlight controls to `daily-ios`
* Adding the ability to cycle cameras with `daily-js`
* Dynamically control screen share audio and video tracks with `daily-js`

...and more! Check out the changelog below for details.

## daily-js

### 0.65.0

#### Cycle cameras on mobile browsers

To help users more easily cycle through front and back cameras on their mobile devices, we've added a new method called [`cycleCamera()`](/reference/daily-js/instance-methods/cycle-camera). For example, to cycle, you can simply call `cycleCamera({ preferDifferentFacingMode: true })`.

#### SIP: Dial-in ready event

If you're building a SIP-enabled workflow, your `daily-js` clients now have the ability to determine when a SIP room is ready by listening to the `dialin-ready` event.

#### Release notes

To learn more about the release, check out the [release notes](https://github.com/daily-co/daily-js/releases/tag/daily-js-2024-05-23-0.65.0).

### 0.64.0

#### Control screen share audio and video

Screen sharing now supports the ability to control the screenAudio and screenVideo track states. For example, this functionality allows you to mute a screen share's audio while allowing the video to continue playing. Check out the [`updateScreenShare()`](/reference/daily-js/instance-methods/update-screen-share) to learn more.

#### Prevent meeting token abuse

We've introduced a new [domain](/reference/rest-api/domain/get-domain-config#response-config-enforce-unique-user-ids) and [room](/reference/rest-api/rooms/get-room#response-config-enforce-unique-user-ids) property called `enforce_unique_user_ids`. Setting this to `true` along with usage of setting user\_id’s on tokens will enforce that only one participant with a given user\_id can be in a call at once, securing against token sharing. Note: If someone joins with an id already in use, they will be allowed in and the existing participant will be ejected, receiving an [`error` event](/reference/daily-js/events/error-events#error) of a type `'ejected'`.

#### Release notes

To learn more about the release, check out the [release notes](https://github.com/daily-co/daily-js/releases/tag/daily-js-2024-05-07-0.64.0).

## react-native-daily-js

### 0.63.0

#### Receive settings for custom tracks

If you're using custom tracks in your `react-native-daily-js`, you can now control the receive settings with the [`updateReceiveSettings()`](/reference/react-native/instance-methods/update-receive-settings) method.

#### SIP: Dial-in ready event

If you're building a SIP-enabled workflow, your `daily-js` clients now have the ability to determine when a SIP room is ready by listening to the `dialin-ready` event.

#### Release notes

For more information, check out the [release notes](https://github.com/daily-co/react-native-daily-js/releases/tag/react-native-daily-js-2024-05-23-0.63.0).

### 0.62.0

#### Control screen share audio and video

Screen sharing now supports the ability to control the screenAudio and screenVideo track states. For example, this functionality allows you to mute a screen share's audio while allowing the video to continue playing. Check out the [`updateScreenShare()`](/reference/react-native/instance-methods/update-screen-share) to learn more.

#### Release notes

For more information, check out the [release notes](https://github.com/daily-co/react-native-daily-js/releases/tag/react-native-daily-js-2024-05-07-0.62.0).

## daily-android

### 0.20.0

#### Release notes

This release contains a number of bugfixes. For more information, check out the [release notes](https://github.com/daily-co/daily-client-android/blob/main/CHANGELOG.md#0200---2024-05-14).

## daily-ios

### 0.20.0

#### Zoom and flashlight controls

`daily-ios` now provides native controls to turn on the flashlight and control the camera zoom. You can control both using the [`updateInputs()`](https://reference-ios.daily.co/documentation/daily/callclient/updateinputs\(_:\)) method. We've also provided convenience methods making it easier to control the camera and flashlight:

* Camera zoom control convenience method: [`CallClient.setCameraZoom()`](https://reference-ios.daily.co/documentation/daily/callclient/setcamerazoom\(_:completion:\))
* Flashlight control convenience method: [`CallClient.setCameraTorch()`](https://reference-ios.daily.co/documentation/daily/callclient/setcameratorch\(_:completion:\))

#### Release notes

For more information, check out the [release notes](https://github.com/daily-co/daily-client-ios/blob/main/CHANGELOG.md#0200---2024-05-14).

## daily-python

### 0.9.0, 0.9.1

#### Release notes

These releases contains a number of bugfixes. For more information, check out the [release notes](https://github.com/daily-co/daily-python/blob/main/CHANGELOG.md#090---2024-05-28).

### 0.8.0

#### Dial-in events

`daily-python` added support for a number of dial-in events:

* `dialin-ready`
* `dialout-connected`
* `dialout-stopped`
* `dialout-error`
* `dialout-warning`

#### Release notes

For more information, check out the [release notes](https://github.com/daily-co/daily-python/blob/main/CHANGELOG.md#080---2024-05-23).

## daily-react

### 0.19.0

#### useCallFrame updated

* ⚠️ **Breaking change**: [`useCallFrame`](/reference/daily-react/use-call-frame): Instead of accepting the resolved value for a given `parentEl`, it will now accept a React Ref `parentElRef`. This generally improves the DX when working with conditionally rendered call frame wrappers.

```js theme={null}
// Before
const ref = useRef(null);
const callFrame = useCallFrame({
  parentEl: ref.current,
});

// Now
const ref = useRef(null);
const callFrame = useCallFrame({
  parentElRef: ref,
});
```

* Removed unnecessary `playsInline` attributes from rendered [`<audio>`](/reference/daily-react/daily-audio-track) elements
* Updated devDependencies

## Daily Prebuilt

### Disable PiP support in Safari

Daily Prebuilt is disabling Picture-in-Picture support for Safari users. Safari does not sufficiently support Picture-in-Picture functionality, which results in Safari crashing for users when a video stream ends. We will investigate reintroducing this feature for Safari in later versions.

### Improvements and fixes

* Fixed an issue where the Prebuilt client could stop subscribing to remove videos.
* Fixed an issue where background effects were not working for browsers with WebGL disabled.
* Fixed an issue where some users were not able to download the call object bundle, which prevented them from joining a Prebuilt call.

## Media Services

### Dial-in & Dial-out

* Added support for pinless dial-in.

### VCS

* In the VCS baseline composition, long participant labels are now truncated with ellipsis when space is tight.
* Fixed an issue with VCS dominant mode preferScreenshare.
* New VCS param `'videoSettings.dominant.includeWebFrame'` allows WebFrame content to be automatically included in the dominant layout mode.

## Webhooks

* Added support to enable multiple webhooks for a domain. [Contact us](https://www.daily.co/company/contact/support/) to learn more.

## Dashboard

* Fixed a bug where session logs would appear to overlap one another.

## Additional

* Added REST API for ejecting and banning users by user\_id. See [`/rooms/:name/eject`](/reference/rest-api/rooms/session/eject) for more information.
* The oldest supported version of `daily-js` is now 0.55.0.
