Chrome 151 получил новый элемент <usermedia> для доступа к камере и микрофону

Google Chrome представил новый HTML-элемент
Элемент решает давнюю проблему веб-разработки: асинхронные JavaScript-вызовы getUserMedia() часто срабатывают без контекста, приводя к отказам и низким показателям одобрения разрешений. Если пользователь однажды заблокирует доступ, реверс требует навигации по глубоким настройкам браузера, этот дефект называют «permission hole».
Данные из Origin Trial показали значительный рост успеха:
- Cisco: вероятность успешного повторного одобрения разрешения выросла со 100% на 10% при старых prompt'ах до 65%+
- Zoom: сократил ошибки захвата камеры/микрофона на 46,9% за счёт направления пользователей через процесс восстановления
- Google Meet: снизил жалобы на неработающий микрофон на 17% и увеличил успешное восстановление разрешения на 131% для пользователей, которые ранее отказали
Элемент имеет читаемый API: свойство stream, метод setConstraints(), свойства error, обработчики onstream, onerror, oncancel. Браузер строго контролирует оформление для предотвращения обманных паттернов: контраст текста минимум 3:1, заранее установленные границы ширины/высоты/размера шрифта, отключены трансформы кроме 2D-переводов и масштабирования.
Для будущих версий планируются узкоспециализированные элементы
Ключевые факты
- Chrome 151 выпустил встроенный элемент
, заменяющий асинхронные JavaScript-вызовы getUserMedia() - Решает проблему «permission hole», пользователи, отказавшие доступ, могут теперь переоформить разрешение прямо на странице без погружения в настройки
- Испытания на реальных продуктах: Cisco повысил успех переодобрения с 10% до 65%, Zoom снизил ошибки на 46,9%, Google Meet сократил жалобы на микрофон на 17%
- Декларативный API (вместо imperative): браузер управляет промптом, приложение получает MediaStream напрямую через событие 'stream'
- Браузер строго контролирует стили для предотвращения обманных паттернов (контраст 3:1, размеры, отключены трансформы)
Почему это важно
Веб-приложениям часто нужен доступ к камере и микрофону, но скрипт-запросы срабатывают без явного намерения пользователя, что приводит к отказам. Ещё хуже: если пользователь однажды заблокировал доступ, обратный процесс требует погружения в настройки браузера.
Кому это важно
Веб-разработчикам, строящим приложения видеоконференций, трансляций, мессенджеров, социальных платформ или любых других сервисов с медиа-захватом. Также пользователям этих приложений, они получают более интуитивный интерфейс управления разрешениями, без лишних кликов и потерянного контекста.
Как это применить
Вместо el.addEventListener('click', () => navigator.mediaDevices.getUserMedia(...)) просто добавьте в HTML:
Можно ли доверять
Элемент разработан Google как часть инициативы Capability Elements и имеет строгие ограничения на стили (контраст 3:1, запрет на трансформы и полупрозрачность), чтобы предотвратить обманные паттерны. Данные об улучшениях взяты из Origin Trial с реальными крупными сервисами (Cisco, Zoom, Google). Это официальная хром-фича, уже доступная в Chrome 151.
Риски и подводные камни
API новый, поддерживается только Chrome 151+. Миграция с
«Cisco обнаружил, что пользователи, изначально отказавшие в разрешении, имели только около 10% вероятность успешно получить разрешение, используя старые промпты, но эта ставка подскочила выше 65% с новым элементом.»
— Chrome Developer Blog