Услуги Портфолио Контакты БлогНовости +7 (800) 302‑79‑27 Обсудить проект
Облако

Chrome 159 в бете: новый WebTransport, «пассивный» вход по passkey и пререндер сторонних iframe

15 ноября 2026·5 мин чтения
Chrome 159WebTransport
Chrome 159 в бете: новый WebTransport, пассивный вход по passkey и пререндер сторонних iframe

Chrome 159 вышел в бета-канал 12 ноября 2026 года, стабильная версия запланирована на 8 декабря. Главное в релизе для веб-разработчиков: WebTransport получил стандартный набор API для приоритизации, статистики и управления перегрузкой. Вход по passkey теперь можно предложить без формы логина, а сторонние iframe начнут пререндериться по заголовку сервера.

До стабильного выпуска остаётся около трёх недель. За это время команде, которая ведёт frontend-разработку продукта, стоит прогнать сайт в бете: в релизе меняется поведение CSS-цветов AccentColor, вычисляемых значений background-* и CSSImportRule.styleSheet. Изменения мелкие, но могут задеть тесты и дизайн-системы.

Больше всего релиз даёт тем, кто строит веб-приложения с работой в реальном времени: видеозвонки, облачный гейминг, совместное редактирование, биржевые терминалы. Приоритеты, выбор режима перегрузки и сетевую статистику больше не нужно писать поверх WebSocket вручную: в Chrome 159 они есть в самом API WebTransport.

Что нового в WebTransport в Chrome 159

Google включила по умолчанию сразу восемь изменений WebTransport. Ключевые из них:

  • Приоритизация датаграмм. Метод WebTransportDatagramDuplexStream.createWritable() создаёт независимые потоки отправки датаграмм. У каждого есть атрибуты sendGroup и sendOrder, которыми задаётся относительный приоритет данных в очереди.
  • Группы отправки для потоков. Исходящие потоки можно распределить по send groups и упорядочить через sendOrder внутри группы, со статистикой по потокам и группам.
  • Управление перегрузкой. Новая опция конструктора congestionControl принимает значения "default", "throughput" и "low-latency": браузер подбирает алгоритм под сценарий сессии.
  • Статистика соединения. WebTransport.getStats() отдаёт время приёма-передачи (RTT) и оценку скорости отправки, если они доступны, а также счётчики просроченных, потерянных и отброшенных датаграмм. Данные доступны и после закрытия соединения. Общих счётчиков байтов и пакетов Chromium пока не отдаёт.
  • Экспорт ключевого материала. exportKeyingMaterial() выводит криптографический материал, привязанный к конкретной сессии. Метка и контекст — до 255 байт, длина результата — от 1 до 4096 байт.
  • Стандартный приёмный поток. Интерфейс WebTransportReceiveStream с методом getStats() считает байты, полученные из сети (bytesReceived) и отданные приложению (bytesRead). Для датаграмм появилась опция datagramsReadableType: "bytes" для чтения в собственный буфер (BYOB).

Для продукта это означает меньше самописных обходных решений. Раньше приоритет «голос важнее курсора соседа» или выбор между пропускной способностью и задержкой приходилось реализовывать на уровне приложения. Теперь это делает браузер.

Как работает пассивный вход по passkey (Ambient)

В Chrome 159 стартовал origin trial режима Web Authentication Conditional UI Passive Mode, в документации его также называют «Ambient». Это новый режим вызова navigator.credentials.get() для входа по passkey или паролю. Пробный период по данным Chrome Platform Status рассчитан на версии с 159 по 171.

Отличие от привычного Conditional UI в том, что пассивному режиму не нужна форма логина и подсказка автозаполнения. Браузер показывает ненавязчивое предложение войти, которое пользователь может принять или проигнорировать. Если сохранённых учётных данных нет, интерфейс не появляется, а промис не разрешается. Режимы совместимы: на странице с формой входа один вызов JavaScript может предложить учётные данные и в подсказке автозаполнения, и в пассивном интерфейсе.

Так путь до входа становится короче. Вход в один тап можно предложить на главной, в карточке товара или в блоге, не уводя пользователя на отдельную страницу логина. Чтобы попробовать режим на проде до его стабилизации, нужно зарегистрировать домен в origin trial.

