FWFrontend WeeklyПоддержи
На главную

Еженедельный дайджест #67: Новости фронтенда

Как читать этот дайджест
  • Начните с заголовков статей, чтобы получить общее представление о содержании
  • Быстро пробегитесь по первым абзацам, чтобы понять актуальность материалов именно для вас
  • Выберите наиболее интересные или полезные темы под текущие задачи
  • Планируйте чтение: выделите, например, 15 минут утром и 15 минут вечером
  • Не пытайтесь прочитать всё сразу — возвращайтесь к дайджесту в удобное время
  • При повторном просмотре читайте выбранные статьи более вдумчиво, делая заметки
  • Не сожалейте, если прочитали лишь часть: ценность в качестве, а не в количестве
  • Используйте закладки для сохранения интересных материалов
  • Делитесь инсайтами и ссылками с коллегами — так информация лучше усвоится
Фронти на связи — выпуск #67! 🗞️
HTML собирает страницу частями, а браузеры готовятся к Interop 2027. 🧪
Иконки на чистом CSS, анимации по скроллу и Bootstrap 6 Alpha. 🎨
Partytown 1.0 отправляет сторонние скрипты в Web Worker. 📦
Deno переходит в Cloudflare, а Bun добавляет bun check. 🦕
TanStack Start 1.0 стал стабильным, Tamagui 3 объединяет веб и мобильные UI. ⚛️
TypeScript: эксперимент с Rust, производительность Zod и сравнение валидаторов. 📘
Node.js обновляет конфигурацию, Skia Canvas рисует и открывает PDF. ⚙️
OpenCode 2.0 получил фоновых субагентов и программные вызовы MCP. 🤖
В наборе инструментов — плагины Vite, PDF в браузере и карта киносъёмок. 🧰
Фронти - маскот дайджеста

🧪 HTML и платформа

Складной экран меняет привычную вёрстку

Darius Cepulis исследовал, как адаптировать веб-интерфейс к iPhone Duo. В симуляторе он попробовал Device Posture API и Viewport Segments API: первый сообщает о положении устройства, второй помогает учитывать отдельные области экрана. Обе возможности пока включаются экспериментальным флагом.

На примере плеера Video.js автор попытался повторить интерфейс Netflix для согнутого устройства. Оказалось, что разместить элементы по разные стороны сгиба — только часть задачи: ограничения полноэкранного режима в Safari тоже влияют на результат. Материал показывает, какие предположения о форме экрана стоит пересмотреть при разработке адаптивных страниц.

HTML можно передавать частями и собирать в другом порядке

Dave Rupert показал, как строить вложенные комментарии с помощью потокового HTML. Обычно серверу или клиентскому коду приходится обходить дерево комментариев и собирать вложенную разметку. Здесь браузер получает фрагменты по мере готовности и вставляет их в нужные места.

В основе примера — декларативные частичные обновления HTML. Они позволяют отделить порядок получения данных от порядка элементов на странице. Пока это экспериментальная возможность Chromium, поэтому закладываться на её работу во всех браузерах рано.

Когда браузер начинает ленивую загрузку

Ben Schwarz измерил, насколько заранее браузеры загружают медиа с loading="lazy". Chrome, Firefox и Safari не ждут, пока изображение окажется прямо перед пользователем: загрузка начинается на некотором расстоянии от видимой области. Это расстояние и поведение отличаются между браузерами.

Автор объясняет разницу между lazy, eager и fetchpriority: первое откладывает загрузку, второе убирает такое откладывание, а третье подсказывает приоритет ресурса. Также рассматривается ленивая загрузка видео и аудио в Chromium. Такой разбор помогает осмысленно настраивать медиа, а не добавлять одинаковые атрибуты ко всем файлам подряд.

🎨 CSS и дизайн

Система иконок без изменений в HTML

Lea Verou предложила управлять иконками целиком из CSS. В решении сочетаются пользовательское свойство --icon, регистрация свойств через @property, запросы к стилям и mask. Иконку можно назначать и менять там же, где задаются остальные визуальные свойства элемента.

В интерактивном примере системы иконок видно, как эти возможности работают вместе. Подход помогает держать оформление отдельно от разметки, но перед использованием в проекте нужно учитывать поддержку задействованных CSS-возможностей целевыми браузерами.

Bootstrap 6 Alpha переходит на современные возможности браузеров

В первой альфа-версии Bootstrap 6 большую часть Sass-переменных заменяют CSS-переменными, а JavaScript-плагины переводят на ESM — стандартный формат модулей с import и export. CSS-переменные можно менять прямо в браузере, поэтому для части настроек темы больше не потребуется пересобирать стили.

Прокрутка может запускать самостоятельную анимацию

Brecht De Ruyte разобрал CSS Animation Triggers на пяти примерах. Идея в том, чтобы запускать анимацию при достижении определённой позиции прокрутки, а не обязательно связывать каждый её кадр с движением страницы.

Это полезно для историй с появляющимися иллюстрациями, подписями и переходами между сценами. Автор показывает, какую часть такого поведения сможет описывать CSS; сама спецификация рассматривается как кандидат для Interop 2027.

