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

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

Как читать этот дайджест
  • Начните с заголовков статей, чтобы получить общее представление о содержании
  • Быстро пробегитесь по первым абзацам, чтобы понять актуальность материалов именно для вас
  • Выберите наиболее интересные или полезные темы под текущие задачи
  • Планируйте чтение: выделите, например, 15 минут утром и 15 минут вечером
  • Не пытайтесь прочитать всё сразу — возвращайтесь к дайджесту в удобное время
  • При повторном просмотре читайте выбранные статьи более вдумчиво, делая заметки
  • Не сожалейте, если прочитали лишь часть: ценность в качестве, а не в количестве
  • Используйте закладки для сохранения интересных материалов
  • Делитесь инсайтами и ссылками с коллегами — так информация лучше усвоится
Фронти на связи — выпуск #68! 🗞️
Interop 2027: разработчики выбирают будущее веб-платформы. 🧪
CSS учится случайности, а calc-size() подгоняет узоры. 🎨
JavaScript умеет удивлять даже после форматирования. 📦
TanStack Start 1.0 готов, Next.js закрывает уязвимости. ⚛️
Astro 7.4 и Void обновляют инструменты сборки. 🛰️
TypeScript 7.1 ускоряется, tsrs пробует Rust. 📘
Node.js чинит безопасность, Deno и Bun пробуют новое. ⚙️
Агенты получают DevTools, проверки и память проекта. 🤖
Графики, SVG и полезные утилиты завершают выпуск. 🧰
Фронти - маскот дайджеста

🧪 HTML и веб-платформа

Разработчики выбирают приоритеты Interop 2027

В проекте Interop производители браузеров совместно улучшают поддержку веб-возможностей. Сейчас можно расставить приоритеты для предложений на 2027 год: выбрать около десяти функций, которые хотелось бы видеть одинаково работающими в браузерах.

Джош Комо выделяет новые функции CSS и анимации при прокрутке. Сара Суэйдан ставит на первое место доступность и focusgroup, а Деклан Чидлоу — улучшения SVG и порядка чтения. Свои варианты объяснили Стюарт Робсон, Эрик Мейер, Ана Родригес и Тайлер Стика.

Chrome 157 тестирует новые CSS-возможности, а unload уходит

Chrome 157 перешёл в бета-канал. Среди готовящихся изменений — сокращённая запись для углов, строковое значение text-overflow и anchor-valid. Пока новые свойства не стали повсеместными, их стоит применять с проверкой поддержки.

Браузер также завершил отказ от события unload: обработчик больше не срабатывает по умолчанию при уходе со страницы. Для сохранения состояния и реакции на закрытие вкладки лучше изучить pagehide и visibilitychange — они лучше сочетаются с современным жизненным циклом страницы.

JPEG XL пришёл в основные браузеры: как он выглядит рядом с AVIF

После включения JPEG XL по умолчанию в Firefox 158 формат поддерживают основные браузеры. Джейк Арчибальд сравнил JPEG XL и AVIF на веб-задачах: качество картинки важно оценивать вместе с размером файла и скоростью обработки. Отдельная галерея крошечных изображений показывает, сколько деталей можно сохранить даже при размере меньше 200 байт.

🎨 CSS и дизайн

CSS-функция random() добавляет управляемую случайность

В стабильном Chrome 156 появилась CSS-функция random(). В разборе с живыми примерами показано, как слегка менять положение букв, карточек и других элементов прямо в стилях. Так можно сделать композицию менее механической без отдельного JavaScript-кода. Случайность здесь служит оформлению: текст и управление интерфейсом всё равно должны оставаться понятными.

📦 JavaScript

Форматирование меняет поведение программы: необычный пример с Tetris