Как включить пререндер сторонних iframe

Начиная с версии 159 Chrome пререндерит и сторонние (cross-origin) фреймы, если HTTP-ответ страницы верхнего уровня содержит заголовок Supports-Loading-Mode: prerender-cross-origin-frames. Без заголовка поведение прежнее: при пререндере браузер откладывает загрузку всех сторонних iframe до момента перехода. Новая опция полезна, когда без iframe страница бесполезна, например при встроенном платёжном виджете, карте или видеоплеере.

Какие ещё изменения в CSS, RegExp и Sanitizer API

Другие изменения, включённые по умолчанию:

  • Sanitizer API получил опцию javascriptURLs: очистку ссылок вида javascript: теперь задаёт разработчик, а не выбранный метод API.
  • RegExp: в регулярных выражениях Unicode-режима появились экранирования \A, \z и \Z для границ всей строки (предложение TC39).
  • CSS: системные цвета AccentColor и AccentColorText отражают значение accent-color элемента, scroll snap корректно работает в контейнерах с прокруткой по одной оси, а CSSImportRule.styleSheet возвращает null, если у @import нет таблицы стилей.
  • Web Speech API: у SpeechRecognitionResult появились speechStartTime и speechEndTime для синхронизации распознанного текста с медиа и субтитрами.
  • Media Session: setMicrophoneActive() и setCameraActive() возвращают промис, как требует спецификация W3C.

Что Open Web Docs нашёл в сборке: Global Privacy Control и элемент install

В бете Chrome 159 есть поддержка Global Privacy Control (navigator.globalPrivacyControl и заголовок Sec-GPC), которой нет в официальных заметках к релизу. Её 13 ноября нашёл проект Open Web Docs, который поддерживает данные о совместимости MDN: он открыл запрос на обновление browser-compat-data под бету Chrome 159. Его автоматический сборщик проверяет реальные API в браузере и подтвердил большую часть нововведений WebTransport.

Для элемента <install> и navigator.install() сборщик фиксирует появление только в версии 159, хотя Chrome Platform Status указывает 158. Об этом элементе мы писали в новости о Chrome 158. Если вы планировали кнопку установки PWA, проверьте её работу в обеих версиях, а не по номеру из заметок.

Что проверить команде до 8 декабря

  1. Прогоните регресс в Chrome Beta. Особенно формы с accent-color, карусели со scroll snap и код, который читает вычисляемые значения background-*.
  2. Оцените WebTransport для реалтайма. Если у вас WebSocket с самописной приоритизацией, сравните задержки с режимом "low-latency" и собирайте метрики через getStats().
  3. Решите, нужен ли пассивный вход. Для продуктов с passkey это быстрый способ поднять долю входов. Регистрация в origin trial обязательна.
  4. Проверьте страницы со сторонними виджетами. Если вы используете Speculation Rules, решите, стоит ли включать пререндер iframe заголовком: он ускоряет переход, но тратит трафик и ресурсы на стороне виджета.
  5. Учтите Global Privacy Control. Если на сайте есть баннер согласия на cookies, решите, как реагировать на сигнал Sec-GPC.

Часто задаваемые вопросы

Когда Chrome 159 выйдет в стабильном канале?

По графику Chrome Platform Status — 8 декабря 2026 года. Бета доступна с 12 ноября.

Заменит ли WebTransport протокол WebSocket?

Не сразу. WebTransport работает поверх HTTP/3 и даёт ненадёжную доставку датаграмм, несколько потоков без блокировки и теперь приоритизацию. Для простых чатов и уведомлений WebSocket по-прежнему проще. Подробнее о нём — в статье WebSocket: особенности и использование на React.

Можно ли использовать пассивный вход по passkey без origin trial?

В стабильной версии Chrome без регистрации домена в пробной программе — нет, режим пока экспериментальный и может измениться до стабилизации.

Источники

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.

Сделаем веб-приложение с работой в реальном времени

Спроектируем обмен данными на WebTransport или WebSocket, настроим вход по passkey и проверим продукт в бета-версиях браузеров до релиза.

Обсудить веб-приложение