📦 JavaScript

Partytown 1.0 выносит сторонние скрипты из основного потока

После пяти лет разработки Partytown выпустил стабильную версию 1.0. Библиотека переносит выполнение сторонних скриптов в Web Worker — отдельный поток, который не конкурирует с отрисовкой интерфейса так же, как код в основном потоке страницы.

🦕 Deno и Bun

Bun 1.4.3 добавляет встроенную проверку типов

В Bun 1.4.3 появилась команда bun check. Она использует порт проверяющей части TypeScript 7, читает tsconfig.json и сообщает об ошибках типов, как tsc. По оценке команды Bun, проверка работает в 3–6 раз быстрее; её также можно подключать к запуску, тестированию и сборке проекта.

Релиз уменьшает расход CPU у простаивающих серверов. Кроме того, обновление JavaScriptCore принесло улучшения производительности. Проверка типов и выполнение кода остаются разными задачами: новая команда помогает находить ошибки до запуска приложения.

⚛️ React и фреймворки

TanStack Start 1.0 стал стабильным

TanStack Start выпустил версию 1.0. Фреймворк предназначен для приложений на React и Solid, которым нужны и интерфейс в браузере, и серверная логика. В нём есть типизированные серверные функции и потоковый SSR: сервер может отправлять готовые части страницы, не ожидая завершения всей работы.

Приложения можно размещать на Node.js, Bun, Cloudflare Workers и других платформах. В сравнении TanStack Start с Next.js собраны различия, которые помогают оценить фреймворк под требования проекта.

Tamagui 3 помогает делить интерфейс между вебом и мобильными приложениями

В Tamagui 3 обновили систему стилей и набор компонентов для React и React Native. Одна кодовая база интерфейса может использоваться в веб-приложении и мобильных версиях, а компилятор помогает уменьшать накладные расходы такого подхода.

Среди изменений — свойства для стилизации в духе Tailwind и поддержка React Strict DOM. Релиз интересен командам, которые хотят переиспользовать не только бизнес-логику, но и значительную часть компонентов между платформами.

📘 TypeScript и проверка данных

Переход на Zod 4 сократил нагрузку на CPU

Команда Trigger.dev рассказала, как обновление с Zod 3 до Zod 4 позволило сэкономить до 31% ресурсов CPU. Zod проверяет реальные данные во время выполнения программы, поэтому стоимость таких проверок становится заметной, когда через сервис проходит много запросов и событий.

⚙️ Node.js

Node.js 26.12 закрепляет конфигурационные файлы

В Node.js 26.12.0 конфигурационные файлы стали стабильными. Через них можно описывать настройки выполнения, тестов, наблюдения за файлами и разрешений, вместо того чтобы хранить всё в длинной командной строке. Синтаксис подключения разобран в документации параметра --config-file.

Вышедшая перед этим Node.js 26.11.0 добавила --process-timeout для завершения процесса по таймеру и поддержку виртуальных таблиц в node:sqlite. Такие таблицы позволяют подключать к SQLite источники данных с собственным поведением.

Skia Canvas 4.0 рисует на сервере и загружает PDF

Skia Canvas предоставляет Canvas API для Node.js на базе графического движка Skia, который используется и в Chrome. Он умеет работать с изображениями, шрифтами, путями и фигурами, использовать GPU и выводить результат как в файл, так и в отдельное нативное окно.

В версии 4.0 уменьшили размер и ускорили работу, а также добавили нативную загрузку PDF. Исходники Skia Canvas пригодятся для изучения серверной генерации графики, превью и других сценариев, где раньше приходилось запускать браузер ради отрисовки.

В новом тесте WebSocket Node.js приблизился к задержкам C

Daniel Lemire заново сравнил WebSocket-серверы на Node.js, Bun и Deno. В этот раз он использовал клиент и сервер-посредник на C как точку отсчёта. В проверенном сценарии Node.js 26 с uWebSockets.js показал задержки, близкие к C, и опередил Bun и Deno.

Автор также пересмотрел своё сравнение 2023 года: в старом сервере на Bun была ошибка. Результат относится к конкретной библиотеке и сценарию пересылки сообщений, поэтому его полезно воспринимать как повод измерить собственную нагрузку.

🤖 ИИ и автоматизация

OpenCode 2.0 добавляет фоновых субагентов и программную работу с инструментами

В OpenCode 2.0 переработали открытый агент для разработки на Bun. Среди основных изменений — субагенты, работающие в фоне, и режим, в котором модель может писать код для вызова инструментов через MCP — протокол подключения внешних возможностей к ИИ-приложениям. Для управления агентом из программ появились клиенты для обычного JavaScript и Effect.

Начать работу с OpenCode можно на сайте проекта. Для сравнения подходов к устройству помощников можно изучить открытый проект Pi.

⚒️ Инструменты и практика разработки

Личный сайт на Swift вместо Astro

Sindre Sorhus рассказал, почему переписал свой сайт на Swift вместо Astro. Теперь язык используется не только для логики: через него описываются разметка и стили. Часть ошибок, включая неверные ссылки и опечатки в стилях, выявляется при компиляции.

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

Обновления инструментов командной строки