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

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

Как читать этот дайджест
  • Начните с заголовков статей, чтобы получить общее представление о содержании
  • Быстро пробегитесь по первым абзацам, чтобы понять актуальность материалов именно для вас
  • Выберите наиболее интересные или полезные темы под текущие задачи
  • Планируйте чтение: выделите, например, 15 минут утром и 15 минут вечером
  • Не пытайтесь прочитать всё сразу — возвращайтесь к дайджесту в удобное время
  • При повторном просмотре читайте выбранные статьи более вдумчиво, делая заметки
  • Не сожалейте, если прочитали лишь часть: ценность в качестве, а не в количестве
  • Используйте закладки для сохранения интересных материалов
  • Делитесь инсайтами и ссылками с коллегами — так информация лучше усвоится
Фронти на связи — выпуск #55! 🗞️
Платформа обсуждает полифилы, CSS-параметры для SVG и жизнь без сборщиков. 🧪
CSS раскладывает стили по слоям, оживляет кнопки и осваивает новые цвета. 🎨
Bun переезжает на Rust, npm 12 отключает install-скрипты, а TC39 готовит новые возможности. 📦
TypeScript 7 стал быстрее, SolidJS показывает сигналы, а фреймворки ищут новые архитектуры. 📘
Node.js проводит HTTP-запрос через весь стек и просит понятные коды ошибок для fetch. 🟢
LiteRT.js запускает ИИ в браузере, а новые инструменты помогают управлять coding agents. 🤖
Инструменты недели проверяют PWA, ускоряют Playwright и защищают цепочку поставок. 🧰
Дизайн-подборка: правила интерфейсов, справочник компонентов и баг для левшей. 🧭
Релизы недели: ESLint, Storybook, Vite DevTools, Color.js, Fuse.js и Nano ID. 🚀
Фронти - маскот дайджеста

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

Нужны ли фронтенду сборщики в 2026 году

Ollie Williams провел аудит задач современных сборщиков: проверил транспиляцию, префиксы, Sass, объединение модулей и минификацию. Часть прежней работы уже умеют браузеры и сам CSS, поэтому небольшой сайт действительно можно разрабатывать без сложной цепочки сборки.

Но полный отказ от инструментов подходит не каждому проекту. Объединение файлов, оптимизация размера и обработка зависимостей по-прежнему важны для больших приложений.

Полифилы все еще помогают развивать веб

Lea Verou защищает полифилы — JavaScript-реализации новых возможностей платформы для старых браузеров. Благодаря им разработчики могут раньше пробовать API, а авторы стандартов — получать практическую обратную связь до того, как функция появится повсюду.

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

  • Первый черновик CSS Linked Parameters описывает передачу значений, например цветов темы, во внешние ресурсы вроде SVG. Внутри такого файла параметры будут доступны как переменные окружения.
  • Mozilla планирует двухнедельный цикл выпуска Firefox вместо четырехнедельного. Эксперимент начнется в сентябре и должен быстрее доставлять исправления пользователям.
  • Cloudflare Drop публикует статический сайт после перетаскивания папки или ZIP-архива в браузер. По устройству он похож на давно работающий Netlify Drop и подходит для быстрых демо без настройки CI.
  • A-Frame 1.8 обновил HTML-подобный фреймворк для WebXR-приложений, работающих на телефонах, компьютерах и VR-гарнитурах.
  • HYPERBLAM позволяет собирать синтезаторы и драм-машины декларативной HTML-разметкой поверх Web Audio API. Разобраться в синтаксисе помогают готовый музыкальный пример и интерактивная песочница.
  • Инструмент PWA-Check автоматически проверяет, можно ли установить веб-приложение, работает ли оно офлайн и соблюдает ли базовые требования PWA.
  • Один из создателей базовых интернет-протоколов Винт Серф уходит на пенсию, завершая карьеру, которая охватила путь от раннего TCP/IP до современного веба.

🎨 CSS и дизайн

Как использовать @layer без борьбы со специфичностью

Chris Coyier предлагает раскладывать дизайн-токены компонентов по слоям, а стили, которые применяют эти переменные, оставлять вне слоев. Правила в @layer имеют более низкий приоритет, поэтому значения легко переопределять без длинных селекторов и !important.

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

