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

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

Как читать этот дайджест
  • Начните с заголовков статей, чтобы получить общее представление о содержании
  • Быстро пробегитесь по первым абзацам, чтобы понять актуальность материалов именно для вас
  • Выберите наиболее интересные или полезные темы под текущие задачи
  • Планируйте чтение: выделите, например, 15 минут утром и 15 минут вечером
  • Не пытайтесь прочитать всё сразу — возвращайтесь к дайджесту в удобное время
  • При повторном просмотре читайте выбранные статьи более вдумчиво, делая заметки
  • Не сожалейте, если прочитали лишь часть: ценность в качестве, а не в количестве
  • Используйте закладки для сохранения интересных материалов
  • Делитесь инсайтами и ссылками с коллегами — так информация лучше усвоится
Семантический HTML — это важно! 🏗️
CSS Highlight API для подсветки! ✨
position: sticky странный! 🤔
CSS-миры без JS! 🌍
width: 100% без overflow! 🎯
Зоопарк JS-движков! 🦁
ESLint для Baseline JS! ✅
useTransition не везде! ⚛️
Node.js безопасность! 🔒
pnpm 10.21 умнее! 📦
Фронти - маскот дайджеста

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

  • Explaining the Accessible Benefits of Using Semantic HTML Elements — объяснение “по-человечески”, зачем нужны семантические теги (<header>, <main>, <nav>, <article> и т.д.) и как они помогают скринридерам и навигации с клавиатуры. Полезно, если пока всё ещё верстаете “на диванах и дивах”.
  • 100, 150, or 200? Debunking the alt Text Character ‘Limit’ — разбор мифа про “правильную” длину alt-текста. Автор показывает, что важнее не количество символов, а то, чтобы описание действительно помогало понять, что на картинке, особенно для пользователей, которые не видят изображение.

🎨 CSS и дизайн

Список по производительности веб-анимаций

В статье The Web Animation Performance Tier List автор разбирает, какие виды анимаций нагружают браузер сильнее, а какие — почти бесплатные по производительности. Объясняется, как работает рендер-пайплайн (layout, paint, composite), какие свойства лучше всего анимировать (например, transform и opacity), а какие вызывают лишние перерасчёты и тормоза. Если вы хотите, чтобы интерфейс оставался плавным даже на слабых устройствах, эта статья помогает выработать “чек-лист” по выбору безопасных анимаций.

Подсветка синтаксиса с CSS Custom Highlight API

High-Performance Syntax Highlighting with the CSS Custom Highlight API показывает, как использовать новый API, который уже поддерживается во всех основных браузерах. Идея такая: JavaScript отвечает за поиск нужных диапазонов текста (например, ключевых слов в коде или подсветки поиска), а CSS — за их стилизацию через специальные селекторы. Получается лёгкая и гибкая подсветка без тяжёлых библиотек и постоянных DOM-манипуляций — полезно для редакторов кода в браузере и сложных текстовых интерфейсов.

Странности у position: sticky

В статье The Weird Parts of position: sticky; разбирают, почему “липкие” элементы иногда ведут себя не так, как мы ожидаем. Автор объясняет, как на sticky влияют контейнеры с overflow, высота родителя, направление скролла и соседние элементы. Если вы пробовали сделать “прилипающее” меню или шапку, а оно упорно не хотело приливать — этот материал как раз про такие случаи.

Crafting Generative CSS Worlds

Agustin Capeletto показывает, как можно построить целые “миры” с рельефом, используя только CSS: стековые гриды, 3D-трансформации и немного фантазии. Получается визуальная генерация высотных карт без единой строки JS. Читать: Crafting Generative CSS Worlds

Fix “width: 100%” Overflow Easily