Исследователь собрал JavaScript-код, который после форматирования превращается из Tetris в Snake. Причина — сочетание тонкостей синтаксиса и допущений инструментов, которые «очищают» код. Это наглядное напоминание: результат преобразования следует проверять тестами, особенно если исходник недоверенный или намеренно запутан.

  • В интерактивной статье о Proxy видно, как перехват чтения и записи свойств заставляет обычный на вид объект вести себя неожиданно. Это полезно для понимания реактивности и отладки библиотек.
  • Приём с String.replace() как итератором позволяет вызывать функцию для каждого совпадения регулярного выражения; автор сравнивает его с более очевидными альтернативами.
  • В истории перехода с Zod 3 на Zod 4.5 команда Trigger.dev рассказывает, почему валидация данных стала потреблять примерно на треть меньше CPU при ста миллионах разборов в день.
  • Очередь промисов p-queue 10 избавилась от зависимостей и получила EventTarget; репозиторий проекта объясняет, как ограничивать число одновременно выполняемых задач.

⚛️ React и React Native

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

TanStack Start 1.0 вышел из статуса кандидата в релизы. Это полноценный фреймворк для React на основе TanStack Router: он соединяет маршрутизацию, серверные функции и вывод страниц, чтобы проект не собирал эти части по отдельности.

При выборе инструмента полезно смотреть не только на скорость. Есть сравнение одного приложения с Next.js 16.4, официальные инструкции по переходу с Next.js и с кандидата в релизы. Разработчики описали переезд с Astro и миграцию старого проекта. В обсуждении Райана Карниато и ветке сообщества React можно посмотреть на практические вопросы релиза.

Next.js исправил две критические уязвимости

Обновление безопасности Next.js закрывает две возможности удалённого выполнения кода: одну в use cache, связанную с уязвимостью React Server Components, и другую в обработке SVG оптимизатором изображений. Для уязвимости use cache уже опубликован разбор с демонстрацией атаки.

Проектам на Next.js следует перейти на исправленные версии 16.4.1 или 15.5.28. Если React Server Components используются вне Next.js, нужно также проверить версии пакетов react-server-dom по рекомендациям React.

React Router передаёт переходы между страницами React

React Router 8.5 пометил собственные API переходов между экранами как устаревающие в пользу компонента React ViewTransition. В руководстве по миграции показано, как обернуть Outlet и заменить старые настройки. Ещё появился экспериментальный режим только для API, когда сервер обслуживает загрузчики и действия, а HTML остаётся статическим.

🛰️ Фреймворки и сборка

Astro 7.4 помогает искать долгие этапы сборки

В Astro 7.4 команда добавила флаг astro build –timings, который показывает, где именно сборка тратит время. Экспериментальный параллельный prerendering распределяет генерацию страниц между рабочими потоками. Это особенно интересно большим статическим сайтам, где ожидание сборки уже заметно разработчикам.

Void открыл инструменты сборки и развёртывания

Команда Vite опубликовала исходный код Void — набора для полноценных приложений и их развёртывания. Если проекту нужен серверный код рядом с интерфейсом, такие решения сокращают количество разрозненных настроек. Пока инструмент развивается, стоит проверять, насколько он подходит конкретному способу размещения приложения.

  • Foldkit — фронтенд-фреймворк на TypeScript и Effect, который делает состояние и побочные действия явными; это помогает понимать, откуда появились данные и что может изменить интерфейс.
  • Mastro — небольшой фреймворк и генератор статических сайтов, рассчитанный на серверный HTML без сложной инфраструктуры.
  • Marionette предлагает заранее согласованную структуру приложения и контракты для разработки интерфейсов с помощью coding agents.
  • Проект Fixi объединяет маленькие библиотеки для HTML с дополнительным поведением, потоковой выдачи, обновления DOM и обёрток над fetch().
  • Spiceflow — типизированный API-фреймворк с возможностями React Server Components, совместимый с Node.js, Bun и Cloudflare Workers.
  • Elysia 2.0 RC готовит следующее крупное обновление серверного фреймворка; Vuetify 4.3 обновляет библиотеку компонентов Vue.
  • tsup 9.0 и ESLint 10.13 обновили инструменты сборки и проверки JavaScript-кода.
  • В истории миграции 70 тысяч тестов с Jest на Vitest команда Miro делится опытом работы с монорепозиторием из 800 пакетов и использованием агентов для повторяющихся изменений.
  • Knip помог Sentry удалить 28 тысяч строк неиспользуемого кода. Сам Knip находит мёртвые файлы, экспорты и зависимости, которые легко пропустить при ручной уборке.

📘 TypeScript

tsrs переносит компилятор TypeScript на Rust

