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

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

Как читать этот дайджест
  • Начните с заголовков статей, чтобы получить общее представление о содержании
  • Быстро пробегитесь по первым абзацам, чтобы понять актуальность материалов именно для вас
  • Выберите наиболее интересные или полезные темы под текущие задачи
  • Планируйте чтение: выделите, например, 15 минут утром и 15 минут вечером
  • Не пытайтесь прочитать всё сразу — возвращайтесь к дайджесту в удобное время
  • При повторном просмотре читайте выбранные статьи более вдумчиво, делая заметки
  • Не сожалейте, если прочитали лишь часть: ценность в качестве, а не в количестве
  • Используйте закладки для сохранения интересных материалов
  • Делитесь инсайтами и ссылками с коллегами — так информация лучше усвоится
Фронти на связи — выпуск #57! 🗞️
Веб-платформа вспоминает WOFF, измеряет компоненты и приручает вкладки. 🧪
CSS считает до бесконечности, рисует треугольники и оживляет списки. 🎨
JavaScript всё чаще берёт скорость у Rust, а модули учатся загружаться позже. ⚡
React обсуждает состояние, экономит байты и получает новые инструменты. ⚛️
Node.js закрывает уязвимости и делает npm-пакеты безопаснее. 🟢
Octane, Nuxt, Ember и Wasp расширяют карту фронтенд-фреймворков. 🛰️
ИИ-агенты получают правила доступности, диаграммы и поиск по коду. 🤖
Новые библиотеки помогают с картами, Markdown, графиками и формами. 🧰
Пусть зависимости обновляются спокойно, а интерфейсы — работают быстро. ✨
Фронти - маскот дайджеста

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

WOFF исполнилось 16 лет

В материале о WOFF 1.0 рассказывают, почему привычные веб-шрифты стали возможны не сразу. Хотя @font-face появился ещё в CSS2, издателей и браузеры долго разделяли вопросы лицензий и DRM. Ситуацию помог изменить открытый формат WOFF — продолжение идей из раннего обоснования веб-шрифтов W3C.

Это полезное напоминание: часть «обычных» возможностей браузера возникла не только из-за кода, но и благодаря договорённостям об открытых форматах и правах на контент.

Container Timing API измеряет отрисовку отдельных компонентов

В Chrome идёт origin trial для Container Timing API. Если пометить область DOM атрибутом containertiming, браузер сможет сообщать, когда на экране появились значимые части именно этого блока. Подробный разбор объясняет, как измерять производительность компонентов, а черновик API доступен в репозитории WICG.

Метрики страницы вроде LCP показывают общую картину, но не отвечают, какой именно виджет тормозит. Новый API может сделать диагностику сложных интерфейсов точнее. При этом он пока не определяет момент, когда компонент полностью «готов», поэтому результаты нужно трактовать аккуратно.

Web Locks API помогает вкладкам не мешать друг другу

Web Locks API позволяет нескольким вкладкам договориться, кто сейчас выполняет важную работу: например, синхронизацию, запись в локальное хранилище или обновление токена. В практическом разборе блокировок в вебе показано, как избежать гонок, когда две вкладки почти одновременно меняют одни данные.

🎨 CSS и дизайн

CSS-математика получила константу infinity

В CSS-функциях вычислений уже поддерживаются e, pi, infinity и NaN. Adam Argyle показывает несколько практических применений infinity, а на Can I use можно проверить поддержку в браузерах. Константа особенно полезна в формулах, где нужно задать «верхнюю границу без потолка», а не подбирать огромные числа.

Треугольники и анимации без лишней разметки