Короткое объяснение нового значения stretch. Оно позволяет элементу занимать всю ширину или высоту контейнера, учитывая отступы, и устраняет раздражающий оверфлоу без calc() и box-sizing. Смотреть: Fix “width: 100%” Overflow Easily


  • pathLength Makes SVG Path Animations Easier to Manage — короткий гайд о том, как с помощью атрибута pathLength и сочетания stroke-dasharray + stroke-dashoffset проще управлять анимацией линий в SVG (например, эффект “рисующейся” линии).
  • Perfectly Pointed Tooltips: To the Corners — продолжение серии про тултипы: как аккуратно отрисовать “хвостик” подсказки, особенно когда она прилипает к углам и краям элементов.
  • Building a 3D Infinite Carousel with Reactive Background Gradients — пример сложного, но эффектного 3D-каруселя с бесконечной прокруткой и динамически меняющимися градиентными фонами. Хорошая демонстрация того, как сочетать CSS-трансформации и анимации.

Присоединяйтесь Telegram-каналу

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

Подписаться

📦 JavaScript

«Зоопарк JS-движков»: больше 100 JavaScript-движков

Автор собрал огромную «таблицу зоопарка JS-движков, где перечислено больше сотни разных JavaScript-движков. Таблицу можно сортировать по производительности, смотреть, кто и где использует конкретный движок, а также как он развивался. Для тех, кто хочет поэкспериментировать, в репозитории проекта есть набор Dockerfile-ов, чтобы быстро запускать разные движки у себя локально — полезно, если интересно, как JS работает «под капотом».

  • Для проверки поддержки фич в движках и браузерах удобно использовать таблицу совместимости ECMAScript-функций — там видно, какие возможности языка уже можно использовать, а какие ещё экспериментальные.

  • Комитет TC39, который развивает стандарт ECMAScript, проводит уже 111-ю встречу — у них очень плотная повестка по будущим фичам JS. За процессом можно следить и через заметки от Rob Palmer.

  • Если переживаешь за безопасность кода, посмотри советы по тому, как писать более безопасный JavaScript — там базовые практики вроде работы с вводом пользователя, хранением секретов и защитой от типичных атак.

  • Для тех, кто только осваивает типизацию, есть визуальный гид «Visual Types» с уклоном в TypeScript: автор через картинки и простые примеры объясняет, что такое типы и как они помогают ловить ошибки.

  • Для понимания «внутренностей» движков полезен обзор того, как менялся сборщик мусора в V8 за последние годы — автор разбирает развитие GC в V8 и объясняет, какие идеи позволили сделать сборку мусора быстрее и менее заметной для пользователя.

  • Ещё одна статья про улучшение отладки — о том, как использовать Error с полем cause, чтобы «цеплять» исходную ошибку к новой. Это позволяет строить цепочку причин и гораздо проще разбираться, где именно всё сломалось.

ESLint-плагин для проверки Baseline JavaScript

Победитель недавнего Baseline Tooling Hackathon — это ESLint-плагин для Baseline JavaScript. Он делает простую, но важную вещь:

По сути, это автоматическая проверка: «можно ли такую фичу уже использовать без полифиллов или нет».

⚛️ React

Не используйте useTransition повсюду