Цвета в браузере становятся точнее

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

  • Josh Comeau показывает, как собрать объемную анимированную кнопку из нескольких визуальных слоев и сделать нажатие физически понятным.
  • В руководстве по бесконечной прокрутке на GSAP и Lenis элементы получают глубину, параллакс и привязку к позициям. Отдельное демо прокрутки показывает результат в действии.
  • Короткое сравнение zoom и transform: scale() объясняет ключевую разницу: zoom участвует в раскладке, а трансформация меняет внешний вид уже рассчитанного элемента.
  • Andy Clarke выяснил, почему AVIF не всегда уменьшает изображение. Новый формат может проиграть WebP на конкретной картинке, поэтому оптимизацию лучше подтверждать измерениями.
  • Разбор каскадных анимаций в CSS показывает, как запускать однотипные элементы с небольшой задержкой и получать последовательное движение без отдельной анимации для каждого.
  • tailwindcss-motion добавляет в Tailwind больше двадцати готовых анимаций и конструктор собственных эффектов.
  • Пиксельный шрифт Geist Pixel теперь можно подключить и через Google Fonts.

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

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

Заглянуть

♿ Доступность и UX

  • Сборник надежных правил визуального дизайна объясняет, как работать с контрастом, выравниванием и отступами, чтобы интерфейс оставался ясным без сложных художественных приемов.
  • История ошибки, затронувшей только левшей напоминает, что привычный способ держать устройство и нажимать элементы нельзя считать единственно возможным.
  • UX Components устроен как энциклопедия элементов интерфейса: для аккордеона, поиска и других паттернов он объясняет назначение, варианты использования и подходящие иконки.
  • Проект калифорнийского закона может ограничить бесконечную ленту и автозапуск в приложениях для пользователей младше 16 лет. Это еще один повод проектировать вовлечение без механик, которые трудно остановить.

📦 JavaScript и рантаймы

Bun переписали с Zig на Rust

Создатель Bun рассказал о переносе рантайма на Rust. Большую часть механической работы выполняли параллельные экземпляры Claude Code, но команде все равно пришлось проверять архитектуру, совместимость и производительность результата.

Новая реализация станет основой Bun 1.4. Этот опыт интересен не только выбором языка: он показывает, что ИИ может ускорить крупную миграцию, но стоимость генерации и объем инженерного контроля остаются очень большими.

npm 12 отключил install-скрипты по умолчанию

npm 12 вышел в стабильной версии и больше не запускает lifecycle-скрипты пакетов автоматически. Это уменьшает риск выполнить вредоносный код сразу после установки зависимости, но может сломать пакеты, которым скрипт нужен для сборки нативного модуля или загрузки файлов.

Перед обновлением стоит изучить полный список несовместимых изменений, практические последствия новых правил и при необходимости сначала перейти на npm 11.18.

TC39 готовит новые возможности языка

В повестке 115-й встречи TC39 есть сразу несколько предложений. Await Dictionary упрощает ожидание набора промисов с именованными полями, Decimal предлагает точные десятичные вычисления, а Map.take должен получать значение и одновременно удалять его из коллекции.

Как Proxy и Reflect меняют работу объектов

Mat Marquis подробно разбирает перехват операций объекта через Proxy и Reflect. Из базовых ловушек для чтения и записи свойств автор постепенно собирает маленькую реактивную систему, похожую на механизм реактивности Vue 3.

Как Wordgard решает совместное редактирование

Автор редактора Wordgard описал синхронизацию правок нескольких пользователей. Он снова выбрал operational transformation: сервер упорядочивает изменения и преобразует конфликтующие операции, чтобы у участников получился одинаковый документ.

Посмотреть сам редактор Wordgard и понять причины его появления помогает история первого релиза. Автор также объясняет, почему написал преемника ProseMirror без LLM и пока не принимает pull request.

  • Пакет jscrambler пережил атаку на цепочку поставок npm. Вредоносную публикацию обнаружили за шесть минут, но случай снова показывает, почему установка пакета считается выполнением чужого кода.
  • Ant — JavaScript-рантайм с собственным движком на C, без V8, JavaScriptCore и SpiderMonkey. Он помещается в бинарный файл около 9 МБ, быстро стартует и умеет запускать npm-пакеты,.
  • Постоянные переходы между страницами на WebGPU сохраняют графическую сцену при навигации и дают плавный эффект без фреймворка.
  • Babylon Lite — компактный WebGPU-only движок от создателей Babylon.js. Он быстрее и меньше основной библиотеки, но ради этого отказывается от части возможностей и старых браузеров.
  • FracturedJson форматирует JSON компактнее обычного pretty-print, сохраняя читаемость вложенных структур и поддерживая нестандартные комментарии.
  • TanStack npm Stats строит графики загрузок любых npm-пакетов и помогает сравнивать популярность библиотек, сборщиков и UI-фреймворков во времени.

⚛️ React и фронтенд-фреймворки

