
Пульс веб-платформы 04.04.2025
Новости
- вышел Chrome 135:
- появились атрибуты
command
иcommandfor
для кнопок, чтобы декларативно описывать взаимодействие с поповерами и диалогами - добавили псевдоэлементы
::scroll-button()
и::scroll-marker
для «нативных» каруселей - CSS-функция
shape()
позволяет описывать вclip-path
параметрические SVG-like-формы - добавлена возможность стилизации псевдоэлемента внутри псевдоэлемента
::before::marker
- поддержали Observable API и
fetchLater()
для отложенного запускаfetch
- появились атрибуты
- вышел Safari 18.4:
- внедрили новый декларативный формат Web Push
- также поддержали CSS-функцию
shape()
- обновили
<input type="color" />
, теперь поддерживает атрибутыalpha
иcolorspace
- поддержали Cookie Store API
- вышел Firefox 137: из интересного только выкатили группировку табов, а в ночных сборках появляется поддержка PWA
- выпустили React 19.1.0: появилась фича Owner Stack для более детального отслеживания в дев-режиме иерархии рендера компонентов, а также подфиксили баги в React и React DOM
- вышел Express 5.1.0, эта версия становится LTS
- поддержка Node.js 18 заканчивается 30 апреля 2025, время обновить ваши
.nvmrc
- выпущен Material UI v7:
- улучшилась поддержка ESM
- устаканилось API
slots
иslotProps
- впилили поддержку
@layer
для упрощения интеграции с другими либами
- вышел отчёт State of Vue.js 2025:
- хотят по-прежнему дожать Vapor Mode с обратной совместимостью
- по популярности Vue всё ещё отстаёт от React, но количество сайтов на Vue явно больше Angular
- треть проектов всё ещё на Vue 2, хоть он больше и не поддерживается (миграция вызывает сложности)
- Pinia — доминирующий стейт-менеджер
- комьюнити не хватает библиотек компонентов (как MUI или Radix) под Vue
- Nuxt v4 уже неподалёку
- со стороны WebKit появилось предложение объединить пересекающиеся части flexbox и grid в новом семействе свойств
item-direction
,item-wrap
,item-pack
,item-slack
(чтобы наконец перестать вспоминать каждый раз, что этиalign-smthng
значат)
Проекты
- ls-lint — линтер названий файлов и директорий в файловой системе
Статьи и демки
JS
- кольцевые зависимости между модулями в JS не отлавливаются на уровне языка/среды, но они могут потенциально приводить к ошибкам типа
ReferenceError: Cannot access 'a' before initialization
, так как к содержимому из одного модуля может обращаться другой модуль до его инициализации и полного выполнения; беспорядочные кросс-импорты в «шареной» зоне проекта нуждаются в особом внимании, для этого есть сторонние либы для отслеживания корректности импортов madge и eslint-plugin-import - мемоизация в React изначально спроектирована довольно хрупко: простое заворачивание пропсов в
useMemo
/useCallback
не повлияет на ререндеры компонента, нужно ещё замемоизировать сам компонент вReact.memo
, а также следить, что внутри нет спреда пропсов<Child {...props} />
, нет немемоизированного прокидывания{ children }
(они пересоздаются каждый раз), нет дополнительных дочерних компонентов без мемоизации
CSS
- аутлайн по клавиатурному фокусу на ссылках никогда не повредит:
a:focus-visible { outline-offset: 0.25em; outline-width: 0.25em; outline-color: currentColor;}
- про тени: три вида теней —
box-shadow
,filter: drop-shadow()
иtext-shadow
—могут не только статически применяться, но и анимироваться, причём благодаря@property
возможна анимация только одного из параметра тени, например,box-shadow: inset 0 0 0 var(--l) var(--c)
, что делает тени мощным декоративным элементом - прикольный, но хрупкий голографический эффект на скролле, построенный на режимах наложения,
background-attachment: fixed
и линейных градиентах - а пока создатели CSS размышляют не схлопнуть ли flex и grid в единое свойство, разработчикам как-то нужно жить и решать, что использовать в каждом конкретном юзкейсе: вот у одного есть мнение, что в решении, что взять, нужно следовать в порядке grid/inline-grid → block → flex
- об анимации движения по линии с помощью
offset-path
вы уже наверняка слышали, но тут идею развили поглубже и творят прям интересные экземпляры (правда с использованием css-doodle), так что есть чем вдохновиться
Платформа
- бездумный вайб-кодинг хорош для чего-то небольшого и одноразового, так как быстро раздувает количество кода и поддержка этого дела начинает упираться в комплексность; а самый хороший способ понять систему — вдумчиво её порефакторить