Статья «Don’t Blindly Use useTransition Everywhere» разбирает, зачем вообще нужен хук useTransition и почему не стоит пихать его в каждый рендер. Автор показывает живые примеры, где переходы действительно помогают сделать интерфейс плавнее, и примеры, где их использование только усложняет код и путает пользователя. Для новичка главный вывод простой: начинайте с обычных useState/useEffect, а к useTransition переходите только там, где есть тяжёлые обновления и реальная проблема с «фризами» интерфейса. Дополнительно автор ссылается на документацию и примеры использования самого useTransition.

  • «Your URL is Your State» — статья о том, как научиться хранить состояние приложения в URL. Автор на примерах показывает, как через параметры запроса (?page=2&filter=active) можно кодировать текущий экран, фильтры и сортировки. Это облегчает шаринг ссылок, работу с «Назад/Вперёд» в браузере и восстановление состояния после перезагрузки. В статье есть примеры и на «голом» JavaScript, и с использованием React Router, а также упоминание библиотеки для работы с параметрами.

  • Для работы с параметрами URL автор рекомендует библиотеку nuqs — это небольшой type-safe менеджер состояния через query-параметры. Он помогает связать состояние React-компонентов и строку URL так, чтобы всё оставалось типобезопасным и предсказуемым, без ручного парсинга строки.

  • В заметке «Concurrent Hydration with useSyncExternalStore» рассказывают, как использовать useSyncExternalStore вместе с concurrent-рендерингом. Для новичка можно думать об этом так: когда у вас есть глобальное хранилище (например, собственный store или какая-то внешняя библиотека), useSyncExternalStore помогает React правильно подписаться на изменения и не ломать гидратацию на стороне клиента.

  • Инструмент «React Source Lens» даёт возможность выбрать компонент прямо в браузере и мгновенно открыть соответствующий файл в редакторе. Это похоже на DevTools, но интегрировано с IDE: удобно, когда вы разбираетесь в большом проекте и не знаете, где лежит конкретный кусок JSX.

⚙️ Node.js

Node.js: официальные рекомендации по безопасности

Node.js Security Best Practices — в самом Node.js есть отдельная страница с рекомендациями по безопасности. Там собраны основные «болевые точки»: проблемы с сетью, атаки по времени отклика, supply chain-атаки (через зависимости) и даже риски от «монкипатчинга» встроенных объектов. Если вы пишете бэкенды на Node, это чек-лист, который стоит хотя бы раз внимательно пройти: какие заголовки ставить, как работать с TLS, где помнить про лимиты и т.д.

Дополнительно по теме безопасности:

  • Подборка Лирана Таля Awesome Node.js Security — коллекция статей, тулзов и реальных кейсов по взлому и защите Node-приложений.

  • OWASP выпустил RC списка Top 10 угроз для веб-приложений в 2025 году — хорошая шпаргалка по тому, от чего вообще защищаться.

  • Вышел релиз «Node.js v25.2.0 (Current)», в котором функция type-stripping стала стабильной. Проще говоря, Node теперь умеет «выкидывать» типы из TypeScript/JS с аннотациями прямо при запуске, без отдельного шага сборки (с ограничениями). Для новичка это шаг к более простому запуску типизированного кода в продакшене.

  • Вышла версия рантайма «Bun v1.3.2». Bun позиционируется как альтернатива Node.js и npm в одном инструменте: он может быть и рантаймом, и пакетным менеджером, и сборщиком. Такие релизы — повод периодически смотреть, не стал ли Bun удобнее под ваши типичные задачи.


▶ State of Node.js 2025 от Matteo Collina

The State of Node.js 2025 — получасовой доклад с JSNation от участника TSC Node. В одном видео компактно:

  • как сейчас растёт популярность Node;
  • что происходит с релизным циклом;
  • какие фичи подвезли для безопасности и производительности;
  • как работает новая система permissions;
  • куда платформа будет развиваться дальше.

Формат удобный для «включить и послушать на фоне», чтобы обновить картину по экосистеме, если давно не следили.

pnpm 10.21: более безопасные установки и управление runtime

pnpm 10.21: Safer Installs and Smarter Runtime Management — в этом релизе две большие штуки:

  1. Автоматическая установка нужной версии Node Теперь зависимость может указать требуемый runtime через поле engines.runtime, и pnpm сам подтянет эту версию Node. Это важно для CLI-утилит и скриптов в postinstall: они будут выполняться именно под той версией, на которую рассчитывал автор.

  2. Новая настройка trustPolicy Можно задать политику доверия к пакетам. Если доверие падает (например, ломается цепочка сборки/подписи), pnpm просто откажется устанавливать пакет. Это ещё один слой защиты от supply chain-атак.

Вдобавок, Dr. Axel Rauschmayer заметил (и напомнил), что pnpm уже умеет ставить и управлять разными версиями Node — удобно, когда в проекте живут разные сервисы с разными требованиями к runtime.