SolidJS 2 глазами React-разработчика

В знакомстве с SolidJS 2 сравниваются привычные React-компоненты с сигналами и новой асинхронной моделью Solid. Сигнал хранит реактивное значение и обновляет только те места DOM, которые от него зависят, а не запускает повторный рендер всего компонента.

  • Next.js запускает формальную программу релизов безопасности: объявления и плановые исправления будут выходить ежемесячно, чтобы командам было проще следить за обязательными обновлениями.
  • Анализ веб-стека ChatGPT показывает, как большое приложение сочетает React Router 7, TanStack Query, Radix и ProseMirror, а также как эти зависимости распределяются по бандлам и запросам.
  • Mantine Vue переносит компоненты популярной React-библиотеки Mantine во Vue и сохраняет похожий API.
  • Gea компилирует обычные классы и функции в точечные обновления DOM, обходясь без виртуального DOM, хуков и сигналов во время выполнения.
  • Wely предлагает легкий набор для Web Components с единственной функцией defineComponent(), без обязательных классов и привязки к большой экосистеме.
  • Ilha реализует островную архитектуру: сервер отдает обычный HTML, а интерактивные части гидратируются на клиенте без заметного мигания.
  • Vinext повторяет API Next.js как плагин Vite. Он понимает app/, pages/ и next.config.js, но дает альтернативный dev-сервер и возможность развертывания на разных платформах.
  • Shadify превращает текстовое описание интерфейса в интерактивную страницу на shadcn/ui и экспортирует ее как React-код.

📘 TypeScript

TypeScript 7.0 вышел с новым компилятором на Go

TypeScript 7.0 — первый финальный выпуск новой реализации компилятора на Go. Главный результат перехода — заметно более быстрая проверка больших проектов и более отзывчивая работа редактора.

Пока новая версия предоставляет не весь программный API, от которого зависят плагины и инструменты для встроенных языков. Поэтому части пользователей рекомендуют временно остаться на TypeScript 6, пока экосистема не адаптируется.

  • AWS меняет правила поддержки версий TypeScript в AWS SDK for JavaScript v3. Проектам со старым компилятором стоит проверить совместимость до обновления SDK.
  • Perry — написанный на Rust компилятор TypeScript в нативные приложения для macOS, iOS, Android, Linux, Windows, WebAssembly и других платформ.
  • Native SDK позволяет описывать desktop-интерфейс нативной разметкой и TypeScript или Zig. Собственный движок создает настоящие окна ОС без браузера, WebView и JavaScript-рантайма.
  • CrustJS — Bun-native фреймворк для CLI-приложений с TypeScript, компонуемыми модулями и fluent API.

⚙️ Node.js и серверная разработка

Что происходит за 200 миллисекунд жизни HTTP-запроса

Интерактивный разбор проводит один POST-запрос от клика до базы данных. Он последовательно показывает DNS, соединение, сервер Node.js, event loop и обращение к хранилищу, поэтому абстрактное слово «запрос» превращается в понятную цепочку событий.

Если нужно сначала освежить устройство рантайма, у автора есть отдельное введение в архитектуру Node.js.

fetch() нужны стандартные коды ошибок

James Snell объясняет, почему fetch() должен сообщать точную причину сбоя. По стандарту сеть часто представлена общим TypeError, а Node.js прячет полезный код глубже в cause. Из-за этого программа не всегда понимает, безопасно ли повторить запрос после ошибки HTTP/2 или HTTP/3.

Node.js 26.5 импортирует текст как модуль

Node.js 26.5 поддержал импорт текстовых файлов через атрибуты и добавил blob.textStream(). Теперь текстовый ресурс можно подключить декларативно, а содержимое большого Blob — читать частями как поток.

  • Vercel прекратит поддержку Node.js 20 для Builds и Functions 1 октября 2026 года. Проектам на этой версии пора проверить обновление рантайма.
  • Telegram тестирует Serverless для ботов, где код выполняется на инфраструктуре самого мессенджера. Для обычного размещения остаются Bot API и библиотеки вроде node-telegram-bot-api.
  • Руководство от Express к Fiber сопоставляет одинаковые серверные задачи на JavaScript и Go. Сам Fiber специально использует знакомые разработчикам Express идеи.
  • LiteParse 2 разбирает PDF, распознает текст и учитывает расположение элементов. Rust-ядро доступно из разных сред, а для JavaScript есть отдельная инструкция по Node.js.
  • Mediabunny читает, записывает и преобразует множество аудио- и видеоформатов. Новый пакет server упрощает обработку медиа в Node.js.
  • Tinbase повторяет API Supabase для локальной разработки, используя PGlite и pg-mem. Клиент supabase-js при этом можно не менять.
  • @neon/sdk — TypeScript-клиент для управления проектами, ветками и базами на платформе Neon.
  • plx переводит хранимые функции на JavaScript, PHP, Python, Ruby и COBOL в язык PostgreSQL PL/pgSQL.

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

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

