Дайджест #61
🦊 Привет, это Фронти!
Я принёс свежий выпуск #61 и собрал главное за неделю ✨
В этом выпуске: Firefox ускоряет доставку новых возможностей, CSS учится случайности и распознаёт составные фичи, «Сапёр» помещается в 247 байт, htmx 4 обновляет DOM прямо из HTML, Remix расстаётся с React, Bun всё ближе к Node.js, а pnpm переписывается на Rust.
🧪 HTML и веб-платформа
- Firefox 155 добавил новые возможности для attr(), математические CSS-функции и переименование font-stretch в font-width.
- Браузеры экспериментируют со словарём для проверки орфографии и подтверждением email без перехода по ссылке.
- Google окончательно убрала расширения Manifest V2 из Chrome Web Store, а Firefox для iOS получил встроенный блокировщик рекламы.
🎨 CSS и дизайн
- CSS-функцию random() уже можно использовать за пределами Safari с помощью небольшого полифила.
- Новый @supports named-feature() проверяет поддержку не отдельного свойства, а целой составной возможности браузера.
- Разработчики снова спорят, сколько состояний должно быть у переключателя темы: два или всё-таки три.
- А ещё на чистом CSS собрали интерактивную игру — селекторы окончательно отказались признавать границы своих обязанностей.
📦 JavaScript и библиотеки
- Полноценный «Сапёр» уместили в 247 байт JavaScript — читать такой код страшнее, чем нажимать на первую клетку.
- Quicklink заранее загружает страницы по видимым ссылкам и ускоряет будущие переходы.
🛰️ Фреймворки
- htmx 4 перешёл на fetch, сделал наследование атрибутов явным и научился аккуратно обновлять DOM через morphing swaps.
- Remix 3 больше не зависит от React и строит приложения вокруг собственных примитивов.
- SvelteKit 3 и Vue 3.6 приближаются к стабильным релизам, а Astro получил площадку для запуска примеров.
⚛️ React и React Native
- React-компоненты вышли за пределы браузерного DOM: GPUIX рендерит нативные GPU-интерфейсы, а Blender React управляет 3D-сценами.
- Turbopack подробно объяснил формирование чанков и способы уменьшить клиентский бандл.
- React Native осваивает WebGPU, а Shopify повышает стабильность мобильных E2E-тестов с помощью компьютерного зрения.
🟢 Node.js, Deno и Bun
- NestJS 12 перешёл на ESM, Rspack и Vitest, а также добавил поддержку Standard Schema.
- Bun 1.4 проходит уже 80% тестов Node.js и получил встроенную работу с React Compiler и Markdown.
- Экспериментальный node:ffi открывает прямой доступ к C-библиотекам без node-gyp и отдельных аддонов.
- Express закрыл шесть уязвимостей, поэтому зависимости стоит проверить и обновить.
- Node.js 26.8.0 Current и 24.20.0 LTS уже вышли, а AWS Lambda начала тестировать рантайм Node.js 26.
📘 TypeScript
- Zod 4.5 добавил компиляцию схем, ускорил проверку и сократил потребление памяти примерно в девять раз.
- TypeScript научился учитывать import attributes в объявлениях ambient modules.
- Lean показывает типы как инструмент математических доказательств, а знакомая TypeScript-реализация помогает разобраться в механике.
🤖 ИИ и инструменты для агентов
- Агентная разработка возвращает интерес к простым платформенным примитивам вместо больших универсальных абстракций.
- Вместе со скоростью приходит риск потери навыков: понимание всё ещё приходится поддерживать собственной практикой.
- Agent Behavior предлагает общий формат описания поведения агентов, а Paseo — единый интерфейс для разных coding agents.
- Инструменты для skills, правил, памяти и координации нескольких моделей продолжают превращаться в отдельную экосистему.
🧰 Сборка, тестирование и инструменты
- pnpm 12 переписан на Rust, сохранив привычные команды и почти полную совместимость с предыдущим workflow.
- Rspack 2.2, Rsbuild 2.2 и Vitest 5 ускоряют сборку, HMR и тесты.
- Cypress 16 получил HTTP/2, а Vitest — просмотр трассировки браузерного теста.
- Drydock помогает заметить подозрительные изменения в npm-пакете до публикации.
- Speedlify 2 регулярно измеряет Lighthouse, Core Web Vitals и доступность через GitHub Actions.
🦊 Лисья шутка недели:
CSS получил random(). Наконец-то можно официально сказать, что кнопка съехала не из-за бага, а по спецификации.
CSS получил random(). Наконец-то можно официально сказать, что кнопка съехала не из-за бага, а по спецификации.
Remix ушёл от React, pnpm переписался на Rust, а NestJS перешёл на ESM. Фронти только открыл документацию — а стек уже собрал вещи и переехал.
«Сапёр» уместили в 247 байт. Примерно столько же занимает сообщение «маленький фикс», после которого меняются lock-файл и половина node_modules.
Полный выпуск уже на месте 👉 https://frontend-weekly.ru/weekly-digest-61/
frontend digest
html
css
javascript
browser
react
node.js
typescript