🌐 Браузеры

  • 32 Years and a Day Since Mosaic 1.0 — напоминание, что первому популярному графическому браузеру Mosaic уже больше 32 лет. Небольшой исторический экскурс для ностальгии.
  • GitHub отказывается от “тостов” — команда GitHub убирает всплывающие уведомления-тосты из интерфейса из-за проблем с доступностью и юзабилити. Хороший пример, как крупный продукт пересматривает устоявшиеся UI-паттерны.
  • Браузер для разработчиков Polypane научился работать с код-агентами через chrome-devtools-mcp — экспериментальное направление, где DevTools можно связать с ИИ-агентами для автоматизации задач.
  • Mozilla обновляет маскота Firefox: знакомьтесь, “Kit” — небольшой визуальный ребрендинг лисы.
  • Horizon: The Current Sky at Your Approximate Location, Rendered as a CSS Gradient — демонстрация, которая показывает текущий “вид неба” у вас в регионе в виде большого CSS-градиента. Есть живой пример: днём — цветное небо, ночью — почти чёрный экран. Всё отрисовывается на сервере и обновляется через старый добрый meta http-equiv="Refresh".

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

  • pg-promise v12.3 — расширенный драйвер для PostgreSQL c автоуправлением соединениями, хелперами для SQL и т.п.
  • file-type 21.1 — умеет определять тип файла по содержимому (включая потоки), теперь ещё и с поддержкой .tar.gz и файлов реестра Windows.
  • pg-boss 12.0 — очередь задач на PostgreSQL для Node. В этом релизе пакет мигрировал на ESM, так что старые CommonJS-проекты придётся слегка поправить.
  • 🤖 Repomix 1.9 — утилита, которая упаковывает весь репозиторий в один файл, удобный для передачи в LLM (например, чтобы «показать» модели проект целиком).
  • Fastify 5.6.2 — быстрый и лёгкий веб-фреймворк для Node; минорный релиз в 5-й ветке.
  • Prisma 6.19 — популярный ORM для Node.js и TypeScript.
  • node-mssql 12.1 — клиент для Microsoft SQL Server из Node.
  • Tasuku (タスク) — минималистичный task-runner для Node. Можно разбить процесс на мелкие задачи, красиво показать прогресс в терминале и выполнить всё в нужном порядке. Нечто вроде make, но в Node-стиле. Есть живой демо-пример.
  • fkill 10.0 — кроссплатформенный способ убивать процессы из Node-кода. Например: await fkill('chrome', {waitForExit: 2000}); — аккуратно завершит Chrome и подождёт выхода.
  • CSSOM — парсер CSS на чистом JavaScript и частичная реализация CSS Object Model. Полезно, если нужно разбирать/менять CSS на сервере или в тулзах, а не в браузере.

Обновления

  • vis-timeline 8.4 — виджет для визуализации данных во времени: можно отображать события, интервалы, диапазоны. В галерее примеров куча вариантов использования — от диаграмм Ганта до лент времени.
  • rasterizeHTML.js 1.4 — рендерит HTML в <canvas>, а теперь ещё и с поддержкой OffscreenCanvas. Полезно, если хочется конвертировать HTML в картинку или делать предпросмотр на стороне клиента.
  • file-type 21.1 определяет тип файла по содержимому (в Node и в браузере), не полагаясь на расширение. Удобно для валидации загружаемых файлов.
  • Svelte SEO 2.0 помогает оптимизировать Svelte-приложения под поисковики и соцсети: удобная работа с мета-тегами, превью-картинками и т.п.
  • isomorphic-git 1.35 — чисто JavaScript-реализация git, которая работает и в Node, и в браузере. Можно, например, строить web-интерфейсы поверх репозитория без установки настоящего git на машину пользователя.
  • В мире сборщиков вышел esbuild 0.27 — важный релиз с ломающими изменениями. Команда отдельно подчёркивает, что esbuild стоит явно пиновать по версии, чтобы обновление не ломало сборку неожиданно.