
Вячеслав Науменко
Фронтенд инженер
Разрабатываю масштабируемые и высоконагруженные интерфейсы в Gambling-индустрии. Специализируюсь на фронтенд-архитектуре и дизайн-системах, усиливаю процессы с помощью AI.
В блоге публикую статьи, новости и разборы того, что реально происходит в индустрии. Фронтенд, инструменты, браузеры, веб-стандарты — без воды и маркетинга (удалить при первом запросе рекламы).
Блог
131Interop 2027
Developer Signals и рейтинг Firefox позволяют повлиять на приоритеты браузеров и отбор фич для Interop 2027.
⚡️ The Remix Way: как новый подход фреймворка меняет инженерное мышление
Философия Remix 3: модульные библиотеки, интерфейсы-контракты и нативные веб-примитивы.
Кризис среднего возраста в JavaScript
JavaScript победил в браузере, но его инфраструктура переходит на Rust, Go и Zig: что это меняет для разработчиков.
Результаты State of Devs 2026
Зарплаты, выгорание, отношение к AI и формат работы в опросе State of Devs 2026.
GitHub делится опытом отказа от CSS-in-JS
Как GitHub заменил runtime CSS-in-JS на utility-классы и улучшил размер бандлов, INP и LCP.
⚡️️ Offline-first и Real-time sync — это, по сути, одна и та же задача
Общий фундамент оффлайн-режима и real-time синхронизации в Local-First приложениях.
Как заставить Claude Design работать с реальной дизайн-системой, а не генерить «похожие» компоненты.
Синхронизация дизайн-системы с Claude Design через /design-sync: бандл, экспорты, типы и проверка рендера.
Один SVG, девять постеров: свойство link-parameters
CSS Linked Parameters позволяет передавать параметры в один SVG-файл из HTML и CSS без дублирования.
🐼 Вышел Panda CSS v2 — движок переписали на Rust
Panda CSS v2 получил компилятор на Rust поверх Oxc, ускоренный парсинг и WebAssembly-сборку.
📌 Сноски на полях с помощью CSS Anchor Positioning
Сноски на полях без JavaScript: типизированный attr(), anchor(), max() и фолбэк для узких экранов.
Выравниваем иконки в списках 🎯
Как выровнять иконку относительно первой строки текста с помощью единицы lh и CSS calc().
Корневой скроллер и как его не потерять 📜
Зачем сохранять корневой скроллер страницы и как избежать потери нативных возможностей прокрутки.
Думать самому 🥲
На секунду испугался, что теперь придется думать самому.
Современные типы для веба 💡
modern-web-types добавляет в TypeScript типы веб-API, реализованных хотя бы в одном браузерном движке.
Наконец-то человеческие iframes: Chrome 154 получает поддержку frame-sizing
Нативное изменение размеров iframe через frame-sizing, метатеги и window.requestResize() в Chrome 154.
Забываем про localhost:3000: знакомьтесь с Portless 🔌
Portless заменяет локальные порты стабильными доменами .localhost и поддерживает HTTPS и Git Worktrees.
Jev: System 1 модели, когда ответ нужен моментально ⚡️🧠
Jev от Typesafe AI: быстрые вероятностные модели для классификации, интерфейсов, игр и поиска.
Локальная подсветка синтаксиса на WebGPU и микромодели 🧠⚡️
gpu-lexer использует локальную микромодель на WebGPU для токенизации кода и подсветки синтаксиса без серверных вычислений.
Главный поток браузера — это ограниченный ресурс
Как управлять нагрузкой Main Thread: делить long tasks, уступать браузеру, группировать события и выносить вычисления в workers.
GPU Time — парсинг дат с помощью ИИ ⏱️🧠
gpu-time — микромодель примерно на 24.8K параметров для локального разбора дат и относительных временных фраз.
React-код прямо поверх GPU UI от Zed: встречайте GPUIX ⚡️
GPUIX позволяет писать React-интерфейсы для GPU-ускоренного GPUI от Zed без Electron и Chromium.
Вышел React 19.3: стабилизация View Transitions, Fragment Refs и еще пару полезных фич ⚛️⚡️
React 19.3 стабилизирует View Transitions и Fragment Refs, добавляет browser-only компоненты, Trusted Types и контекст в RSC.
Вам больше не нужен initial-scale=1.0 в метатеге viewport 📱
Почему initial-scale=1.0 больше не нужен современным мобильным браузерам и какой метатег viewport достаточно оставить.
Контейнерные style queries + продвинутый attr(): переосмысливаем архитектуру компонентов в CSS 🎨🧩
Продвинутый attr() и Container Style Queries передают типизированные HTML-атрибуты в CSS и делают компоненты автономнее.
Вышел pnpm 12 на Rust 🚀
pnpm 12 переносит движок установки на Rust: быстрый старт, ускоренные установки, детерминированные циклы и breaking changes.
Вышел Zod 4.5: Предварительная компиляция схем и сокращение памяти почти в 10 раз 🚀
Zod 4.5: новые API, ускорение safeParse, ленивое связывание методов и JIT-компиляция схем через z.compile().
Делаем длинные списки быстрыми: Content Visibility против Виртуализации 📜⚡️
Content Visibility и виртуализация устраняют разные узкие места: как выбрать подход по Layout, Paint, размеру DOM и памяти.
Правильный SSR для таймзон: решаем проблему с помощью @epic-web/client-hints 🌍⏰
Как @epic-web/client-hints передаёт таймзону через cookies для корректного SSR дат без мерцания и ошибок гидратации.
Разбираемся с панелью Performance в Chrome DevTools ⏱️
Интерактивный гайд по Performance в Chrome DevTools: цвета, сетевые запросы, флеймчарты, метрики и узкие места Main Thread.
TanStack отказывается от RSC: когда решение оказалось сложнее самой проблемы
Почему TanStack отказался от RSC после замены тяжёлых зависимостей и что это изменило для сложности, навигации и трафика.
Что если сделать ссылочную стабильность частью системы типов TypeScript?
Концепция stableref: брендированные Stable-типы, строгие пропсы и хуки для проверки стабильных ссылок на этапе компиляции.
Генерируем OG-карточки без Headless Chrome: быстрый генератор на Rust 🖼⚡️
Takumi рендерит JSX в PNG, WebP, SVG и JPEG без браузера, поддерживает современные стили и разные рантаймы.
Octane: очередной «быстрый React» без Virtual DOM и жестких правил хуков ⚡️
Octane предлагает React-подобный API без Virtual DOM и ограничений хуков, с портами популярных инструментов.
Бесконечность в CSS
Практические приёмы с infinity в CSS: скругления, z-index, булева логика, фон, анимации и односторонний clamp.
State of CSS 2026: Год якорного позиционирования ⚓️
Результаты State of CSS 2026: интерес к Anchor Positioning, применение ИИ в стилях и изменения в инструментах.
Лестница композиции в React: как не утонуть в пропсах и оверинжиниринге 🧗♂️
Четыре уровня композиции React от Orus: обычные пропсы, compound-компоненты, Composer с Providers и стейт за контрактом.
Ультимативный туториал по созданию форм на React 📝
Подробный туториал по React-формам: HTML, useActionState, TanStack Form с Zod, многошаговые формы и массивы полей.
React2Shell: как протокол React Flight превратился в вектор RCE-атак 🚨
Разбор React2Shell и CVE-2025-55182: десериализация React Flight, цепочка эксплоита и меры защиты.
Турнирная сетка на CSS Subgrid. Мастер-класс от Ахмада Шадида ⚽️
Ахмад Шадид показывает, как строить турнирную сетку на CSS Subgrid с выравниванием матчей и соединительными линиями.
Nectar: WebAssembly-язык для фанатов экстремальной производительности ⚡
Nectar — компилируемый язык на Rust с выводом в WebAssembly: минимальный размер, скорость и компромиссы DX.
Эксперименты с text-fit: нативное автомасштабирование текста в CSS
Экспериментальное CSS-свойство text-fit: режимы grow и shrink, стратегии подгонки и ограничения масштабирования.
Custom Invoker Commands в React: межкомпонентная связь без контекстов и проп-дриллинга? ⚡️
Нативные Custom Invoker Commands в React: примеры command и onCommand, преимущества и ограничения подхода.
Стартовал опрос State of Devs 2026! 🧠
State of Devs 2026 изучает здоровье, зарплаты, карьеру, хобби и сообщество разработчиков.
Не доверяйте React Compiler: реальный опыт внедрения и подводные камни ⚛️
Опыт внедрения React Compiler: React Hook Form, устаревшие коллбэки, значок Memo и безопасная миграция.
Как устроен веб ChatGPT на 1 миллиард пользователей: реверс-инжиниринг стека OpenAI 🧠
Стек и эволюция ChatGPT Web: React Router 7, Vite, SSR-стриминг, анонимный доступ, фича-флаги и защита от ботов.
ECMAScript 2026 официально утвержден: что завезли в стандарт JavaScript? 🚀
Новые возможности ES2026: точное суммирование, Map Upsert, Base64 и Hex, Error.isError, JSON.parse и Iterator.concat.
CSS Anchor Positioning: прощай, JS-костыли для тултипов и выпадающих меню ⚓️
Разбор CSS Anchor Positioning от Джоша Комо: привязка элементов, автоматические фоллбэки и интеграция с popover.
HTTP-метод QUERY получил статус Proposed Standard: прощай, POST для тяжелых запросов? 🌐
HTTP-метод QUERY объединяет тело запроса с безопасной и идемпотентной семантикой GET для сложных выборок.
Вышел TypeScript 7.0 RC: стабилизация API и финал перед релизом 🛠
TypeScript 7.0 RC стабилизирует API: компилятор на Go, совместная работа с TS 6 и улучшенный вывод типов.
Почему я начал понимать HR-ов: разбор почти сотни резюме и главные ред-флаги 📑🤦♂️
После почти сотни резюме для Uplatform: игнорирование условий, тяжёлые CV и безымянные файлы глазами человека, который делает рефералки.
Ищете работу? Хайрим в Uplatform! 💼🚀
Uplatform ищет DevOps, аналитиков, разработчиков и дизайнеров: как отправить резюме для внутренней рекомендации.
Эксперименты с нативным random() в CSS: от теории к реальным кейсам 🎲
Практические примеры random() в CSS: боке, северное сияние, лепестки сакуры, стопка фотографий и случайная поэзия.
Главные боли SVG в 2026 году 🎨
Чего не хватает SVG: стилизации внешних файлов, поддержки CSS, адаптивной типографики и надёжного foreignObject.
Vite 8.1: Анонс Bundled Dev Mode ⚡️
Vite 8.1 добавляет экспериментальную сборку в dev-режиме, Chunk Import Map, нативные Wasm-импорты и улучшения Lightning CSS.
Релиз React Router 8. Косметические чистки, новый базовый стек и EOL для шестёрки.
React Router 8 обновляет требования до Node 22, Vite 7 и React 19, удаляет react-router-dom и завершает поддержку v6 и Remix v2.
Что знает JS, теперь знает и CSS
prop-for-that передаёт состояние браузера и элементов в CSS-переменные: курсор, цвета медиа, батарея, скролл и валидация форм.
💸 Подписка за $200, а токенов на $14 000: как разработчики разоряют ИИ-лаборатории
SemiAnalysis сравнили подписки OpenAI и Anthropic с API: интенсивные задачи по программированию выявили огромные убытки лабораторий.
Универсальная спецификация технического качества сайтов 🌐
Website Specification собирает требования к семантике, SEO, доступности, безопасности, производительности, i18n и готовности к AI.
VoidZero уходит под крыло Cloudflare. Что это значит для экосистемы? 🥺
Почему VoidZero переходит в Cloudflare и что сделка меняет для Vite, Oxc, Vite+, платформы Void и AI-агентов.
CSS-центрирование в 2026 году 🎯
Современные способы центрирования в CSS: Flexbox, Grid, text-box, якорное позиционирование и безопасное выравнивание.
Нативная стилизация зазоров (Gap Decorations) в CSS
Gap Decorations позволяет рисовать и анимировать разделительные линии в Grid и Flexbox без лишнего DOM и псевдоэлементов.
Мы недостаточно молимся: CSS-фреймворк на эмодзи ☠️
BEMoji превращает эмодзи и методологию БЭМ в CSS-фреймворк с дизайн-токенами, утилитарными классами и CLI.
Убийца Apple Silicon от Nvidia? Встречаем RTX Spark
Nvidia представила ARM-чипы RTX Spark для ноутбуков и мини-ПК: характеристики, автономность и перспективы Windows на ARM.
Deno обгоняет Bun в гонке за drop-in Node.js 🦕
Deno 2.8 улучшает совместимость с Node.js, работу с npm, криптографию и инструменты управления зависимостями.
Дискретный Fluid Sizing в CSS с функцией round() 📐
Как round() вместе с clamp() превращает плавные размеры в чёткие шаги и сохраняет строгую дизайн-систему.
Декларативный точечный апдейт страниц: прощай, тяжелый JS для стриминга? ⚡️
Declarative Partial Updates: нелинейный HTML-стриминг, маркеры, template и новые API для обновления страниц без лишнего JS.
Стартовал опрос State of CSS 2026 🎨
Опрос State of CSS помогает влиять на приоритеты браузеров и знакомит с новыми свойствами и селекторами.
Жидкое стекло в вебе: Canvas, WebGPU и никакого CSS-blur 💧
Экспериментальная liquid-dom создаёт эффект жидкого стекла поверх HTML с помощью Canvas и WebGPU/WebGL.
Встроенный в браузер HTML Sanitizer API: прощай, DOMPurify? 🛡
Нативная санитизация HTML: безопасные и unsafe-методы, сценарии использования, роль бэкенда и поддержка браузерами.
Улучшаем кэширование в браузере с помощью No-Vary-Search 🚀
Заголовок No-Vary-Search помогает избежать фрагментации кэша из-за URL-параметров: примеры, поддержка и нюансы отладки.
Браузеры «на костылях»: почему Safari и Firefox содержат тысячи строк кода для крупных сайтов 🩼
Как Safari и Firefox применяют адресные хаки для крупных сайтов и чем доминирование Chrome оборачивается для других движков.
Безопасные мобильные раскладки: укрощаем чёлки и вырезы 📱
Работа с viewport-fit, safe-area-inset и safe-area-max-inset для интерфейсов, не перекрываемых вырезами и системным UI.
Управление бесконечными CSS-анимациями на лету 🕹
Как animation-composition: add позволяет менять скорость и направление бесконечных анимаций без скачков и JavaScript.
Remix 3 Beta — курс на zero-deps 🧩
Remix 3 переходит к небольшим пакетам и server-driven state: больше контроля, но пока мало документации.
Streaming в React: что реально происходит
Как React стримит UI вне порядка дерева компонентов с помощью Suspense, маркеров и скриптов для гидрации.
Zed 1.0 — быстрый редактор на Rust 🚀
Первый стабильный релиз Zed: производительность, совместная работа, AI, расширения и нативный интерфейс.
Прелоад изображений: не всё так очевидно 🖼
Восемь способов управлять загрузкой изображений: fetchpriority, preload, responsive-картинки и распространённые костыли.
Нативный masonry почти здесь
Masonry Grid Lanes использует нативную раскладку при поддержке браузером и JS-фоллбэк в остальных случаях.
IPv8 — новый интернет?
Драфт IPv8 предлагает расширить IPv4 префиксом ASN: структура адресов, идея внедрения и другие изменения.
CSS Containment — недооценённый буст производительности 🚀
Как contain изолирует DOM и помогает сократить перерасчёты layout, paint и style, и какие есть ограничения.
Легкая библиотека для создания веб-компонентов ⚡️
Elena создаёт лёгкие веб-компоненты с progressive enhancement, ленивой гидратацией и поддержкой SSR.
Как MDN Web Docs переехал с React на Lit
Переход MDN на веб-компоненты: запуск среды за две секунды, меньше зависимостей и проще поддержка.
Великое расширение CSS 🚀
Новые возможности CSS заменяют JavaScript-библиотеки, уменьшают бандл и улучшают Core Web Vitals.
Cloudflare представили «убийцу» WordPress ⚡️
EmDash от Cloudflare: open-source CMS на TypeScript и Astro с serverless-архитектурой и изолированными плагинами.
Субботнее чтиво ☕️ Как одна инженерная команда протащила фичу в веб-стандарт
Как Squarespace провела lazy loading для video и audio от идеи до HTML-стандарта вместе с командами браузеров.
CSS or BS — проверь свои знания CSS
Игра CSS or BS предлагает отличить настоящие CSS-свойства от выдуманных и проверить знание современного CSS.
Встречайте Cursor 3 🤖
Cursor 3 выносит агентов в отдельное окно, добавляет параллельный запуск и улучшает agent-first работу.
🧠 В браузеры добавили AI.css
AI.css предлагает браузеру самому выбирать layout, типографику, адаптивность и удобство интерфейса.
🚨 Axios взломали
Вредоносные версии Axios, троян через postinstall и действия при компрометации окружения.
Pretext — layout текста без браузера 🤯
Pretext измеряет и раскладывает текст в JavaScript без DOM: от chat bubbles до Canvas и серверного рендера.
Называйте свои эффекты
Именованные функции в useEffect делают код понятнее, упрощают тестирование и помогают читать стектрейсы.
Тебе не нужен data-testid для тестирования
Почему частое использование data-testid сигнализирует о проблемах доступности и как тестировать интерфейс через роли и имена.
Bippy — React DevTools для взрослых 😈
Bippy даёт прямой доступ к React fiber tree и событиям рендера для создания собственных инструментов.
Серия видео про микрофронтенды
Серия видео АйТи Синяка о микрофронтендах, независимом хостинге и создании первого приложения.
Вы не знаете HTML-таблицы
Глубокий разбор HTML-таблиц: Table Object Model, семантика заголовков, структура и доступность.
Vite 8
Vite 8 переходит на Rolldown: единый Rust-тулчейн, встроенные DevTools и новые возможности платформы.
Оптимизация SVG: меньше вес, меньше DOM, быстрее рендер
Практическая оптимизация SVG: чистка через SVGO, упрощение path, повторное использование symbol и use и сокращение DOM.
CodePen 2.0
Бета нового CodePen: файлы и папки, Blocks, кастомные шаблоны, визуальная конфигурация, совместная работа, Omnibar и приватность.
Web Haptics — тактильная отдачи в вебе.
Библиотека Web Haptics для вибрации устройств: паттерны, интенсивность, пресеты и обёртки для React, Vue и Svelte, включая обход ограничений iOS.
🎲 Нативный рандом в CSS — зачем он вообще?
Экспериментальные random() и random-item() в CSS: диапазоны, случайный выбор, синхронизация и идеи для генеративных интерфейсов.
Практическое руководство по <img>: от основ до LCP
Практический гайд по изображениям: размеры, srcset и sizes, форматы, lazy loading, приоритеты загрузки и влияние на LCP и CLS.
🛡 Как сделать «пуленепробиваемый» React-компонент
Как проектировать устойчивые React-компоненты с учётом SSR, гидрации, порталов, композиции и будущих изменений рендеринга.
⚓️ Anchor Positioning — большой гайд от Доки
Подробный гайд Доки по CSS Anchor Positioning: термины, свойства, функции и интерактивные примеры с графами и анимациями.
👩💻 csskit — высокопроизводительный CSS-тулчейн на Rust
Альфа csskit объединяет парсинг, минификацию, форматирование, трансформации CSS и LSP в высокопроизводительном Rust-тулчейне.
👩💻 Результаты State of React 2025
Итоги State of React 2025: React 19, Compiler, серверные функции, лёгкие инструменты экосистемы и независимое управление React Foundation.
Пятничные ссылки: Modern CSS, Prism Tools и NPMX
Подборка полезных ресурсов: современные CSS-сниппеты, клиентские инструменты Prism Tools и быстрый браузер npm-реестра NPMX.
🔥 TanStack выпустили Hotkeys — type-safe управление горячими клавишами
TanStack Hotkeys: типобезопасные сочетания клавиш, последовательности, scoped hotkeys, DevTools и React-хуки в новой pre-alpha библиотеке.
TypeScript 6 Beta — переходный релиз на пути к Go-версии
TypeScript 6 готовит экосистему к Go-компилятору TS 7: новые возможности языка, улучшенный вывод типов и удаление устаревших настроек.
ESLint 10 — неинтересный мажорный апдейт
ESLint 10 убирает legacy-конфиги и устаревшие API: полезная расчистка архитектуры без заметного прироста скорости.
ESLint или Rust-инструменты: результаты опроса
Снимок результатов Telegram-опроса об ESLint, Biome и Oxlint: четыре варианта ответа и 15 проголосовавших.
Grid Lanes — эпопея с masonry-раскладкой подходит к завершению
WebKit переосмыслил masonry как Grid Lanes: стабильный синтаксис, реализация в Safari Technology Preview и стратегии фолбеков.
Container scroll-state queries — определяем состояние скролла на чистом CSS
CSS container scroll-state queries позволяют управлять стрелками, липкими шапками и подсказками без JavaScript, но поддержка пока ограничена
Результаты State of JavaScript TypeScript 2025
Итоги State of JS 2025: доминирование TypeScript, рост Vite и Vitest и перспективы инструментов VoidZero и TanStack.
Rolldown дошёл до Release Candidate
Rolldown на Rust достиг RC и стал основным бандлером Vite 8 Beta: совместимость с Rollup, код-сплиттинг и трансформы Oxc
🔎 Масштабирование текста в мобильных браузерах
Chrome Canary экспериментирует с системным масштабом текста на мобильных ОС через meta-тег text-scale под флагом
Yarn 6 переезжает на Rust. Первый взгляд на следующий мейджор.
В превью Yarn 6 переосмыслены установка и управление версиями: Rust, ускорение install pipeline, Yarn Switch и Lazy Install
Лучшие практики React
Vercel опубликовал правила и паттерны для React-приложений, ориентированные на AI-агентов и полезные разработчикам
Date в JavaScript официально устарел — по крайней мере концептуально.
Статья о проблемах Date, мутабельности и таймзонах объясняет, как Temporal решает их на уровне архитектуры
jQuery 4 всё-таки вышел
jQuery 4 вышел спустя 20 лет после первого релиза: отказ от IE ниже 11, Trusted Types, CSP, ES-модули и исправления focus order
Полный гайд по новому хуку useEffectEvent
Peter Kellner разбирает useEffectEvent, проблемы useEffect, stale-замыкания и зависимости на практических кейсах и собственной реализации
Как никому неизвестный HTML-тег может помочь с дебагом
Тег plaintext прекращает разбор HTML и может помочь найти сломанную разметку, неожиданные инъекции и странный серверный вывод
Восходящие звёзды JavaScript’а — 2025
Десятый выпуск JavaScript Rising Stars оценивает экосистему по приросту GitHub-звёзд на фоне роста AI и атак на цепочки поставок
Production-ready бойлерплейт для веб-компонентов
Стартовый шаблон Аарона Густафсона для веб-компонентов включает лучшие практики Google, Vitest, CI и безопасную публикацию в npm
Индивидуальный троттлинг запросов в Chrome DevTools
Chrome DevTools позволяет замедлять отдельные сетевые запросы для проверки loading, race conditions, retry и timeout-логики
State of React 2025
Стартовал ежегодный опрос React-сообщества: призываю участвовать и дать разработчикам живой фидбек об экосистеме
CSS в Chrome — итоги 2025 года.
Команда Chrome DevRel собрала 17 новых CSS-фич 2025 года, включая кастомный select, scroll-state queries и corner-shape
TanStack AI — открытый тулкит для AI-моделей
TanStack представил бесплатный open-source SDK для AI-чатов и фич без привязки к серверу, фреймворку или провайдеру
Релиз альфа версии Oxfmt
Вышла альфа версия форматера Oxfmt от Oxc: быстрая альтернатива Prettier в паре с Oxlint
React Server Components в React Router
React Router добавляет экспериментальную поддержку React Server Components