28143
🚀 Статьи, новости, туториалы по frontend разработке. http://jem-space.ru Admin: @jem_jem Пишу в @five_a_m Читать на парковке: https://max.ru/front_end_dev Реклама: http://bit.ly/2NxmVDu РКН: https://clck.ru/3GLw7G
DOCX 9.8: генерация Word .docx файлов из JavaScript
Библиотека для создания .docx документов прямо из JavaScript. В версии 9.8 добавили поддержку диаграмм, фигур, водяных знаков и расширили работу с математическими формулами. Это полезно, когда нужно собирать Word-файлы на лету без ручной верстки в редакторе.
https://github.com/dolanmiu/docx/releases/tag/9.8.0
Next.js 16.4: Cache Components стали рекомендуемым способом разработки
Next.js 16.4 закрепляет Cache Components как основную модель для App Router: она помогает быстрее загружать персонализированные страницы, делать клиентские переходы почти мгновенными и управлять кешированием явно, на уровне компонентов. Для новых проектов это уже включено по умолчанию, а для старых добавили инструменты миграции и проверки статичности маршрутов, чтобы не тащить лишний динамический рендер туда, где он не нужен.
https://habr.com/ru/articles/1091748/
Шпаргалка по интерфейсам: мелочи, которые делают UI заметно лучше
Подборка практических правил для более понятных, удобных и аккуратных интерфейсов. Она помогает выровнять отступы, анимации, типографику, цвета и доступность так, чтобы UI выглядел цельно и не раздражал пользователя.
Для фронтендера это готовый набор решений, которые можно сразу переносить в компоненты и дизайн-систему.
https://interfaces.dev/cheat-sheet
Как ускорили веб-приложение Claude
Разбор того, как в веб-приложении Claude сократили время до первого ввода у 75-го перцентиля с 3,1 до 0,55 секунды. Для этого нашли несколько скрытых тормозов: мелкие сдвиги верстки, которые не попадали в CLS, дорогой селектор :root:has(), добавлявший 24 мс на каждое изменение DOM, и проблему с предрендерингом Chrome, который строил страницу с неверной высотой.
Полезно как пример того, где реально прячутся задержки в интерфейсе и как их искать, если базовые метрики уже выглядят нормально.
https://claude.dev/blog/how-we-made-claude-ai-faster/
Chromium прямо в терминале
Carbonyl запускает Chromium в терминале и открывает обычные сайты без окна браузера, даже по SSH.
Для старта есть Docker docker run --rm -ti fathyb/carbonyl https://youtube.com
или установка через npm install --global carbonyl
после чего запускается carbonyl https://github.com.
https://github.com/fathyb/carbonyl
Vite+ 1.0: единая CLI для runtime, package manager и frontend toolchain
Vite+ 1.0 объединяет Node.js runtime, package manager и frontend toolchain в одной CLI. Это сокращает количество разрозненных конфигов, команд и обновлений, а в проектах с несколькими репозиториями и монорепами упрощает поддержку, миграции и CI.
https://voidzero.dev/posts/announcing-vite-plus-1-0
Size Limit: инструмент для контроля бюджета производительности JavaScript
Size Limit позволяет задать лимит на размер бандла или время загрузки кода и автоматически завалить CI или пометить PR, если изменения выходят за бюджет. Подходит для разовых проверок, показывает, куда уходят байты, и не привязан ни к фреймворку, ни к конкретному сборщику или CI.
https://github.com/ai/size-limit
5 офферов получили наши ребята на прошлой неделе
Оффер на 4,2k долларов
Оффер на 5k евро
Оффер 260k рублей
Оффер на 210k рублей
Оффер на 220k рублей
И еще 19 за сентябрь... а за лето более 50... и у тебя получится!
👋 Меня зовут Тихон, я действующий Frontend-разработчик и ментор. За руку довожу до оффера в Big Tech и не бросаю на испытательном сроке. Вокруг меня собралось целое комьюнити из почти 300 фронтендеров.
Mermaid 12.0: новый движок раскладки и UML use case диаграммы
Mermaid 12.0 по умолчанию перешёл на движок ELK для flowchart, class, state и похожих диаграмм, поэтому уже существующие схемы могут выглядеть иначе, если не указать layout: dagre. Ещё в версии появились UML use case диаграммы, что расширяет набор схем для документации и проектирования интерфейсов и систем.
https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.0.0
🏁Тестовый собес на Frontend с разработчиком из R-Vision, ex-Сбер
15 октября в 19:00 (мск) приходи посмотреть открытое онлайн-собеседование на Frontend-разработчика
Интервьюер: Даниил Дмитриев – Frontend-разработчик в R-Vision, ex-Сбер. Пишет на React и TypeScript, совмещает роль тимлида, менторит разработчиков и проводит код-ревью
На эфире нет сценария ↓
Кандидат – случайный разработчик, который не знает вопросов заранее
На обычном собесе ты не знаешь, что думает интервьюер, пока не придёт фидбек. На этом эфире Даниил проговорит всё вслух:
— какие вопросы и задачи даёт кандидатам на Frontend-собесах
— что в каждом ответе засчитал бы, а что нет — и почему
12 встроенных возможностей Node.js, которые уже заменяют популярные пакеты
Node.js уже умеет заменять axios, nodemon, dotenv, jest и другие привычные зависимости встроенными API. Это сокращает число пакетов в проекте, убирает лишние установки и делает стек проще, но перед переходом стоит проверить стабильность и то, чего встроенные возможности пока не умеют.
https://flaviocopes.com/node-builtins/
Виртуальный джойстик для HTML5-игр за пару минут
nippleJS позволяет быстро добавить виртуальный джойстик в HTML5-игру без зависимостей и использовать его как внутри canvas, так и вне его. Для Phaser это даёт готовый touch-контроллер: игрок двигается по силе и углу жеста, а при отпускании джойстика останавливается.
https://emanueleferonato.com/2023/07/24/add-a-virtual-joystick-to-your-html5-games-in-a-matter-of-minutes-with-nipplejs-example-powered-by-phaser-and-arcade-physics/
HTML-артефакты из эпохи браузерных войн
Подборка старых HTML хаков, которые когда-то решали реальные проблемы с Internet Explorer, Netscape, Baidu, Skype и ранним Google crawler. Они показывают, как разработчики подстраивали разметку под конкретные браузеры, плагины, режимы рендера, фреймы, транскодинг и слабую поддержку JavaScript.
https://vale.rocks/posts/html-relics
Как собрать бесконечную стеклянную сетку в браузере
Показываем, как на WebGPU и Three.js собрать бесконечную сетку стеклянных видеокарточек без постобработки и render targets: стекло фейкуется шейдером на плоскости, видео преломляется прямо в материале, а сама сетка визуально уходит в сферу.
Демо
https://tympanus.net/codrops/2026/09/08/building-an-infinite-liquid-glass-grid-with-three-js-webgpu-and-tsl/
Roux: стартовый набор для нативной CSS-архитектуры
Roux даёт готовую основу для HTML и CSS: набор файлов, переменные, базовые стили и компоненты. Такой стартовый шаблон экономит время на настройке проекта и помогает сразу работать в предсказуемой структуре без лишней ручной сборки.
https://github.com/thoughtbot/roux
WebMCP как слой для агентного веба
Суть
WebMCP — это не способ дать AI-агентам сканировать сайт как человек через DOM, скриншоты и клики, а вызывать прямые JS-инструменты, которые сам сайт явно публикует. Проблема, которую он решает, проста: браузерная автоматизация для агентов медленная, хрупкая и дорогая, а web-интерфейс при этом должен оставаться управляемым и для пользователя, и для разработчика.
Как это работает
Сайт регистрирует tools с явной input-схемой, скоро — и с output-схемой, плюс с описанием, что именно делает инструмент и когда его вызывать. Агент получает не абстрактную страницу, а набор операций вроде «найди подходящий товар», «проверь детали заказа», «заполни шаг формы». Важный момент: это не замена UI, а более быстрый путь к тем же действиям, когда задача уже понятна.
Почему это лучше автоматизации браузера
Идея в том, что агент не должен играть в человека, тыкаясь по интерфейсу вслепую. По замерам nekuda.ai, WebMCP оказался в 2.5-7.5x быстрее и до 47x дешевле, чем другие direct interaction подходы. У Shopify Checkout эксперимент дал 2.7x ускорение, 58% экономии и 60/60 успешных попыток против 56/60 у browser automation. То есть выигрыш не только в скорости, но и в надежности.
Почему это важно для веба
Здесь ключевая ставка на co-browsing: агент работает рядом с браузерной сессией, а не вместо нее. Это единая модель, где пользователь сохраняет контроль, может вмешаться в любой момент, а сайт не превращается в черный ящик для отдельного агента. Для коммерции это особенно заметно: агент может помочь подобрать товар по сложным критериям, собрать проект или провести пользователя через многошаговую задачу без того, чтобы он наблюдал все промежуточные шаги.
Ограничения и риски
У подхода много открытых вопросов: кто вообще может регистрировать tools, какие агенты поддерживать, как тестировать поведение на реальных агентах, как защищаться от malicious tools. Для контроля доступа обсуждается Permissions Policy, чтобы сайт сам решал, каким iframe разрешать регистрацию tools. Отдельная боль — сигнал для сервера, что перед ним человек или trusted agent: без него сайты могут ошибочно принять агентный трафик за бота и заблокировать его.
Что не решает HTML semantics
Есть идея сделать все декларативно через формы и семантику, но этого недостаточно для сложных сценариев. Декларативный подход хорош для одношаговых действий, но не покрывает многошаговые задачи, где инструмент возвращает промежуточный контекст для следующего шага агента. Если пытаться всё свести к HTML, часто получится хуже UX: агенту придется вести пользователя через лишние промежуточные экраны и формы, хотя ему нужен только итог.
WebMCP стоит рассматривать там, где сайт хочет быть удобным для AI-агентов без потери контроля над UX: e-commerce, подбор товаров, FAQ, сложные сценарии с несколькими шагами. Но внедрять его нужно аккуратно: продумать permissions, security, сигналы доверия, тестирование на реальных агентах и не полагаться только на декларативные формы. Идея сильная именно как слой над вебом, а не как замена обычному интерфейсу.
https://blog.yoav.ws/posts/why_webmcp_matters/
Самый дорогой способ проверить идею — полгода её разрабатывать
Сначала проверьте спрос. Так сделали эти ребята:
— Юра выбрал нишу, которую все считают скучной, но там уже платят. Начал с $100 в месяц, через год вышел примерно на $10K.
— Денис один собрал AI-игру в Telegram. За первые полтора месяца ~$1 500.
— Аня не пишет код, но запустила AI-бота для английского. Первые ~$200 пришли в первый же месяц.
Масштабы разные, схема одна:
1. Найти, за что люди уже платят.
2. Быстро собрать MVP.
3. Проверить спрос на живых пользователях.
4. Только потом докручивать продукт.
Это не рецепт «как точно сделать $10K». Гарантий вообще нет.
Но так вы узнаете ответ за недели, а не за год.
В @its_capitan разбирают такие запуски по шагам: что сделали, сколько получили, где облажались.
Подписывайтесь, чтобы запускать продукты, которые нужны пользователям, а не пилить в стол.
Реклама: ИП Зуев Игорь Владимирович, ИНН: 360408359441, Erid: 2Vtzqw8XNmT
React Forms и React.memo: что на самом деле перерисовывается
Формы в React помогают понять, где живут данные и почему компонент рендерится снова. Контролируемые поля удобны, когда значение влияет на интерфейс прямо во время ввода, а uncontrolled-подход и FormData подходят, когда нужен только итоговый результат. Это напрямую связано с оптимизацией через React.memo: чтобы не ререндерить лишнее, важно понимать, какие изменения действительно затрагивают компонент.
https://reactdevelopment.substack.com/p/react-forms-and-reactmemo-understanding
Плавная типографика в CSS: что выбрать вместо брейкпоинтов
Плавную типографику в CSS удобнее собирать через clamp() и viewport units: размер шрифта можно задать одной формулой без переключения на фиксированные значения по брейкпоинтам. Для доступности лучше не полагаться только на vw, а добавлять фиксированную величину, чтобы масштабирование страницы не ломало ожидаемое поведение.
Использовать container queries для размера текста стоит осторожно: если шрифт зависит от ширины контейнера, одинаковые заголовки в разных блоках начинают выглядеть как разные уровни иерархии.
https://blog.damato.design/posts/fluid-typography/
Проект от подписчика для тех, кто пилит свой сервис
Вот бы! — площадка, на которой можно бесплатно прорекламироваться и получить обратную связь от потенциальных пользователей.
Люди могут не только оставить комментарий или лайк, но и отметить, готовы ли пользоваться, платить, присоединиться или инвестировать в проект.
А если своей идеи пока нет, можно посмотреть, чего не хватает другим, и найти что-то интересное для себя.
https://votby.ru/
Next.js 16.4: lazy compilation, меньше Turbopack и новые возможности React 19.3
В Next.js 16.4 добавили lazy compilation, уменьшили размер сборки Turbopack, подтянули возможности React 19.3 и доработали Cache Components и инструменты для разработки. Это ускоряет старт и сборку проекта, а также делает работу с кэшем и отладкой удобнее в повседневной разработке.
https://nextjs.org/blog/next-16-4
Как ускорить страницу с демо-видео: сжатие, главы и отложенный автоплей
Демо-видео на первом экране можно сделать заметно легче, если отдельно оптимизировать сам ролик, постер и момент запуска. Такой подход позволяет показать несколько сценариев продукта сразу, не заставляя пользователя смотреть длинное видео целиком и не раздувая стартовую загрузку страницы.
https://habr.com/ru/articles/1090594/
Как GitHub ускорил сайт, переведя стили с CSS-in-JS на CSS Modules
GitHub перевёл Primer и затем большую часть интерфейса с CSS-in-JS на CSS Modules, чтобы убрать клиентские и серверные накладные расходы на стили и ускорить рендеринг страниц.
https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/
Как называть UI-компоненты, токены и фичи без путаницы
Подборка практических подходов и инструментов для нейминга в интерфейсах: от HTML-классов и функций до design tokens, компонентов, цветов и новых фич. Это помогает сократить путаницу в команде, сделать систему именования более устойчивой и быстрее находить нужные сущности в коде и дизайн-системе.
https://smashingmagazine.com/2026/10/how-name-things/
Как определить пересечение элементов только на CSS
CSS теперь позволяет отследить момент, когда декоративный элемент начинает пересекаться с контентом, и скрыть его без JavaScript. Для этого используются anchor positioning, scroll-driven animations и style container queries, а срабатывание завязано не на скролл, а на появление overflow в измеряющем элементе.
https://ishadeed.com/article/css-detect-overlap/
CSS в почте как канал атак
Разбор показывает, как CSS и HTML в webmail могут использоваться для обхода sanitization, подмены интерфейса, утечки токенов и даже захвата аккаунтов. Для фронтенда это важно как напоминание, что безопасный рендеринг untrusted content ломается на расхождениях между тем, что считает безопасным sanitizer, и тем, как браузер реально интерпретирует разметку.
Нельзя полагаться только на allowlist CSS и HTML, если в интерфейсе есть кликабельные элементы, псевдоэлементы и прокси для изображений.
https://portswigger.net/research/css-the-bomb-inside-your-inbox
vgpu для WebGPU в браузере и Node.js
Либa vgpu даёт один API для рендера WebGPU-шейдеров в браузере, в headless Node.js и в serverless-окружениях. Она позволяет переиспользовать один и тот же WGSL-код, а модули WGSL импортируются и экспортируются по схеме, похожей на TypeScript. На практике это упрощает сборку графики, генерацию PNG или MP4 без браузера и перенос шейдерной логики между клиентом и сервером.
https://vgpu.sh/
Chrome снова сохраняет данные Google-сайтов
В Chrome снова обнаружился баг, из-за которого google.com сохраняет site data даже при включённой очистке данных при закрытии всех окон. Настройки приватности в браузере не всегда работают так, как ожидается, поэтому поведение кэша, cookies и storage стоит проверять отдельно.
https://lapcatsoftware.com/articles/2026/9/1.html
Почему агентный кодинг возвращает нас к примитивам
Агентный кодинг делает дешевле собственную реализацию, поэтому для многих UI-задач выгоднее брать примитивы вроде D3, SVG и design tokens, чем тащить тяжёлый charting framework с его ограничениями и обходными путями.
https://www.robinwieruch.de/agentic-coding-bet-on-primitives/
Drawably: рукописные контролы для интерфейсов
Набор UI-контролов в стиле ручного скетча, который можно подключить в React или через обычный JS. Он даёт кнопки, checkbox, input, card, radio, toggle, divider и arrow с нарочито неровной отрисовкой, чтобы интерфейс выглядел как набросок, а не как стандартная библиотека компонентов.
https://www.drawably.dev/