conic-gradient() умеет больше, чем круговые диаграммы: с его помощью можно собирать треугольники, лучи и сегменты, а затем анимировать переходы. Ещё один приём — анимация входа и выхода элементов через sibling-index(): элементы списка получают разные задержки без ручных классов в JavaScript.

  • CodePen 2.0 получил новый редактор и возможность публиковать работы на поддомене CodePen.
  • Коллекция Stolen Buttons собирает интересные кнопки с реальных сайтов; расширение для браузера поможет пополнить такую подборку самостоятельно.
  • scroll-mask добавляет Tailwind-утилиты для плавного затухания краёв прокручиваемого контейнера.
  • Analyze Any Font по адресу страницы находит используемые шрифты, их начертания и похожие гарнитуры.
  • CodeFronts — каталог готовых CSS-компонентов, генераторов, анимаций и шаблонов интерфейса.
  • Библиотека edge-aura создаёт органичное свечение по краю экрана на Canvas 2D и предлагает компонент для React.
  • Разбор zero-runtime CSS-in-JS в середине 2026 года сравнивает подходы, включая Linaria и dx-styles, в которых стили стараются собрать до запуска приложения.

Заходите в Telegram-канал

Там можно спокойно обсудить выпуск, принести свою ссылку, задать вопрос или просто отметить материал, который пригодился в работе

Заглянуть

📦 JavaScript

Rust продолжает забирать работу у JavaScript-инструментов

Lee Robinson обновил обзор «Rust всё ещё съедает JavaScript». Всё больше знакомых инструментов переписывают критичные части на Rust: так уже устроены Rspack, Biome, Turbopack и недавняя переработка Bun на Rust. Речь не о замене JavaScript в браузере, а о более быстрых сборщиках, линтерах и рантаймах вокруг него.

Модули смогут откладывать выполнение

Предложение import defer перешло на третий этап TC39. Оно позволит заранее объявить зависимость, но выполнить её позже — когда код действительно понадобится. Это может дать более понятную альтернативу некоторым самодельным схемам ленивой загрузки.

  • Await Dictionary (Promise.allKeyed) тоже дошёл до Stage 3: он должен упростить ожидание нескольких промисов, собранных в объект.
  • htmx 4.0 необычно представил релиз через картридж для Game Boy, но сама библиотека по-прежнему развивает HTML-ориентированный подход к интерактивности.
  • Ryan Dahl рассказал, что deno compile может получить режим на QuickJS вместо V8, чтобы создавать заметно меньшие бинарники; анонс появился в его публикации.
  • Oxlint стабилизировал linting с учётом типов: правила теперь могут опираться не только на текст файла, но и на информацию TypeScript.
  • Domenic Denicola описал свою среду для агентной разработки: временные виртуальные машины, Tailscale и worktree. Это взгляд автора, который участвовал во внедрении Promise в JavaScript, создал jsdom и много других инструментов.
  • Deno 2.9.4 — небольшое обновление альтернативного JavaScript-рантайма с исправлениями после серии релизов 2.9.
  • Medium показал, как собрал динамическое оглавление статей по образцу расширения браузера.
  • js1024 завершил ежегодное соревнование, где авторы делают JavaScript-демо размером до 1024 байт; все работы и исходники уже можно посмотреть.

⚛️ React и React Native

Что вообще считать управлением состоянием

Alex Russell в статье «The Absolute State of Management» провокационно утверждает, что React, Redux, MobX и Zustand в основном распространяют состояние, но не управляют временем, конфликтами и синхронизацией. В качестве более полного подхода он приводит CRDT и sync-движки. С этим не согласен мейнтейнер Redux — его ответ помогает увидеть другую сторону дискуссии.

Для практики вывод проще: локальные UI-данные и данные, которые редактируются на нескольких устройствах, — это разные задачи. Не стоит ожидать, что один store автоматически решит конфликты и офлайн-синхронизацию.

React получил обновления безопасности

React 19.2.8, 19.1.9 и 19.0.8 закрывают DoS-уязвимость в конечных точках server functions. Подробности опубликованы в security advisory. Проекты на затронутых ветках стоит обновить без ожидания следующего большого релиза.

TanStack отказался от RSC на своём сайте

Tanner Linsley рассказал, почему tanstack.com перестал использовать React Server Components. После уменьшения Markdown-стека и подсветки кода до 27 КБ обычный SSR дал меньше блокирующей работы и более понятный код. Это не приговор RSC, а хороший пример того, как архитектурное решение стоит проверять измерениями для конкретного сайта.

Вместе с этим TanStack провёл ребрендинг и обновил главную страницу.

