# mediasoup-client 3.10.0 released with new and better browser detection

**URL:** <https://mediasoup.discourse.group/t/mediasoup-client-3-10-0-released-with-new-and-better-browser-detection/6663>\
**Category:** Announcements\
**Created:** [May 3, 2025, 11:59am UTC](https://mediasoup.discourse.group/t/mediasoup-client-3-10-0-released-with-new-and-better-browser-detection/6663 "2025-05-03T11:59:40Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [May 3, 2025, 11:59am UTC](https://mediasoup.discourse.group/t/mediasoup-client-3-10-0-released-with-new-and-better-browser-detection/6663/1 "2025-05-03T11:59:40Z")

</div>

**mediasoup-client 3.10.0 has been released** and it comes with a new and much better browser detection system that makes it possible, for example, to use mediasoup-client in Safari on iPad in “desktop mode” with automatic detection (this failed in previous mediasoup-client versions).

In order to use the new detection API, the application should migrate some API calls to new ones:

1. Instead of using [mediasoupClient.detectDevice()](https://mediasoup.org/documentation/v3/mediasoup-client/api/#mediasoupClient-detectDevice), use the new [mediasoupClient.detectDeviceAsync()](https://mediasoup.org/documentation/v3/mediasoup-client/api/#mediasoupClient-detectDeviceAsync).
2. Instead of creating a `mediasoupClient.Device` using the [Device constructor](https://mediasoup.org/documentation/v3/mediasoup-client/api/#Device-constructor), use the new async [Device.factory()](https://mediasoup.org/documentation/v3/mediasoup-client/api/#device-factory) class method.

Obviously, due the async nature of the new APIs, some changes maybe needed in your application. You can no longer create the mediasoup-client `Device` instance within the constructor of your classes but instead need to do it within async methods or factory functions. Or if you have some async `connect()` or similar method in your class, you can create there the `Device` instance by using:

```ts
this.mediasoupClientDevice = await mediasoupClient.Device.factory();

```

## More info

- Here the issue report from which these changes come from: [Detect embedded webview on iPadOS. by bclark-videra · Pull Request #280 · versatica/mediasoup-client · GitHub](https://github.com/versatica/mediasoup-client/pull/280#issuecomment-2847652185)
- And here the PR introducing these new API additions: [Improve device detection by ibc · Pull Request #324 · versatica/mediasoup-client · GitHub](https://github.com/versatica/mediasoup-client/pull/324)

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/mediasoup/original/2X/b/b318c4d3397e65af9535f79c605b80b9ceb066c8.png) [@system](https://mediasoup.discourse.group/u/system)\
**Post date:** [May 5, 2025, 12:00pm UTC](https://mediasoup.discourse.group/t/mediasoup-client-3-10-0-released-with-new-and-better-browser-detection/6663/2 "2025-05-05T12:00:09Z")

</div>

Closed on May 5, 2025, 12:00pm UTC

This topic was automatically closed after 2 days. New replies are no longer allowed.