Cloudflare и VoidZero представили экспериментальный tsrs — реализацию компилятора TypeScript на Rust, которую развивают вместе с командой TypeScript и включают в экосистему Oxc. Заявленные измерения показывают ускорение до восьми раз относительно компилятора TypeScript 7 на Go, но результат зависит от проекта, а инструмент пока экспериментальный. Работу можно запускать и через WebAssembly.

История создания первой версии описывает участие coding agents и конкретный эффект в одном проекте: проверка типов сократилась с 80 до 7 секунд. Сопутствующее обсуждение с участием команды TypeScript помогает понять, какие вопросы ещё открыты. Пока tsrs стоит пробовать параллельно с привычной проверкой, чтобы заметить различия в диагностике.

TypeScript 7.1 вышел в бета-версии

TypeScript 7.1 Beta добавляет программный API и продолжает работу над скоростью новой реализации. В опубликованном примере проверка документации MUI стала в 1,9 раза быстрее и потребовала примерно вдвое меньше памяти. Тем, кто создаёт плагины или инструменты поверх TypeScript, важен именно API; остальным пока разумно проверить бета-версию на своём проекте и сравнить результаты.

⚙️ Node.js

Для Node.js вышли исправления безопасности

Объявленные на 21 октября обновления Node.js уже доступны: 26.12.1, 24.22.1 и 22.23.4. Они закрывают несколько уязвимостей, в том числе ошибки проверки DNS-имён и TLS-сертификатов. Если сервер или инструменты разработки используют поддерживаемую ветку Node.js, стоит обновиться до исправленной версии своей ветки.

  • В Node.js 26.12.0 сделали стабильным конфигурационный файл и разрешили синхронно загружать большинство ES-модулей; Node.js 24.22.0 LTS получил util.throttle и util.debounce. Для развёртывания используйте более новые версии с исправлениями безопасности из новости выше.
  • Skia Canvas 4.0 предоставляет Canvas API для Node.js на движке Skia: графику можно создавать на сервере без браузера.

🚀 Другие рантаймы

🤖 ИИ и разработка

Как проверять код, написанный агентами

В статье «Проверяйте шаблон, тестируйте решение» предлагается разделять две задачи: линтер ловит повторяющиеся структурные ошибки, а тесты проверяют важные пользовательские сценарии. Это практичнее, чем автоматически создавать тест рядом с каждым компонентом, если он лишь повторяет код компонента.

Для более сложных процессов zeroshot позволяет настроить циклы проверки, исправления и контрольные условия перед передачей результата. Такой процесс полезен, когда агент меняет много файлов и одной успешной сборки недостаточно.

  • Lighthouse для Claude Code превращает результаты PageSpeed Insights и Lighthouse в план исправлений в CLAUDE.md; рекомендации всё равно нужно сверять с реальным поведением сайта.
  • Codenotch показывает на macOS остаток лимита coding assistants и состояние их работы в компактном индикаторе.
  • UI Skills собирает инструкции и инструменты, которые помогают агентам создавать согласованные интерфейсы.
  • peek-cli даёт агенту возможность снять скриншот открытой вкладки и проверить результат визуально.
  • Yedric AI предлагает встраивать в приложения помощника, который выполняет пользовательские действия по текстовому запросу.
  • TokenBlast помогает настраивать параметры Claude Code через готовые наборы и ползунки.
  • OpenWiki создаёт и поддерживает связанную документацию по кодовой базе; Claude-Mem сохраняет проектный контекст между сеансами работы агента.
  • jax-js запускает вычисления для машинного обучения в браузере через WebGPU и WebAssembly: это способ выполнять модели и обработку изображений без обязательного сервера.

🧰 Инструменты и библиотеки

Chartist 2.0 возвращает лёгкие графики на SVG

Chartist 2.0 обновил библиотеку графиков, которую можно оформлять обычным CSS. Появились составной API и серверный рендеринг в SVG, поэтому график можно подготовить ещё до запуска JavaScript в браузере. Для проектов на прежней версии есть руководство по переходу с 1.x.

Pele выводит Mermaid-диаграммы в настраиваемый SVG