Shopify уместил виджеты оформления заказа в 64 КБ

Shopify описал миграцию checkout-виджетов с React на Preact и веб-компоненты. Пять виджетов нужно было удержать в строгом лимите размера, поэтому команда выбрала более лёгкий рантайм и платформенные API. История хорошо показывает, когда стоимость каждого килобайта важнее привычного стека.

Новые компоненты и библиотеки React

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

Octane компилирует React-подобные компоненты заранее

Octane — новый UI-фреймворк от автора Inferno. Он сохраняет знакомую модель компонентов на JSX/TSX, но строит реактивность во время компиляции и обходится без VDOM. Сравнение с React есть в документации различий, а в экосистеме уже появился экспериментальный Nextane: попытка совместить Pages Router Next.js и Octane по примеру Vinext.

Релизы фреймворков

  • Ember 7.1 добавил новые helpers и операторы, а также обновил документацию.
  • Nuxt 4.5.1 и 3.21.10 закрывают проблемы безопасности после крупного релиза Nuxt 4.5.
  • Vue 3.6 RC2 приближает следующую стабильную версию, а Wasp 0.25 обновил full-stack стек с React и Node до Vite 8 и React Router 8.
  • GTKX позволяет писать нативные Linux-приложения на React и GTK4; RC 1.0 уже доступен для тестирования.
  • В статье о Cloudflare Workers, Hyperdrive и SvelteKit разбирают, как соединить SvelteKit с edge-средой и базой данных.

⚙️ Node.js

npm будет сканировать пакеты ещё до установки

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

Полезен и практический гид «Как безопасно выпустить npm-пакет в 2026 году»: он объясняет staged и trusted publishing на примере автора PostCSS и nanoid. GitHub также описал, как нарушает цепочки supply-chain-атак, а Amazon связал несколько атак на debug, chalk и другие пакеты с одной северокорейской группой.

Обновления безопасности Node.js

Июльские security-релизы Node.js исправляют 11 CVE, среди которых проблемы HTTP/2 и обход allowlist в Permission Model. Обновления доступны как Node 26.5.1, 24.18.1 и 22.23.2; общее объявление — на странице security releases. Проекты на поддерживаемых ветках лучше обновить, даже если они не используют HTTP/2 напрямую.

Границы доверия важнее защиты Object.prototype

Matteo Collina объясняет, почему Node.js Core не может «закалить» Node против prototype pollution: если атакующий уже способен менять Object.prototype, уязвимость находится раньше — там, где недоверенный JSON превращается в объекты приложения. Материал помогает не ограничиваться поиском одного флага безопасности, а проверять входные данные на границе системы.

Инструменты и релизы Node.js

  • scriptc от Vercel — AOT-компилятор TypeScript в нативные приложения, который стремится сохранить поведение Node «байт в байт». Исходники доступны в vercel-labs/scriptc; режим --dynamic встраивает JavaScript-движок для действительно динамичного кода.
  • tslog 5 переписан как ESM-only логгер без зависимостей для Node, Deno, Bun и браузера; есть middleware, транспорты и маскировка секретов. Код — в репозитории проекта.
  • npm-check-updates 23 ищет версии новее диапазонов в package.json, а релиз v23 стал быстрее и перешёл на чистый ESM.
  • jsdom 30 добавил CSS.escape(), CSS.supports() и поддержку background-position-x/y; crypto-random-string 6 ускорил генерацию криптографически стойких случайных строк.
  • Ada v4 ускоряет URL-парсер, совместимый с WHATWG, который использует Node. modern-tar 0.8 читает и пишет tar потоково без зависимостей, а tinyclip 1.0 даёт кросс-платформенный API буфера обмена.
  • Nub 0.5 добавил nub init, а Nub 0.6 продолжил развитие единого набора инструментов, расширяющего Node; его концепция описана в статье Introducing Nub.
  • Вышли odiff 4.5 для SIMD-сравнения изображений, node-html-to-image 6.2 для создания картинок из HTML, find-my-way 9.7 — быстрый HTTP-роутер Fastify, Gitify 7 — Electron-приложение для уведомлений Git и Piscina 5.3 — пул worker threads.
  • Verdaccio 6.8 и Verdaccio 6.9 обновляют самостоятельный приватный npm-регистр Verdaccio, а Prisma 7.9 — очередное обновление ORM.

