Pinia 4.0 — Релиз state-менеджера для Vue. Установочный размер сократился на 77%, теперь только ESM, а для диагностики ошибок подключили Nostics. Vue Devtools стал peer dependency — меньше лишнего в бандле.
Vue Router 5.2 — Сопутствующий релиз с поддержкой Pinia 4.0 и тем же Nostics для ошибок. Совместимость экосистемы Vue постепенно выстраивается.
Проекты
Shaders — Дизайн-платформа для WebGPU-эффектов — анимированные фоны, стеклянные поверхности, 3D-фигуры и текст как декларативные компоненты для React, Vue, Svelte и других. Визуальный редактор с бесконечным холстом, свежая v3 ускорила движок и уменьшила бандл.
Статьи, мнения, туториалы
JS/TS
Неявный рассинхрон состояния при AsyncLocalSnapshot — AsyncLocalSnapshot в Node.js замораживает контекст, но колбэк от EventEmitter может пережить задачу. Если слушатель не удалён — следующая задача получает stale context. Совет: не используйте снапшоты для долгоживущих подписок, чистите через Symbol.asyncDispose или finally.
CSS
Lessons Learned Rewriting a Sticky Detector — Крис Койер переписал демо 2014 года, где scroll-event на jQuery определял «прилипание» элемента. Сейчас это делается чисто на CSS через position: sticky и scroll-state — без JS, без слушателей, без лишних рефлоу.
Performance
Как рекламный стек убил страницу на iPhone — Детальный разбор: сайт 35mmc за 12 секунд съел 627 МБ памяти и упал в Chrome на iPhone. Виноват не один баннер, а весь рекламный комбайн — Flashtalking, Google SafeFrames, Primis video player с HLS и Prebid. Safari пытается перезагрузить, Chrome просто падает. Хороший пример того, как трекинг и ad-tech разрушают user experience.