Google выпустила LiteRT.js — JavaScript-привязку к LiteRT для локального запуска ИИ-моделей. Данные не обязательно отправлять на сервер, а приложение может продолжать работу без сети.

В демо увеличения изображений модель повышает разрешение картинки на устройстве пользователя. Производительность зависит от браузера и оборудования, но пример показывает, насколько доступным становится клиентский inference.

  • Flue — открытый TypeScript-фреймворк для долговечных AI-агентов и процессов, который не привязывает приложение к одной модели или среде размещения.
  • eve предлагает структуру агентных приложений, похожую на Next.js: инструкции и skills хранятся в Markdown, инструменты пишутся на TypeScript, а длительные операции переживают перезапуски.
  • Agent Field предоставляет open source backend, где агентов можно публиковать и контролировать как API.
  • Conductor запускает Claude Code, Codex и Cursor в изолированных рабочих пространствах, а затем помогает просматривать и объединять их изменения.
  • Open GSD собирает процесс работы с coding agents вокруг планирования, реализации, проверки и выпуска результата.
  • Emdash — открытая среда для параллельных агентов с расписанием задач, встроенным предпросмотром и управлением prompts, skills и MCP-инструментами.
  • Claudoscope локально показывает сессии Claude Code и Cowork в строке меню macOS и не отправляет телеметрию.
  • Шпаргалка Claude Code помещает команды и клавиатурные сокращения на одну страницу с версиями для macOS и Windows.
  • Набор правил ponytail просит coding agent писать минимальный объем кода, достаточный для решения задачи.

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

Playwright быстрее работает в GitHub Actions

Руководство по настройке Playwright в GitHub Actions предлагает кэшировать браузерные бинарники и убрать ограничение шаблона на один worker. Это сокращает время CI, но число параллельных процессов нужно подбирать под ресурсы runner, иначе тесты начнут конкурировать за память и CPU.

Безопаснее работать с зависимостями

Обновления инструментов

  • ESLint 10.7 обновил правила и исправил ошибки статического анализа JavaScript.
  • Storybook 10.5 развивает среду для изолированной разработки и проверки компонентов.
  • Vite DevTools 0.4 улучшил инструменты диагностики проектов на Vite.
  • Fuse.js 7.5 исправил расчет рейтинга нечеткого поиска, поэтому порядок старых результатов может измениться. Возможности библиотеки показывают документация и демо поиска.
  • Nano ID 6 генерирует компактные URL-безопасные идентификаторы примерно в четыре раза быстрее и больше не поддерживает Node.js 18 и 20.
  • actions/setup-node@v7 учитывает защиту GitHub Actions от отравления кэша. Новая инструкция по Trusted Publisher показывает публикацию в npm через OIDC без постоянного токена.
  • c8 12 строит Istanbul-совместимые отчеты по данным покрытия V8; у встроенного test runner Node.js есть и собственный экспериментальный отчет.
  • np 12 добавил поддержку npm 12 и поэтапной публикации пакетов.
  • HyperExpress 7 обновил быстрый Node.js-сервер на базе uWebSockets.js.
  • Helmet 8.3 настраивает защитные HTTP-заголовки в Express-приложениях.
  • node-auth0 6 обновил официальный Node.js SDK платформы Auth0.

Еще полезные находки

  • Введение в Git worktrees показывает, как держать несколько веток одного репозитория в разных папках и не переключать рабочие файлы туда-сюда.
  • eslint-node-test находит типичные ошибки в тестах, написанных на встроенном node:test, и помогает выдерживать единый стиль.
  • Nub запускает TypeScript-файлы, scripts из package.json и локальные CLI на обычном Node.js без нового рантайма и отдельного lockfile.
  • Stripe Projects одной CLI-командой подключает сервисы, создает учетные данные и настраивает billing без ручного обхода панелей управления.
  • web-ext 10.5 помогает собирать, запускать и тестировать расширения браузеров одинаковыми командами на разных системах.
  • Hacker News Trends строит историю упоминаний слова или фразы на Hacker News и помогает увидеть, когда технология входила в моду.
  • Devographics запустила общий опрос State of Devs 2026, расширив привычный формат исследований вроде State of JavaScript на инструменты, процессы и опыт разработчиков в целом.