Pele берёт знакомый синтаксис Mermaid и рисует адаптивный SVG, цвета которого можно менять через CSS-переменные. Автор делает ставку на небольшой размер и отсутствие зависимостей; оценить результат можно в интерактивной песочнице.

  • Maplair — ответвление Leaflet с вращением карты, поиском, тепловыми картами и другими возможностями, которые сборщик может исключать, если они не используются. У исходного проекта тоже есть план выпуска Leaflet 2.0.
  • Веб-компонент rich-input собирает поле поиска, где обычный текст сочетается с подсвеченными фильтрами вида key:value и подсказками при вводе.
  • TanStack Hotkeys обрабатывает сочетания клавиш и их различия между платформами. Новые области действия сочетаний помогают, например, закрывать клавишей Escape активное окно, не затрагивая экран под ним.
  • Pretext 1.0 рассчитывает разбиение многострочного текста без доступа к DOM, используя алгоритмы, близкие к браузерным.
  • Chokidar 6.0 сверяет события наблюдения за файлами с состоянием диска, чтобы после серии быстрых правок не сообщать о лишних изменениях; общая документация есть в репозитории.
  • Happy DOM 21.0 по умолчанию блокирует загрузку таблиц стилей и iframe; библиотека имитирует браузерную среду для тестов без открытия настоящего браузера.
  • env.style меняет цвет или значок favicon для разных окружений Next.js и Vite, чтобы вкладки разработки и продакшена было легче различать.
  • Pixel рисует React-интерфейсы в терминале с поддержкой графического протокола Kitty: там возможны шрифты, градиенты и даже встроенные веб-представления.
  • Particle Charts строит адаптивные графики из обычного JSON в виде движущихся частиц.
  • SubPulse показывает активность каналов, на которые подписан пользователь YouTube: частоту публикаций и время с последнего обновления. Это веб-приложение со статистикой, а не ссылка на видеоролик.

🖼️ Графика и медиаинструменты

  • 3dsvg превращает SVG, текст или рисунок в трёхмерную модель, которую можно выгрузить в GLB или STL.
  • Reels Editor редактирует фото и видео прямо на устройстве: обрезает, меняет размер, добавляет фильтры и удаляет фон без обязательной загрузки файла на сервер.
  • Textmode Overlay превращает содержимое видео и canvas в живую текстовую графику с настройками вида.
  • Reicon собрал тысячи SVG-иконок в двух стилях и готовые варианты подключения для разных UI-фреймворков.
  • EXIF Data Viewer показывает метаданные фото и видео локально в браузере — полезно проверить дату, камеру, редактор и другие поля перед публикацией.
  • fontglyph создаёт и редактирует наборы иконок, а затем экспортирует их в шрифт WOFF2.
  • Imagetools обрабатывает изображения во время сборки через директивы импорта и sharp, чтобы не хранить вручную множество размеров одного файла.
  • Paper.js 0.13 и 0.14 стали заметными обновлениями инструмента для векторной графики на canvas; возможности показаны на сайте проекта и в примерах.
  • LittleJS 1.27 добавил трёхмерные возможности к небольшому игровому движку без зависимостей.
  • Morphicons 2.0 научился плавно превращать друг в друга не только контурные, но и залитые SVG-иконки; демо анимаций помогает быстро оценить эффект.
  • Strudel Flow 2 позволяет соединять музыкальные инструменты и эффекты на схеме, построенной с помощью React Flow, и получать код для Strudel. Исходники и пояснение команды показывают, как добавлять собственные узлы.

🌍 Веб и сообщество

  • PHP выпустил срочные исправления для веток 8.5, 8.4, 8.3 и 8.2: две критические уязвимости при определённых условиях позволяют выполнять код на сервере без входа в систему. PHP Foundation объясняет выпуск и то, как проект усиливает работу над безопасностью. Если фронтенд размещён рядом с PHP-сервером, обновление инфраструктуры касается и его.
  • Реакцию сообщества на уязвимости PHP можно увидеть и в ироничном обсуждении; само обновление, конечно, лучше не откладывать.
  • /dev/null — небольшая социальная сеть для разработчиков с привязкой к GitHub; пример профиля участника показывает, как устроены страницы сообщества.
  • Headlines предлагает угадать год события по заголовкам новостей — короткая игра для перерыва между задачами.