🤖 ИИ и агентная разработка

Доступность становится частью контекста для агентов

A11Y.md предлагает протокол проверки доступности и постоянный контекст, который можно подключать к Cursor, Claude, Copilot и другим агентам. Идея в том, чтобы требования к семантике, клавиатурной навигации и контрасту не оставались разовой просьбой в чате, а жили рядом с проектом.

  • Optio координирует агентов в задачах, повторяемых workflow и интеграциях с внешними сервисами.
  • AI Interaction Atlas предлагает общий язык для проектирования ИИ-интерфейсов: действий человека, задач модели, данных, ограничений и точек взаимодействия.
  • Multica позиционирует себя как open-source платформа управляемых агентов, Claude Code Tips собирает практические советы по Claude Code, а Pi Agent Harness объединяет LLM API, агентный цикл, TUI и CLI.
  • Draw.io MCP Server даёт агентам возможность работать с диаграммами Draw.io, AionUI — приложение для совместной работы с несколькими coding-агентами, а Code Wiki превращает публичные репозитории в обновляемую документацию, созданную Gemini.
  • В статье «How I Stopped Running Out of Tokens» описан подход к экономии контекста, включая инструмент rtk.
  • Is AI Profitable Yet? собирает оценки расходов и выручки крупных ИИ-компаний, чтобы наглядно показать экономику отрасли.

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

Карты, Canvas и математическая вёрстка

MapLibre GL JS 6 перешёл на ESM, требует WebGL 2 и получил заметные оптимизации. Перед обновлением полезно посмотреть release notes и гайд миграции с v5. Для необычных интерфейсов есть Canvas UI — framework-agnostic библиотека HTML-в-Canvas и WebGL-компонентов.

KaTeX быстро превращает формулы TeX в HTML без зависимостей; результат можно проверить в интерактивной песочнице. А Markdy предлагает отдельный язык для описания движения и анимаций, по аналогии с тем, как Mermaid описывает диаграммы.

Проверки, форматы и небольшие полезные пакеты

  • Bruno 4 — открытый настольный клиент для запросов к HTTP API, а eslint-package-json ловит ошибки в package.json: от неверных имён до сломанных exports.
  • Slick 2 сделал классическую jQuery-карусель совместимой с jQuery 4; посмотреть её можно в демо и сравнить с анонсом jQuery 4.
  • isomorphic-git 1.40 реализует Git на чистом JavaScript для Node и браузеров, Satori 0.29 преобразует JSX с HTML/CSS в SVG, а dompdf.js 2 создаёт многостраничные PDF прямо в браузере.
  • hihtml проверяет невалидную и устаревшую HTML-разметку, минифицирует её и проверяет ссылки. wc-location-field — самостоятельный веб-компонент выбора адреса с OpenStreetMap, Google Maps и геолокацией браузера.
  • React Text Highlight Component подсвечивает фрагменты текста через CSS Custom Highlight API и TreeWalker без зависимостей.
  • BotKit помогает писать и самостоятельно размещать ботов для ActivityPub, а IP66 предоставляет ежедневно обновляемую базу IP-геолокации с ASN без лицензионных ключей.
  • Yerd поднимает локальные PHP-сайты на доменах .test, Pica — нативный менеджер шрифтов для macOS, а human.json предлагает протокол, которым авторы сайтов могут подтверждать, что контент создан людьми.
  • Solarch превращает архитектуру backend в живой граф с проверкой правил и генерацией кода. docfind — поисковый движок документов на Rust с поддержкой WebAssembly, полнотекстовым поиском и нечётким сопоставлением.
  • Dither It позволяет экспериментировать с dithering для изображений прямо в браузере; примеры и идеи можно посмотреть в подборке Josh W. Comeau.
  • Команда GitHub опубликовала короткий совет по усилению безопасности проекта.