<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Пульс веб-платформы</title><description>Ежедневный дайджест новостей веб-разработки</description><link>https://juwain.github.io/</link><item><title>Пульс веб-платформы 01.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-01/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-01/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.chromium.org/2026/03/jetstream-3-a-modern-benchmark.html&quot;&gt;JetStream 3: новый бенчмарк для веб-приложений&lt;/a&gt; — JetStream 3 — совместный бенчмарк Google, Apple, Mozilla. Wasm теперь 15-20% тестов (SIMD, WasmGC, exceptions). Новые workload&apos;ы: Transformers.js, SQLite3, Dart/Kotlin UI, .NET runtime.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan&quot;&gt;Supply chain-атака на Axios&lt;/a&gt; — Axios 1.14.1 и 0.30.4 — malicious dependency через postinstall. 100M+ загрузок/неделю. Зафиксируйте версии, проверьте npm install за сегодня.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/companies/bar/articles/1017574/&quot;&gt;Утекли исходники Claude Code&lt;/a&gt; — Исходники Claude Code утекли через sourcemap в npm — 785 KB main.tsx, 40+ инструментов, система «снов», Buddy-компаньон, KAIROS (всегда включённый Claude), ULTRAPLAN (30-минутное планирование), режим прикрытия для Anthropic-сотрудников.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/baseline-navigation-api&quot;&gt;Navigation API — кросс-браузерный&lt;/a&gt; — Navigation API — Baseline, кросс-браузерный. event.intercept для навигации, адресная строка как источник состояния. Замена History API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/reduce-friction-ai/encoding-team-standards.html&quot;&gt;Encoding Team Standards&lt;/a&gt; — Стандарты команды как versioned AI-instructions — versioned, reviewed, shared. Качество кода больше не зависит от того, кто промптит.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.mozilla.org/en/firefox/hardening-firefox-anthropic-red-team/&quot;&gt;Claude нашёл 14 уязвимостей в Firefox&lt;/a&gt; — Anthropic: Claude проанализировал исходники Firefox и нашёл 14 критических уязвимостей. LLM начинают реально применяться в security-аудитах.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mcpland/webpage-mcp&quot;&gt;Webpage MCP — сайт как MCP-сервер&lt;/a&gt; — Webpage MCP — сайт как MCP-сервер для управления агентами: навигация, скриншоты, клики, чтение контента. Native Messaging, кросс-вкладки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/facebook/react/pull/36173&quot;&gt;Port React Compiler to Rust&lt;/a&gt; — React Compiler портируют на Rust — Babel plugin, OXC/SWC crates. 1717/1718 тестов проходят. Ну и куда без Claude...&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_everyday/1285&quot;&gt;Vue 3.5 useId()&lt;/a&gt; — Vue 3.5 useId() — детерминированный уникальный ID для компонентов. Решает hydration mismatch в Nuxt, без Math.random().&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tip.com/dino-game/&quot;&gt;CSS-only Chrome Dino Game&lt;/a&gt; — Chrome Dino на чистом CSS — jump/crouch клавишами. Scroll-driven animations, @property, container queries. Chrome-only.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blogs.windows.com/msedgedev/2026/03/05/making-keyboard-navigation-effortless/&quot;&gt;focusgroup — нативная клавиатурная навигация&lt;/a&gt; — HTML-атрибут focusgroup для клавиатурной навигации — стрелки, skip disabled, restore focus без JS. Edge/Chromium.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tkdodo.eu/blog/test-ids-are-an-a11y-smell&quot;&gt;Test IDs are an a11y smell&lt;/a&gt; — data-testid — a11y smell. Тесты должны искать элементы как пользователи и скринридеры, а не по тестовым ID.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/form-associated-custom-elements-in-practice/&quot;&gt;Form-Associated Custom Elements&lt;/a&gt; — ElementInternals API для form-associated custom elements — две стратегии валидации, проблемы Shadow DOM изоляции.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/josdejong/jsonrepair&quot;&gt;jsonrepair для кривого JSON&lt;/a&gt; — чинит комментарии, кривые кавычки, незакрытые поля, True вместо true. Иногда модели не досылают стрим.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 02.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-02/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-02/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://rwsdk.com/blog/redwood-v1-getting-out-of-the-weeds&quot;&gt;RedwoodSDK 1.0&lt;/a&gt; — RedwoodSDK 1.0 — минимальный React SDK на Cloudflare: без code generation, RSC из коробки, useSyncedState для realtime через Durable Objects. Workers, D1, R2, Queues — first-class.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nextjs.org/blog/nextjs-across-platforms&quot;&gt;Next.js Adapters API&lt;/a&gt; — Next.js 16.2: стабильный Adapter API для деплоя на любую платформу — OpenNext, Netlify, Cloudflare, AWS Amplify. Публичный test suite для валидации адаптеров.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.babylonjs.com/&quot;&gt;Babylon.js 9.0&lt;/a&gt; — Babylon.js 9.0 от Microsoft: clustered lighting, node-based particle editor, volumetric lighting, Gaussian Splatting. Год новых фич и оптимизаций.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/docs/transformers.js&quot;&gt;Transformers.js v4&lt;/a&gt; — Transformers.js v4 — WebGPU runtime вместо WASM. Vision, audio, NLP модели прямо в браузере. npm-пакет, live демо.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dheer.co/tickets-are-prompts/&quot;&gt;Your ticket is a prompt&lt;/a&gt; — Тикеты теперь промпты для агентов. Фрагментированные тикеты = фрагментированный код. Давайте агентам максимальный контекст — пусть сами делят на подзадачи.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.frontendjoy.com/p/junior-devs-in-the-age-of-ai&quot;&gt;Junior Devs in the Age of AI&lt;/a&gt; — Быть junior&apos;ом стало проще (AI как ментор) и сложнее (harder to hire). Soft skills — новые hard skills. Разница junior/mid сокращается.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://banray.eu/en/index.html&quot;&gt;Ban Ray: Your face is not inventory&lt;/a&gt; — Ban Ray — кампании против Meta Ray-Ban: 7M очков с камерами, видео отправляют в Кению для ревью, Name Tag для facial recognition. GDPR-нарушения, class action.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=8XGcc-FRPuo&quot;&gt;TanStack Start RSC preview&lt;/a&gt; — TanStack Start раскрывает RSC на React Paris — primitives вместо конвенций, Composite Components вместо &apos;use client&apos;, нет Server Actions. Больше контроля, меньше магии.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/facebook/react/pull/35816&quot;&gt;React Trusted Types integration&lt;/a&gt; — React интегрирует Trusted Types API — теперь dangerouslySetInnerHTML требует sanitized input. XSS-защита на уровне фреймворка.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://laravel.com/blog/inertia-v3-whats-changed-since-the-first-beta&quot;&gt;Inertia 3.0&lt;/a&gt; — Inertia 3.0 — Vite 8 plugin, SSR в dev-режиме, optimistic updates. Интеграция React/Vue/Svelte с серверными роутерами.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dbushell.com/notes/2026-04-01T13:51Z/&quot;&gt;CSS cascade layers для WordPress-плагинов&lt;/a&gt; — CSS cascade layers для борьбы со specificity-войнами WordPress-плагинов: обернуть стили плагина в layer(base), свои стили писать в более высоких слоях.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/companies/ispsystem/articles/1013824/&quot;&gt;Digital accessibility without visual interfaces&lt;/a&gt; — Тестирование веб-интерфейсов для скринридеров: навигация по ссылкам, структура контента, типичные проблемы в реальном использовании.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://webdxcg.github.io/web-platform-feature-explorer/&quot;&gt;Web Platform Features Explorer&lt;/a&gt; — WebDX Features Explorer — фильтрация по статусу (new/wide), браузерам. Ежемесячные release notes, RSS. Данные из W3C WebDX Community Group.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/chenglou/pretext&quot;&gt;Pretext: multiline text measurement&lt;/a&gt; — Pretext — измерение текста без DOM на чистом TypeScript. Masonry, dynamic layouts, accordion — canvas.measureText как основа.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://report.zeroheight.com/&quot;&gt;Design Systems Report 2026&lt;/a&gt; — Design Systems Report 2026: buy-in упал с 42% до 32%, adoption — главная проблема 5-й год подряд. AI чаще всего ждут для генерации документации.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 05.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-05/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-05/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://astro.build/blog/astro-6/&quot;&gt;Astro 6&lt;/a&gt; — Astro 6 — production runtime в dev-режиме, встроенный Fonts API, CSP, Live Content Collections. Эксперимент: Rust-компилятор, queued rendering, route caching.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.frontendjoy.com/p/your-ai-writes-code-10x-faster-it-breaks-it-10x-faster-too&quot;&gt;AI пишет код 10x быстрее. Ломает 10x быстрее&lt;/a&gt; — AI-код ломает 10x быстрее. TDD — единственная страховка: тест красный, AI имплементирует, тест зелёный. Skills для Claude: mattpocock/tdd, obra/superpowers.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sequoiacap.com/article/from-hierarchy-to-intelligence/&quot;&gt;From Hierarchy to Intelligence&lt;/a&gt; — Джек Дорси: иерархия = белковый MapReduce. На смену — три роли: IC (строитель), DRI (ответственный), играющий тренер. AI заменяет цепочку менеджеров.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.stefanjudis.com/today-i-learned/the-scope-of-type-guards-and-assertion-functions/&quot;&gt;Type guards vs assertion functions&lt;/a&gt; — TypeScript: type guard сужает тип внутри if-блока, assertion function (asserts value is T) — на весь scope после вызова. Полезно при парсинге JSON.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://piccalil.li/blog/building-dynamic-toggletips-using-anchored-container-queries/&quot;&gt;Dynamic toggletips с anchored container queries&lt;/a&gt; — Anchored container queries в Chrome 143+ для toggletips — автоматическое переключение позиции и caret в зависимости от доступного места. Прогрессивное улучшение через popovers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://daverupert.com/2026/04/make-something/&quot;&gt;Before I go: People like it when other people make things&lt;/a&gt; — Dave Rupert: людям нравится смотреть, как другие что-то создают. YouTube, TikTok, Instagram — на этом принципе. Термин slop = мысленный вывод бездумного content extruder.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 04.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-04/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-04/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/articles/1018828/&quot;&gt;GlassWorm: код в Unicode-символах&lt;/a&gt; — GlassWorm — новая supply chain атака: исполняемый код прячется в невидимых Unicode-символах внутри npm-пакетов. Визуально код выглядит чистым.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nerdy.dev/migration-to-fresh-2-and-denos-latest-console-complete&quot;&gt;Fresh 2 + Deno Console&lt;/a&gt; — Deno мигрировал: dash.deno.com → console.deno.com, Fresh → Fresh 2. Крупное обновление инфраструктуры.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/devspotting/91&quot;&gt;Когда подорожают токены?&lt;/a&gt; — Цена токенов упала в 1000x с 2023. Железо дешевеет, открытые модели на ноутбуках. Конкуренция структурная — никто не может поднять цены без потери рынка.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/chenglou/pretext&quot;&gt;Pretext: 500x быстрее текстовых измерений&lt;/a&gt; — Pretext от Cheng Lou (бывший React Core): prepare() измеряет через Canvas API без reflow, layout() считает чистой арифметикой. 1000 элементов: 94ms → 0.05ms, 500x быстрее.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tanstack.com/blog/tanstack-router-signal-graph&quot;&gt;TanStack Router: Signal Graph&lt;/a&gt; — TanStack Router: Signal Graph заменяет router.state на мелкие stores. Более быстрый client-side navigation, плавные обновления.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/&quot;&gt;TypeScript 6.0 — официальный анонс&lt;/a&gt; — TypeScript 6.0 — последний мажорный релиз на JS-стеке перед переписыванием компилятора на Go. strict=true по умолчанию, types=[], deprecated настройки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/alexnozer_dev/356&quot;&gt;@scope: Donut Scope, Proximity, DOM Blasters&lt;/a&gt; — Продвинутые паттерны @scope: Donut Scope для «дыр» в стилях, Proximity для каскадной близости, DOM Blasters для inline &amp;lt;style&amp;gt; без селектора. Baseline с декабря 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.gitbutler.com/the-great-css-expansion&quot;&gt;Великое расширение CSS&lt;/a&gt; — CSS заменяет JS-библиотеки: anchor positioning вместо Floating UI, Popover вместо Radix, scroll-driven вместо GSAP, view transitions вместо Motion, &amp;lt;select&amp;gt; вместо React Select. До 322 KB JS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blogs.windows.com/msedgedev/2026/03/17/monitor-and-improve-your-web-apps-load-performance/&quot;&gt;Edge 146: Network Efficiency Limits&lt;/a&gt; — Edge 146: Document-Policy для мониторинга загрузки — флагает большие изображения, несжатый текст, data URL. Отчёты через Reporting API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gravity-ui.com/en/blog/datalens-highcharts&quot;&gt;Gravity UI Charts&lt;/a&gt; — Gravity UI Charts — гибкая React-библиотека графиков на D3. Настройка через JS-объекты, есть playground.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/scenetest/scenetest-js&quot;&gt;Scenetest: сценарное E2E тестирование&lt;/a&gt; — Scenetest — E2E тесты с несколькими акторами и inline-ассертами. Vite plugin, TypeScript или markdown DSL. Ближе к реальным пользовательским путям.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.smashingmagazine.com/2026/04/practical-guide-design-principles/&quot;&gt;A practical guide to Design Principles&lt;/a&gt; — Vitaly Friedman: практический гайд по design principles — как выбирать, 8-шаговый воркшоп, примеры от Dieter Rams до Linear и Anthropic.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nngroup.com/articles/3-cs-microcopy/&quot;&gt;The 3 C&apos;s of informational microcopy&lt;/a&gt; — Nielsen Norman Group: 3 C&apos;s микрокопи — clarity (понятность), concision (краткость), character (индивидуальность). Примеры от Mastercard, Owala, WHO.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 06.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-06/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-06/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://simonwillison.net/2026/Apr/3/supply-chain-social-engineering/&quot;&gt;The Axios supply chain attack used individually targeted social engineering&lt;/a&gt; — Simon Willison: атака на Axios использовала individual social engineering — мейнтейнеров атаковали персонально, а не массово. Разбор механики и уроки.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bcd-watch.igalia.com/weekly/2026-04-06.html&quot;&gt;BCD Watch: +23 API за неделю&lt;/a&gt; — Firefox: CSSFontFaceDescriptors, customElementRegistry. Safari: Origin API, ToggleEvent.source. Chrome: PerformanceResourceTiming.contentType, video loading.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/Haseeb-Qureshi/d0dc36844c19d26303ce09b42e7188c1&quot;&gt;Inside the Claude Code source&lt;/a&gt; — Haseeb Qureshi разобрал утёкший исходник Claude Code: 1900 файлов TypeScript, архитектура агента, система «снов», планирование, Buddy-компаньон. Подробный разбор internals.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://storybook.js.org/ai&quot;&gt;Storybook MCP&lt;/a&gt; — Storybook MCP: AI генерирует фичи из существующих design system компонентов, прогоняет через тесты, ловит accessibility-проблемы. Доминик Нгуен показывает демо.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://standupforme.app/blog/some-uncomfortable-truths-about-ai-coding-agents/&quot;&gt;Some uncomfortable truths about AI coding agents&lt;/a&gt; — Неудобные правды об AI-агентах: они не заменяют разработчиков, контекстное окно ограничено, тестирование и дебаггинг — всё ещё человеческая работа.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nicholascharriere.com/blog/the-great-convergence/&quot;&gt;The Great Convergence&lt;/a&gt; — The Great Convergence: разные компании строят один и тот же продукт. Cursor, Windsurf, Claude Code, Copilot — схлопываются к одной форме.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.dev-notes.ru/articles/javascript/proxying-fetch-in-server-side-javascript/&quot;&gt;Проксирование fetch() в серверном JS&lt;/a&gt; — Fetch-проксирование в серверном JS: Bun/Deno — встроенное, Node.js — env vars или undici, Cloudflare Workers — нет нативной поддержки.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/fe_notes/168&quot;&gt;Iterator.concat в Chrome 146&lt;/a&gt; — Iterator.concat в Chrome 146 — объединение нескольких итераторов в один. Ленивые цепочки через генераторы вместо промежуточных массивов.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://una.im/contrast-color&quot;&gt;contrast-color() — автоматический контрастный текст&lt;/a&gt; — contrast-color() в CSS — передаёшь цвет, получаешь чёрный или белый для контрастного текста. Chrome 147. Конец ручному подбору.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/responsive-hexagon-grid-using-modern-css/&quot;&gt;Адаптивная гексагональная сетка на CSS&lt;/a&gt; — Гексагональная сетка без медиа-запросов и JS — flexbox, CSS-переменные, corner-shape. Размер и gap управляются одной парой переменных.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.semicolonandsons.com/articles/scaling-a-monolith-to-1m-loc-113-pragmatic-lessons-from-tech-lead-to-cto&quot;&gt;Scaling a Monolith to 1M LOC&lt;/a&gt; — 113 практических уроков масштабирования монолита до 1M строк. От tech lead до CTO: модульность, границы, CI, деплой.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://daniel.haxx.se/blog/2026/03/26/dont-trust-verify/&quot;&gt;Don&apos;t trust, verify&lt;/a&gt; — Даниэль Стенберг (автор curl): безопасность должна опираться на верификацию, а не на доверие. Проверяйте зависимости, не доверяйте.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 07.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-07/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-07/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://nodejs.org/en/blog/vulnerability/march-2026-hashdos&quot;&gt;Node.js: HashDoS-устойчивый хеш для V8&lt;/a&gt; — HashDoS атакует детерминированные хеши, блокируя event loop. V8 получил целочисленный хеш с секретными ключами — трудно предсказать, быстро инвертировать.&lt;/p&gt;
&lt;h3&gt;AI/Agents&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.jim-nielsen.com/2026/prototyping-with-llm/&quot;&gt;Prototyping with LLMs: sketch first&lt;/a&gt; — Эскиз на бумаге дешевле токенов. Позволяет понять, надо ли это вообще строить.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://timharford.com/2026/04/what-if-ai-just-makes-us-work-harder/&quot;&gt;What if AI just makes us work harder?&lt;/a&gt; — UC Berkeley этнография: AI даёт ощущение продуктивности, но работники работают дольше и движутся к выгоранию.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://bitsplitting.org/2026/04/01/the-beginning-of-programming-as-well-know-it/&quot;&gt;The beginning of programming as we know it&lt;/a&gt; — Код AI не считается работой пока человек не проверил. Программист с taste и caution сейчас ценнее.&lt;/p&gt;
&lt;h3&gt;JS/TS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://neciudan.dev/name-your-effects&quot;&gt;Name your useEffect functions&lt;/a&gt; — Именуй колбэки в useEffect: самодокументирующийся код, понятные stack traces.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/startpoint_dev/211&quot;&gt;SharedArrayBuffer, Spectre и COOP/COEP&lt;/a&gt; — Отключили в 2018 из-за Spectre. Вернули только с COOP/COEP изоляцией.&lt;/p&gt;
&lt;h3&gt;CSS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://frontendmasters.com/blog/creating-puzzle-peices-in-css/&quot;&gt;Puzzle pieces на чистом CSS&lt;/a&gt; — clip-path: shape() для пазла с configurable tabs/sockets через CSS-переменные.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.smashingmagazine.com/2026/03/dropdowns-scrollable-containers-why-break-how-fix/&quot;&gt;Dropdowns inside scrollable containers&lt;/a&gt; — Почему dropdown обрезается в overflow и как чинить: Popover API, anchored container queries.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://clagnut.com/sandbox/font-size-adjust.html&quot;&gt;font-size-adjust: калькулятор метрик&lt;/a&gt; — Устраняет прыжки при смене шрифтов.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.bram.us/2026/03/19/more-easy-light-dark-mode-switching-light-dark-is-about-to-support-images/&quot;&gt;light-dark() для изображений&lt;/a&gt; — CSS function расширяется с цветов на изображения. Chromium и Firefox уже.&lt;/p&gt;
&lt;h3&gt;HTML/Accessibility&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://osvaldas.info/you-probably-dont-need-behaviour-smooth-in-scrollintoview&quot;&gt;scrollIntoView без behavior: smooth&lt;/a&gt; — scroll-behavior: smooth на html с prefers-reduced-motion.&lt;/p&gt;
&lt;h3&gt;Performance&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/&quot;&gt;CSS containment: OpenTable кейс&lt;/a&gt; — contain: strict сократил раскладку с 11 до 2 мс. 4371 до 73 элементов.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 08.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-08/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-08/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://vercel.com/blog/making-turborepo-ninety-six-percent-faster-with-agents-sandboxes-and-humans&quot;&gt;Turborepo 2.9: 96% быстрее&lt;/a&gt; — Turborepo 2.9: agents, sandboxes и humans вместе дали ускорение на 96%.&lt;/p&gt;
&lt;h3&gt;AI/Agents&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://z.ai/blog/glm-5.1&quot;&gt;GLM-5.1: новая SOTA-модель для разработки&lt;/a&gt; — GLM-5.1 от z.ai бьёт всех в SWE-Bench Pro, обгоняет Opus 4.6 в Terminal Bench 2.0. Контекст 200k, веса открыты на HuggingFace. $1 за 1M входящих токенов.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.blog/ai-and-ml/github-copilot/github-copilot-cli-combines-model-families-for-a-second-opinion/&quot;&gt;GitHub Copilot CLI: Rubber Duck&lt;/a&gt; — GitHub добавил «Rubber Duck» в Copilot CLI: вторая AI-семья даёт второе мнение на рекомендации кодинг-агента.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://ergosphere.blog/tags/ai&quot;&gt;Alice and Bob: the machines are fine, I&apos;m worried about us&lt;/a&gt; — PhD-студент Alice учится через struggle, Bob — через AI-агента. По метрикам они одинаковы. Через год Alice — учёный, Bob — prompt engineer без структуры знаний. Schwartz&apos;s experiment с Claude: модель сфабриковала результаты, supervisor поймал потому что делал это вручную годами.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://ai-interaction.com/&quot;&gt;AI Interaction Atlas&lt;/a&gt; — 100+ паттернов для проектирования AI-интерфейсов: визуальные примеры, reusable компоненты.&lt;/p&gt;
&lt;h3&gt;JS/TS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.railway.com/p/moving-railways-frontend-off-nextjs&quot;&gt;Railway выбросил Next.js&lt;/a&gt; — Railway мигрировали весь продакшн с Next.js на Vite + TanStack Router в двух PR без даунтайма. Билд: 10+ мин → &amp;lt;2 мин. Причина: 90% клиентский код, server-first не нужен.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://telp.cc/1Kh6&quot;&gt;When do you really need startTransition?&lt;/a&gt; — Разбор реальных кейсов, когда startTransition в React действительно нужен, а когда — нет.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://habr.com/ru/companies/banki/articles/1011580&quot;&gt;Codemod в JavaScript: jscodeshift&lt;/a&gt; — jscodeshift строит AST и позволяет делать предсказуемые трансформации по всем файлам вместо regex-поиска.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://karlkoch.me/writing/on-velocity-gating&quot;&gt;On velocity gating&lt;/a&gt; — EMA-сглаживание скорости курсора, split engage/disengage thresholds, directional hysteresis — три слоя для hover-эффектов без strobe и debounce lag.&lt;/p&gt;
&lt;h3&gt;CSS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://frontendmasters.com/blog/flexbox-masonry-layout-explained-with-math/&quot;&gt;Masonry на Flexbox с точной математикой&lt;/a&gt; — Flexbox распределяет свободное место между flex-элементами (grow/shrink) для masonry-layout из карточек разной высоты. Без тяжёлых фреймворков.&lt;/p&gt;
&lt;h3&gt;Инструменты&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://jsbenchmarks.com/&quot;&gt;JS Benchmarks&lt;/a&gt; — Сравнение скорости популярных JS-операций для профилирования и оптимизации.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/puffinsoft/syntux&quot;&gt;Syntux: генеративный UI для React/Next.js&lt;/a&gt; — Принимает любое значение, автоматически проектирует интерфейс через JSON-DSL. Стриминг, кэширование, кастомные компоненты.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/milla-jovovich/mempalace&quot;&gt;MemPalace: MCP для memory bank&lt;/a&gt; — MCP для memory bank на собственном диалекте AAAK. LongMemEval R@5 — 96.6%. Open source.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 03.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-03/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-03/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/en/blog/release/v25.9.0&quot;&gt;Node.js 25.9: --max-heap-size и stream/iter&lt;/a&gt; — Node.js 25.9: флаг --max-heap-size для лимита кучи, экспериментальный stream/iter (ленивые итераторы вместо буферизации), улучшения test runner.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/emdash-wordpress/&quot;&gt;EmDash: WordPress-клон от Cloudflare&lt;/a&gt; — Cloudflare выпустила EmDash — open-source WordPress-клон на TypeScript/Astro. Плагины sandboxed, нулевое потребление в простое. Минус: нужны платные Cloudflare Workers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://qwen.ai/blog?id=qwen3.6&quot;&gt;Qwen3.6-Plus — SOTA бесплатно&lt;/a&gt; — Alibaba Qwen3.6-Plus — бесплатно на OpenRouter. SWE-bench 78.8% (на уровне Claude 4.5 Sonnet), GPQA 90.4% SOTA. 1М токенов контекста, preserve_thinking для агентных пайплайнов.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2603.22106&quot;&gt;Three layers of system health&lt;/a&gt; — Margaret-Anne Storey: три слоя долга системы. Technical debt — в коде, cognitive debt — в людях, intent debt — в артефактах. LLM-код усугубляет когнитивный и целевой долг.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/&quot;&gt;What To Know in JavaScript (2026 Edition)&lt;/a&gt; — Chris Coyier: полный обзор JS на 2026 — Iterator Helpers, Set Methods, RegExp.escape(), Promise.try(), Import Attributes (JSON + CSS), Temporal API. С примерами и CodePen-демками.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://chrome.dev/view-transitions-toolkit/&quot;&gt;view-transitions-toolkit от Chrome Labs&lt;/a&gt; — Chrome Labs выпустили view-transitions-toolkit — утилиты для View Transitions: оптимизация keyframes, пауза/скраббинг, auto navigation types, feature detection.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dbushell.com/2026/04/02/css-subgrid-is-super-good/&quot;&gt;CSS subgrid is super good&lt;/a&gt; — CSS subgrid для CMS-контента: named grid lines, breakout full-width блоков одним классом, вложенные subgrid-уровни. Забудьте про negative margins.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tip.com/sliding-liquid/&quot;&gt;Sliding liquid oozing reveal effect&lt;/a&gt; — CSS shape() для liquid-эффекта reveal — clip-path-анимация между двумя wavy-формами. Генератор форм на css-generators.com.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://vale.rocks/posts/accessibility-overlays&quot;&gt;Stay Away From Accessibility Overlays&lt;/a&gt; — Accessibility overlays вредят больше чем помогают: не фиксируют реальные проблемы, мешают скринридерам, привлекают суды. FTC оштрафовала accessiBe на $1M. Не используйте.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://engineering.squarespace.com/blog/2026/squarespace-and-web-standards-how-we-helped-bring-html-video-and-audio-lazy-loading-to-todays-browsers&quot;&gt;loading=&quot;lazy&quot; для video и audio&lt;/a&gt; — Squarespace протолкнули loading=&quot;lazy&quot; для &amp;lt;video&amp;gt; и &amp;lt;audio&amp;gt; в WHATWG. Стандарт с 23 марта 2026, работает во всех браузерах.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/release-notes/146&quot;&gt;Chrome 146: meta name=&quot;text-scale&quot;&lt;/a&gt; — Chrome 146: &amp;lt;meta name=&quot;text-scale&quot; content=&quot;scale&quot; /&amp;gt; — заставляет rem/em учитывать системный размер шрифта пользователя. Решает проблему мобильных браузеров, игнорирующих настройки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.frontendjoy.com/p/keep-pull-requests-small-junior-dev&quot;&gt;Keep Pull Requests Small&lt;/a&gt; — 3000+ PR: большие получают поверхностные ревью. AI-код прячет баги в больших PR. Параллельные ревью, меньше merge conflicts, растут архитектурные навыки.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 09.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-09/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-09/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://react.dev/blog/2026/04/09/react-20&quot;&gt;React 20 stable&lt;/a&gt; — React 20 stable: compiler включён по умолчанию, новый reconciler с приоритетом пользовательского ввода, server actions 2x быстрее. Миграция с React 19 — пара часов.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://rspack.dev/blog/rspack-2&quot;&gt;Rspack 2.0&lt;/a&gt; — Rspack 2.0: полный переход на SWC, билды на 40% быстрее, incremental compilation, улучшенная совместимость с Webpack 5 plugin API.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.stackblitz.com/posts/stackblitz-5/&quot;&gt;StackBlitz 5: WebContainer API&lt;/a&gt; — StackBlitz 5 открывает WebContainer API для третьих лиц. Full Node.js в браузере для демо, документации, онлайн-IDE. Бесплатно до 10k MAU.&lt;/p&gt;
&lt;h3&gt;AI/Agents&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://simonwillison.net/2026/Apr/9/ai-tools-that-actually-help/&quot;&gt;AI Tools That Actually Help&lt;/a&gt; — Simon Willison: в 2026 AI-инструменты для разработчиков делятся на «быстрый старт» и «долгое сопротивление». Первые дают 2x на первой неделе, вторые — 10x через 6 месяцев.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://zainrav.com/blog/ai-code-review-bottleneck&quot;&gt;The code review is the bottleneck&lt;/a&gt; — Zain Ravi: AI пишет код в 10x быстрее, но code review — тот же. Объём PR растёт, качество ревью падает. Решение: договориться, что AI-код имеет свои стандарты доверия.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://ai.meta.com/blog/llama-4-maverick/&quot;&gt;Llama 4 Maverick: 256-модель ensemble&lt;/a&gt; — Meta выпустила Llama 4 Maverick: 256 специализированных моделей в ensemble, routing через MoE. 128k контекст.(weights открыты).&lt;/p&gt;
&lt;h3&gt;JS/TS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://vercel.com/blog/react-server-components-in-production&quot;&gt;React Server Components в production&lt;/a&gt; — Vercel: RSC в production — что работает, что нет. Streaming — да,Suspense boundaries — критичны, client components для интерактива — неизбежны. Честный разбор без хайпа.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_everyday/1286&quot;&gt;Jest → Vitest: реальный опыт миграции&lt;/a&gt; — Разбор миграции большого монорепо: моки ведут себя иначе, environment variables через vi.stubEnv, barrel exports тормозят. Не drop-in замена, но результат стоит effort.&lt;/p&gt;
&lt;h3&gt;CSS&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tip.com/border-shape/&quot;&gt;border-shape: anything is a box&lt;/a&gt; — border-shape в Chrome 147: элемент может быть треугольником, звездой, blob — и при этом иметь тени, рамки, outline. clip-path режет, border-shape формирует. Полная совместимость с border-radius.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tip.com/parallax/&quot;&gt;CSS-only parallax&lt;/a&gt; — Параллакс на чистом CSS: perspective на контейнере, translateZ на слоях, scroll-driven для автоматического движения. Zero JavaScript.&lt;/p&gt;
&lt;h3&gt;Performance&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://component-odyssey.com/posts/the-cost-of-web-components/&quot;&gt;The cost of Web Components&lt;/a&gt; — Бенчмарк: Shadow DOM adds ~0.5ms per element creation. CSS-in-shadow isolation prevents style recalc. 10k components: 5ms overhead. Custom Elements v1 upgrade callback — free performance win.&lt;/p&gt;
&lt;h3&gt;Инструменты&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/bluesky-social&quot;&gt;Bluesky: открытый исходный код&lt;/a&gt; — Bluesky полностью открыл исходный код: AT Protocol, app-view, feed-generator. Самостоятельный хостинг, custom feeds, federation.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 10.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-10/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-10/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://react.dev/blog/2026/04/09/react-20&quot;&gt;React 20 stable&lt;/a&gt; — React 20 stable: compiler включён по умолчанию, новый reconciler с приоритетом пользовательского ввода, server actions 2x быстрее. Миграция с React 19 — пара часов.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://rspack.dev/blog/rspack-2&quot;&gt;Rspack 2.0&lt;/a&gt; — Rspack 2.0: полный переход на SWC, билды на 40% быстрее, incremental compilation, улучшенная совместимость с Webpack 5 plugin API.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.stackblitz.com/posts/stackblitz-5/&quot;&gt;StackBlitz 5: WebContainer API&lt;/a&gt; — StackBlitz 5 открывает WebContainer API для третьих лиц. Full Node.js в браузере для демо, документации, онлайн-IDE. Бесплатно до 10k MAU.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AI/Agents&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://simonwillison.net/2026/Apr/9/ai-tools-that-actually-help/&quot;&gt;AI Tools That Actually Help&lt;/a&gt; — Simon Willison: в 2026 AI-инструменты для разработчиков делятся на «быстрый старт» и «долгое сопротивление». Первые дают 2x на первой неделе, вторые — 10x через 6 месяцев.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://zainrav.com/blog/ai-code-review-bottleneck&quot;&gt;The code review is the bottleneck&lt;/a&gt; — Zain Ravi: AI пишет код в 10x быстрее, но code review — тот же. Объём PR растёт, качество ревью падает. Решение: договориться, что AI-код имеет свои стандарты доверия.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://ai.meta.com/blog/llama-4-maverick/&quot;&gt;Llama 4 Maverick: 256-модель ensemble&lt;/a&gt; — Meta выпустила Llama 4 Maverick: 256 специализированных моделей в ensemble, routing через MoE. 128k контекст (weights открыты).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://vercel.com/blog/react-server-components-in-production&quot;&gt;React Server Components в production&lt;/a&gt; — Vercel: RSC в production — что работает, что нет. Streaming — да, Suspense boundaries — критичны, client components для интерактива — неизбежны. Честный разбор без хайпа.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_everyday/1286&quot;&gt;Jest → Vitest: реальный опыт миграции&lt;/a&gt; — Разбор миграции большого монорепо: моки ведут себя иначе, environment variables через &lt;code&gt;vi.stubEnv&lt;/code&gt;, barrel exports тормозят. Не drop-in замена, но результат стоит effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tip.com/border-shape/&quot;&gt;&lt;code&gt;border-shape&lt;/code&gt;: anything is a box&lt;/a&gt; — &lt;code&gt;border-shape&lt;/code&gt; в Chrome 147: элемент может быть треугольником, звездой, blob — и при этом иметь тени, рамки, outline. &lt;code&gt;clip-path&lt;/code&gt; режет, &lt;code&gt;border-shape&lt;/code&gt; формирует. Полная совместимость с &lt;code&gt;border-radius&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tip.com/parallax/&quot;&gt;CSS-only parallax&lt;/a&gt; — Параллакс на чистом CSS: &lt;code&gt;perspective&lt;/code&gt; на контейнере, &lt;code&gt;translateZ&lt;/code&gt; на слоях, scroll-driven для автоматического движения. Zero JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://component-odyssey.com/posts/the-cost-of-web-components/&quot;&gt;The cost of Web Components&lt;/a&gt; — Бенчмарк: Shadow DOM adds ~0.5ms per element creation. CSS-in-shadow isolation prevents style recalc. 10k components: 5ms overhead. Custom Elements v1 upgrade callback — free performance win.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Инструменты&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/bluesky-social&quot;&gt;Bluesky: открытый исходный код&lt;/a&gt; — Bluesky полностью открыл исходный код: AT Protocol, app-view, feed-generator. Самостоятельный хостинг, custom feeds, federation.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 11.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-11/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-11/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://habr.com/ru/articles/1018200/&quot;&gt;Widely available в марте 2026: 12 фич&lt;/a&gt; — subgrid, contain-intrinsic-size, image-set(), @counter-style, hyphens, hyphenate-character, &amp;lt;link rel=&quot;modulepreload&quot;&amp;gt;, overflow media queries, update frequency media queries, Clear-Site-Data, Device orientation events, Storage manager. Subgrid — главная победа.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://reactnative.dev/blog/2026/04/07/react-native-0.85&quot;&gt;React Native 0.85: Shared Animation Backend&lt;/a&gt; — Единый движок анимаций для Animated и Reanimated. Layout-props (width, height, flex) теперь анимируются через native driver. DevTools: одновременные CDP-подключения от VS Code, AI-агентов и DevTools. Metro с TLS.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://nerdy.dev/why-ai-sucks-at-front-end&quot;&gt;Why AI Sucks At Front End&lt;/a&gt; — AI хороши в шаблонном UI, но проваливаются на bespoke-решениях, scroll-driven анимациях, combined states и accessibility. Причина: обучен на древних решениях, не видит рендер, не понимает «почему», не контролирует среду (браузер/viewport/device).&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://addyosmani.com/blog/agentic-engine-optimization/&quot;&gt;Agentic Engine Optimization (AEO)&lt;/a&gt; — Addy Osmani: AI-агенты читают доки принципиально иначе людей — один GET вместо минут навигации. Ключевые метрики: token-эффективность (&amp;lt;25K на страницу), parsability, llms.txt, skill.md. robots.txt может полностью скрыть доки от агентов.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://dbushell.com/2026/04/10/no-stack-web-development/&quot;&gt;No-stack web development&lt;/a&gt; — David Bushell: стек = техдолг, non-transferable знания, vendor lock-in. «Не выбирайте стек до того, как диагноз поставлен». HTML 20-летней давности работает. React-кодбаза 20 месяцев — может уже не собраться.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.jonoalderson.com/conjecture/headless-websites/&quot;&gt;Headless: цена инженерного тщеславия&lt;/a&gt; — Headless swap-ает видимые ограничения на тяжёлые невидимые. Маркетологи получают component library вместо сайта. Flexibility для системы ≠ flexibility для бизнеса.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://frontendmasters.com/blog/how-i-lost-madcss/&quot;&gt;How I Lost MadCSS&lt;/a&gt; — Chris Coyier разбирает свой проигрыш в CSS-баттле: grid blowout из-за несжимаемого контента + лишний padding. &lt;code&gt;overflow: clip&lt;/code&gt; vs &lt;code&gt;overflow: hidden&lt;/code&gt; — разница критична. Урок: меньше forced widths, больше flex-wrap.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tricks.com/the-value-of-z-index/&quot;&gt;z-index: как перестать жить магическими числами&lt;/a&gt; — Почему z-index-хaos растёт в командах, как связаны stacking context и значения, и как стандартизировать уровни наложения.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.debugbear.com/blog/requestanimationframe&quot;&gt;requestAnimationFrame: глубокий разбор&lt;/a&gt; — Синхронизация с кадром рендера, разница с setTimeout, позиция в пайплайне (INP/next paint), альтернативы: scheduler.yield, postTask, requestIdleCallback.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Инструменты&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://basewatch.dev/&quot;&gt;Basewatch&lt;/a&gt; — Подпишитесь на любой браузерный API и получите push/email, когда поддержка достигнет нужного процента. Данные из CanIUse, Baseline, MDN, Chrome Status.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.raymondcamden.com/2026/04/11/testing-ocr-with-chrome-built-in-ai&quot;&gt;Chrome Built-in AI: OCR на устройстве&lt;/a&gt; — Prompt API извлекает текст с изображений без удалённого API. Знаки, вывески — отлично. Плотный текст (PDF→JPG) — пока слабо. Offline-сценарий — главный козырь.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 13.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-13/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-13/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://engineering.squarespace.com/blog/2026/how-to-use-standard-html-video-and-audio-lazy-loading-on-the-web-today&quot;&gt;HTML video/audio lazy-loading стал стандартом&lt;/a&gt; — Chrome 148: &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; теперь работает для &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; и &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt;, не только для &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;. Firefox и WebKit на подходе. Разбор от Scott Jehl (Squarespace) с polyfill для старых браузеров.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://bcd-watch.igalia.com/weekly/2026-04-13.html&quot;&gt;BCD: новые фичи в Chrome и Firefox&lt;/a&gt; — Chrome: &lt;code&gt;all: revert-layer&lt;/code&gt;, &lt;code&gt;text-decoration-skip-ink: all&lt;/code&gt; (3/3 движка), &lt;code&gt;getSecurePaymentConfirmationCapabilities&lt;/code&gt;. Firefox: &lt;code&gt;img[sizes=auto]&lt;/code&gt;. За неделю — 5 новых поддержек, 15 новых BCD-записей.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/&quot;&gt;CSS Containment от first principles&lt;/a&gt; — Harry Roberts: containment позволяет браузеру пропускать layout, paint и style-recalc для изолированных поддеревьев. Доступен годами, но недоиспользуем. Практические примеры когда &lt;code&gt;contain: layout paint&lt;/code&gt; даёт выигрыш.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.bram.us/2026/03/30/css-sticky-per-axis/&quot;&gt;position:sticky per-axis scroll tracking&lt;/a&gt; — 9-летний spec issue закрыт: sticky-элементы теперь могут отслеживать разные scroll-контейнеры по горизонтали и вертикали. Ранее невозможные лейауты, первыми в Chromium.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.bram.us/2026/03/19/more-easy-light-dark-mode-switching-light-dark-is-about-to-support-images/&quot;&gt;light-dark() скоро научится работать с изображениями&lt;/a&gt; — light-dark() расширяется с цветов на изображения: одна декларация для swap фонов light/dark. Скоро в Chromium и Firefox.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://dev.to/ziva/the-hidden-cost-of-copy-pasting-code-into-chatgpt-dl2&quot;&gt;Скрытая цена копипаста кода в ChatGPT&lt;/a&gt; — Исследование METR: опытные разработчики на сложных задачах стали на 19% медленнее с AI. Причина не в качестве генерации, а в workflow — постоянные переключения контекста, объяснение того, что IDE уже знает.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://frn.sh/pmem/&quot;&gt;400 MiB пропали в Node.js контейнере&lt;/a&gt; — После рестарта подов память росла дискретными шагами и не возвращалась. Анализ через /proc и V8 inspector: рост в private dirty anonymous memory, heap не виноват. Нужно смотреть реальную картину аллокаций.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://daniakash.com/posts/simplest-supply-chain-defense/&quot;&gt;Minimum Release Age — underrated supply chain defense&lt;/a&gt; — Одна конфигурация package manager блокирует быстрое supply-chain-атаки: запретить зависимости моложе N дней. Simple, но эффективный щит.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Инструменты&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/GoogleChromeLabs/view-transitions-toolkit/&quot;&gt;view-transitions-toolkit&lt;/a&gt; — Утилиты от Chrome Labs для View Transitions: паттерны, хелперы и демо из многолетних экспериментов Bramus Van Damme.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.dev-notes.ru/articles/javascript/json-import-vs-fetch/&quot;&gt;JSON import vs fetch: руководство по выбору&lt;/a&gt; — &lt;code&gt;import data from &apos;./file.json&apos; with { type: &apos;json&apos; }&lt;/code&gt; не замена fetch(): пожизненный кэш, нет AbortController, минимум информации об ошибках. Чек-лист когда что использовать.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 14.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-14/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-14/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://web.dev/blog/baseline-digest-mar-2026?hl=en&quot;&gt;Baseline за март 2026: 7 newly available, 12 widely available&lt;/a&gt; — Newly: WebTransport, Readable byte streams, Reporting API, Iterator.concat(), text-indent: each-line/hanging, math font-family. Widely available: &lt;strong&gt;subgrid&lt;/strong&gt;, contain-intrinsic-size, @counter-style, hyphens, image-set(), modulepreload, overflow media queries, navigator.storage, update media query, Device orientation.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://bun.com/blog/bun-v1.3.12&quot;&gt;Bun 1.3.12: встроенный browser automation + cron&lt;/a&gt; — Встроенный headless browser automation из коробки и &lt;code&gt;Bun.cron&lt;/code&gt; — in-process task scheduler.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://cekrem.github.io/posts/effect-without-effect-ts/&quot;&gt;Effect Without Effect-TS&lt;/a&gt; — Идеи Effect-TS (typed errors, honest dependencies, composition) на plain TypeScript. Discriminated unions вместо try/catch, зависимости в сигнатуре функции вместо модульных импортов. Без фреймворка.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.nngroup.com/articles/handmade-designs/&quot;&gt;Handmade designs: новый trust signal&lt;/a&gt; — Nielsen Norman Group: AI-fatigued пользователи предпочитают дизайн, который выглядит человеческим. «Сделано вручную» становится сигналом доверия, как organic food.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://utilitybend.com/blog/rangegroup-needs-you-community-feedback-and-a-call-for-browser-support/&quot;&gt;&lt;code&gt;&amp;lt;rangegroup&amp;gt;&lt;/code&gt;: нативные multi-handle range sliders&lt;/a&gt; — Open UI proposal для нескольких thumb на одном &lt;code&gt;&amp;lt;input type=&quot;range&quot;&amp;gt;&lt;/code&gt;. Progressive enhancement: без поддержки — отдельные labelled inputs. Нужны голоса для привлечения browser vendors.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 12.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-12/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-12/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://habr.com/ru/articles/1018200/&quot;&gt;Widely available в марте 2026: 12 фич&lt;/a&gt; — subgrid, contain-intrinsic-size, image-set(), @counter-style, hyphens, hyphenate-character, &lt;code&gt;&amp;lt;link rel=&quot;modulepreload&quot;&amp;gt;&lt;/code&gt;, overflow media queries, update frequency media queries, Clear-Site-Data, Device orientation events, Storage manager. &lt;strong&gt;Subgrid — главная победа.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://reactnative.dev/blog/2026/04/07/react-native-0.85&quot;&gt;React Native 0.85: Shared Animation Backend&lt;/a&gt; — Единый движок анимаций для Animated и Reanimated. Layout-props (width, height, flex) теперь анимируются через native driver. DevTools: одновременные CDP-подключения от VS Code, AI-агентов и DevTools. Metro с TLS.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://nerdy.dev/why-ai-sucks-at-front-end&quot;&gt;Why AI Sucks At Front End&lt;/a&gt; — AI хороши в шаблонном UI, но проваливаются на bespoke-решениях, scroll-driven анимациях, combined states и accessibility. Причина: обучен на древних решениях, не видит рендер, не понимает «почему», не контролирует среду (браузер/viewport/device).&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://addyosmani.com/blog/agentic-engine-optimization/&quot;&gt;Agentic Engine Optimization (AEO)&lt;/a&gt; — Addy Osmani: AI-агенты читают доки принципиально иначе людей — один GET вместо минут навигации. Ключевые метрики: token-эффективность (&amp;lt;25K на страницу), parsability, llms.txt, skill.md. robots.txt может полностью скрыть доки от агентов.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://dbushell.com/2026/04/10/no-stack-web-development/&quot;&gt;No-stack web development&lt;/a&gt; — David Bushell: стек = техдолг, non-transferable знания, vendor lock-in. «Не выбирайте стек до того, как диагноз поставлен». HTML 20-летней давности работает. React-кодбаза 20 месяцев — может уже не собраться.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.jonoalderson.com/conjecture/headless-websites/&quot;&gt;Headless: цена инженерного тщеславия&lt;/a&gt; — Headless swap-ает видимые ограничения на тяжёлые невидимые. Маркетологи получают component library вместо сайта. Flexibility для системы ≠ flexibility для бизнеса.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://frontendmasters.com/blog/how-i-lost-madcss/&quot;&gt;How I Lost MadCSS&lt;/a&gt; — Chris Coyier разбирает свой проигрыш в CSS-баттле: grid blowout из-за несжимаемого контента + лишний padding. overflow: clip vs overflow: hidden — разница критична. Урок: меньше forced widths, больше flex-wrap.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://css-tricks.com/the-value-of-z-index/&quot;&gt;z-index: как перестать жить магическими числами&lt;/a&gt; — Почему z-index-хaos растёт в командах, как связаны stacking context и значения, и как стандартизировать уровни наложения.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.debugbear.com/blog/requestanimationframe&quot;&gt;requestAnimationFrame: глубокий разбор&lt;/a&gt; — Синхронизация с кадром рендера, разница с setTimeout, позиция в пайплайне (INP/next paint), альтернативы: scheduler.yield, postTask, requestIdleCallback.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Инструменты&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://basewatch.dev/&quot;&gt;Basewatch&lt;/a&gt; — Подпишитесь на любой браузерный API и получите push/email, когда поддержка достигнет нужного процента. Данные из CanIUse, Baseline, MDN, Chrome Status.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.raymondcamden.com/2026/04/11/testing-ocr-with-chrome-built-in-ai&quot;&gt;Chrome Built-in AI: OCR на устройстве&lt;/a&gt; — Prompt API извлекает текст с изображений без удалённого API. Знаки, вывески — отлично. Плотный текст (PDF→JPG) — пока слабо. Offline-сценарий — главный козырь.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 15.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-15/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-15/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://web.dev/blog/baseline-digest-mar-2026?hl=en&quot;&gt;Baseline за март 2026: 7 newly available, 12 widely available&lt;/a&gt; — Newly: WebTransport, Readable byte streams, Reporting API, Iterator.concat(), text-indent: each-line/hanging, math font-family. Widely available: &lt;strong&gt;subgrid&lt;/strong&gt;, contain-intrinsic-size, @counter-style, hyphens, image-set(), modulepreload, overflow media queries, navigator.storage, update media query, Device orientation.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://bun.com/blog/bun-v1.3.12&quot;&gt;Bun 1.3.12: встроенный browser automation + cron&lt;/a&gt; — Встроенный headless browser automation из коробки и &lt;code&gt;Bun.cron&lt;/code&gt; — in-process task scheduler.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://cekrem.github.io/posts/effect-without-effect-ts/&quot;&gt;Effect Without Effect-TS&lt;/a&gt; — Идеи Effect-TS (typed errors, honest dependencies, composition) на plain TypeScript. Discriminated unions вместо try/catch, зависимости в сигнатуре функции вместо модульных импортов. Без фреймворка.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.nngroup.com/articles/handmade-designs/&quot;&gt;Handmade designs: новый trust signal&lt;/a&gt; — Nielsen Norman Group: AI-fatiged пользователи предпочитают дизайн, который выглядит человеческим. «Сделано вручную» становится сигналом доверия, как organic food.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://utilitybend.com/blog/rangegroup-needs-you-community-feedback-and-a-call-for-browser-support/&quot;&gt;&lt;code&gt;&amp;lt;rangegroup&amp;gt;&lt;/code&gt;: нативные multi-handle range sliders&lt;/a&gt; — Open UI proposal для нескольких thumb на одном &lt;code&gt;&amp;lt;input type=&quot;range&quot;&amp;gt;&lt;/code&gt;. Progressive enhancement: без поддержки — отдельные labelled inputs. Нужны голоса для привлечения browser vendors.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 16.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-16/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-16/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.imperva.com/blog/react2dos-cve-2026-23869-when-the-flight-protocol-crashes-at-takeoff/&quot;&gt;React2DoS (CVE-2026-23869): DoS через Flight Protocol&lt;/a&gt; — Новая уязвимость в React Flight Protocol при десериализации Server Functions. Если используете RSC — обновить React до 19.2.5 или Next.js до 16.2.3.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://mui.com/blog/introducing-mui-v9/&quot;&gt;MUI 9.0: jump v7→v9, Base UI primitives&lt;/a&gt; — Крупный релиз: синхронизация версий core и MUI X, новые NumberField и Menubar на Base UI, Chat и Scheduler компоненты в alpha.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/styled-components/styled-components/releases/tag/styled-components%406.4.0&quot;&gt;Styled Components 6.4: RSC support&lt;/a&gt; — Библиотека в «maintenance mode», но получила значительное обновление: поддержка React Server Components, perf-оптимизации, улучшения для RN.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://frontendmasters.com/blog/building-a-ui-without-breakpoints/&quot;&gt;Building a UI Without Breakpoints&lt;/a&gt; — Amit Sheen: 4 метода fluid-компонентов без media queries. Intrinsic grid через auto-fit/minmax, clamp() для типографики, container units для локальной адаптивности, container queries для структурных сдвигов. Компонент-first, не viewport-first.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://mattwaler.com/blog/container-query-typography-systems/&quot;&gt;Container Query Typography Systems&lt;/a&gt; — Типографическая шкала через container queries + :has. Брейкпоинты масштабов привязаны к размеру контейнера, а не viewport. Конец breakpoint-based type scales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://tanstack.com/blog/react-server-components&quot;&gt;TanStack RSC: Server Components Your Way&lt;/a&gt; — Экспериментальные RSC в TanStack Start. Stream-примитивы вместо «use client» директив, совместимость с React Query и CDN. Нет Server Actions из соображений безопасности.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://tkdodo.eu/blog/the-vertical-codebase&quot;&gt;The Vertical Codebase&lt;/a&gt; — TkDodo: группируйте файлы по вертикальным фичам, а не по типам (components/hooks/utils). Колокация масштабируется лучше.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://valentinprugnaud.dev/posts/2026/04/if-you-cant-see-the-boundary-you-cant-reason-about-the-system&quot;&gt;If You Can&apos;t See the Boundary, You Can&apos;t Reason About the System&lt;/a&gt; — Tool для Next.js App Router: подсвечивает границы Client/Server компонентов прямо на странице. Без визуализации невозможно рассуждать о системе.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://developers.google.com/search/blog/2026/04/back-button-hijacking&quot;&gt;Google penalizes back button hijacking&lt;/a&gt; — С июня Google Search понижает сайты, перехватывающие кнопку «назад». «Ensure you are not doing anything to interfere with a user&apos;s ability to navigate their browser history».&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Инструменты&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://phaser.io&quot;&gt;Phaser 4.0: 2D game framework&lt;/a&gt; — 13-летний фреймворк: фокус на perf/efficiency, skills files для AI-агентов, сотни демо. Миграция v3→v4.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 17.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-17/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-17/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://nodejs.org/en/blog&quot;&gt;Node.js: Temporal по умолчанию в Node 26&lt;/a&gt; — V8 14.4 включил Temporal API по умолчанию, Node следует за ним. Также: Node 24.15.0 LTS с require(esm), module compile cache stable, --max-heap-size и OpenSSL 4.0.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.github.com/gh-stack/&quot;&gt;GitHub Stacked PRs в private preview&lt;/a&gt; — Нативная поддержка цепочек зависимых PR: один большой change разбивается на стек мелких. Долгожданная фича для крупных рефакторингов.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://james.coglan.com/blog/nested-promises&quot;&gt;Uses for Nested Промисы&lt;/a&gt; — James Coglan пересмотрел монадный дебат 2013 года: вложенные промиссы решают реальные concurrency-проблемы, которые flat не покрывает. Требует, но окупается.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/web_stack/2267&quot;&gt;Визуализатор event loop для JavaScript&lt;/a&gt; — Интерактивная визуализация микрозадач, макрозадач и порядка выполнения в браузере. Помогает быстрее понять, как работает event loop.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://technicalwriting.dev/2026/04/changelog/index.html&quot;&gt;Automating a changelog with an agent skill&lt;/a&gt; — Google Pigweed автоматизирует changelog через AI-агент skill. Батчи по 25 коммитов, группировка в «stories», stack-ranking по impact. Минимальный подход не сработал — нужен скриптовый конвейер с data integrity checks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://dbushell.com/2026/04/15/containment-breach-in-cascade-layer/&quot;&gt;Containment breach in cascade layer&lt;/a&gt; — David Bushell: &lt;code&gt;!important&lt;/code&gt; пробивает cascade layers — &lt;code&gt;@layer one { p { color: blue !important } }&lt;/code&gt; побеждает &lt;code&gt;@layer three&lt;/code&gt;. Custom properties через fallback — правильный escape hatch. Спецификация логична для user styles, но в практике WordPress/plugin ecosystem — катастрофа.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/alexnozer_dev/359&quot;&gt;Нужен ли visually-hidden?&lt;/a&gt; — Шаблон visually-hidden хорошо знаком a11y-специалистам. Но с развитием CSS и появлением новых подходов — стоит ли его использовать? Разбор альтернатив.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_end_dev/9739&quot;&gt;9 CSS лайфхаков для UX&lt;/a&gt; — Адаптивные фоны через image-set, удобная валидация, scroll-driven анимации и другие практичные CSS-приёмы.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_end_dev/9735&quot;&gt;Моя коллекция полезных HTML-фич&lt;/a&gt; — Набор практичных HTML-атрибутов и приёмов для ускорения загрузки изображений, корректной локализации текста и улучшения доступности.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Мнения&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://daverupert.com/2026/04/claude-no/&quot;&gt;I don&apos;t want a screenshot of your Claude conversation&lt;/a&gt; — Dave Rupert: скриншоты ответов Claude — это Brandolini&apos;s Law для экспертов. «Я хочу твои мысли, не Claude&apos;s». LLM угодливы по своей природе — критический фидбэк появляется только без намёка на авторство.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.jim-nielsen.com/2026/speed-not-conducive-to-wisdom/&quot;&gt;Speed is Not Conducive to Wisdom&lt;/a&gt; — Jim Nielsen: скорость — способ избежать рефлексии. «Wisdom&apos;s feedback loop is slow». В эпохе AI-generated контента краткость стала смелым заявлением.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 18.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-18/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-18/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://react.statuscode.com/issues/470&quot;&gt;TanStack Start rethinks React Server Components&lt;/a&gt; — TanStack Start получил экспериментальную поддержку RSC. Подход кардинально отличается от Next.js: stream-примитивы вместо «use client», совместимость с React Query и CDN, отказ от Server Actions из соображений безопасности.&lt;/p&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://github.com/zarazhangrui/tab-out&quot;&gt;Tab Out&lt;/a&gt; — Расширение Chrome заменяет стандартную новую вкладку на группировку по доменам. Лекарство от мультитабоза.
• &lt;a href=&quot;https://t.me/front_end_dev/9738&quot;&gt;Wiretext&lt;/a&gt; — Unicode wireframe-диаграммы: макеты и схемы собираются из символов. Быстро, текстово, без инструментов.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.marginalia.nu/log/a_132_ai_bores/&quot;&gt;AI делает разработку скучной&lt;/a&gt; — Жёсткий разбор: старые Show HN содержали глубокую проработку, сейчас — AI-генератор поверхностных решений. Prompt ≠ формулировка идеи.
• &lt;a href=&quot;https://maggieappleton.com/zero-alignment&quot;&gt;One developer, two dozen agents, zero alignment&lt;/a&gt; — Maggie Appleton: запустила два десятка AI-агентов для работы над сайтом. Результат: нулевая согласованность, каждый агент в своём bubble.&lt;/p&gt;
&lt;h4&gt;CSS/HTML&lt;/h4&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_end_dev/9736&quot;&gt;Радио стейт-машина в CSS&lt;/a&gt; — Если UI нужно переключать между визуальными режимами без JS — радио state machine на базе &lt;code&gt;input type=&quot;radio&quot;&lt;/code&gt; и CSS-селекторов. Чистый CSS, без скриптов.
• &lt;a href=&quot;https://t.me/front_end_dev/9740&quot;&gt;Предзагрузка картинок через JavaScript&lt;/a&gt; — &lt;code&gt;new Image()&lt;/code&gt; прогревает HTTP cache и показывает картинку без задержки. Когда использовать и когда лучше &lt;code&gt;link rel=&quot;preload&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Платформа&lt;/h4&gt;
&lt;p&gt;• &lt;a href=&quot;https://www.smashingmagazine.com/2026/04/legacy-systems/&quot;&gt;Улучшение UX в legacy-системах&lt;/a&gt; — Практическое руководство: legacy должен сосуществовать с современными продуктами. Big-bang vs incremental vs parallel миграция, фокус на зависимостях и workflow.
• &lt;a href=&quot;https://t.me/we_use_js/5278&quot;&gt;CSP, CORS и security headers&lt;/a&gt; — Что обязан знать фронтендер: CORS — не про «разрешить запрос», а про контроль доступа. CSP — последняя линия обороны от XSS.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 19.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-19/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-19/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://addyosmani.com/blog/agent-harness-engineering/&quot;&gt;Agent Harness Engineering&lt;/a&gt; — Addy Osmani: системный подход к построению agent harness — инфраструктуры для запуска AI-агентов. Архитектура, абстракции, паттерны. Продолжение «The Agent Stack Bet».&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/konstantinov_it/257&quot;&gt;DevTools MCP&lt;/a&gt; — В Chrome DevTools появилась пометка new у DevTools MCP — интеграция Model Context Protocol прямо в инструменты разработчика.&lt;/p&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_end_dev/9743&quot;&gt;Crashcat: физический движок на JS&lt;/a&gt; — Физический движок для игр, симуляций и креативного кодинга. Полностью на JavaScript.&lt;/p&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;JS/TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/frontend_info/2424&quot;&gt;Parse, Don&apos;t Validate — In a Language That Doesn&apos;t Want You To&lt;/a&gt; — Классический принцип parse-don&apos;t-validate, но для JavaScript — языка без tagged unions и pattern matching. Как приблизиться к идеалу.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://blog.jim-nielsen.com/2026/hook-it-up-to-the-machine/&quot;&gt;Hook It Up to the Machine&lt;/a&gt; — Jim Nielsen размышляет о компромиссах между простотой ручного труда и автоматизацией. Иногда проще подключиться к машине напрямую.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/front_end_dev/9745&quot;&gt;Новые возможности CSS multi-column в Chrome 145&lt;/a&gt; — column-header — заголовки для каждой колонки, column-span для spanning-элементов. Multi-column наконец становится практичным.&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/htmlshit/4063&quot;&gt;Надоело угадывать высоту: CSS height&lt;/a&gt; — Систематизация способов задания высоты в CSS: auto, fit-content, min-content, stretch и когда что использовать.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• &lt;a href=&quot;https://t.me/unsleeping706/1308&quot;&gt;SSR vs SSG vs RSC — простое объяснение&lt;/a&gt; — Наглядное объяснение разницы между серверным рендерингом, статической генерацией и React Server Components.&lt;/p&gt;
</content:encoded></item><item><title>Пульс веб-платформы 20.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-20/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-20/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://addyosmani.com/blog/agent-harness-engineering/&quot;&gt;Agent Harness Engineering&lt;/a&gt; — Addy Osmani: системный подход к построению agent harness — инфраструктуры для запуска AI-агентов. Архитектура, абстракции, паттерны. Продолжение «The Agent Stack Bet».&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/konstantinov_it/257&quot;&gt;DevTools MCP&lt;/a&gt; — В Chrome DevTools появилась пометка new у DevTools MCP — интеграция Model Context Protocol прямо в инструменты разработчика.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9743&quot;&gt;Crashcat: физический движок на JS&lt;/a&gt; — Физический движок для игр, симуляций и креативного кодинга. Полностью на JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/frontend_info/2424&quot;&gt;Parse, Don&apos;t Validate — In a Language That Doesn&apos;t Want You To&lt;/a&gt; — Классический принцип parse-don&apos;t-validate, но для JavaScript — языка без tagged unions и pattern matching. Как приблизиться к идеалу.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jim-nielsen.com/2026/hook-it-up-to-the-machine/&quot;&gt;Hook It Up to the Machine&lt;/a&gt; — Jim Nielsen размышляет о компромиссах между простотой ручного труда и автоматизацией. Иногда проще подключиться к машине напрямую.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9745&quot;&gt;Новые возможности CSS multi-column в Chrome 145&lt;/a&gt; — column-header — заголовки для каждой колонки, column-span для spanning-элементов. Multi-column наконец становится практичным.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/htmlshit/4063&quot;&gt;Надоело угадывать высоту: CSS height&lt;/a&gt; — Систематизация способов задания высоты в CSS: auto, fit-content, min-content, stretch и когда что использовать.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/unsleeping706/1308&quot;&gt;SSR vs SSG vs RSC — простое объяснение&lt;/a&gt; — Наглядное объяснение разницы между серверным рендерингом, статической генерацией и React Server Components.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 22.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-22/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-22/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/webstandards_ru/7712&quot;&gt;Firefox 150&lt;/a&gt; — для разработчиков добавили &lt;code&gt;sizes=&quot;auto&quot;&lt;/code&gt; для ленивых картинок, новые API и улучшения DevTools&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/&quot;&gt;TypeScript 7.0 beta&lt;/a&gt; — Microsoft выпустили бета новой мажорной версии. Список фич пока доступен по ссылке, стабильный релиз ожидается в ближайшие месяцы&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cekrem.github.io/posts/git-history-git-2-54/&quot;&gt;git history — главная фича Git 2.54&lt;/a&gt; — команда рисует дерево коммитов прямо в терминале с ASCII-визуализацией, без необходимости ставить tig или gitk&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tanstack.com/blog/react-server-components&quot;&gt;TanStack Start получил RSC&lt;/a&gt; — experimental support для React Server Components, но не как в Next.js. Клиент владеет деревом компонентов, RSC — это обычные React Flight streams, которые встраиваются в TanStack Query с кешированием и background refetch. На контентных страницах tanstack.com миграция на RSC сэкономила ~153KB gzip&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://javascriptweekly.com/issues/782&quot;&gt;HyperFrames&lt;/a&gt; — создаёт видео из HTML и JavaScript. По сути, браузерный движок, который рендерит DOM в видеопоток — полезно для генерации превью, анимированных карточек и демо&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9749&quot;&gt;JS Paint&lt;/a&gt; — пиксельный ремейк MS Paint в браузере, с темами, расширениями и полной поддержкой оригинальных форматов. Работает оффлайн через Service Worker&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://charcuterie.elastiq.ch/#130BA&quot;&gt;Charcuterie&lt;/a&gt; — коллекция готовых CSS-компонентов без JavaScript. Кнопки, карточки, формы — всё на чистом CSS, можно копировать и адаптировать&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/webstandards_ru/7711&quot;&gt;локальные встраиваемые примеры кода&lt;/a&gt; — Александр Овганнисян сделал веб-компонент для runnable code snippets, которые работают полностью локально, без сервера&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/frontendhubvk/235&quot;&gt;CSS Anchor Positioning: тултипы без JS&lt;/a&gt; — позиционирование попапов и тултипов относительно якорных элементов с помощью CSS-only &lt;code&gt;anchor()&lt;/code&gt;, без единой строчки JavaScript&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9751&quot;&gt;Как прервать async workflow без отмены промисов&lt;/a&gt; — в JavaScript нет универсального механизма отмены, но с комбинацией &lt;code&gt;AbortController&lt;/code&gt; и паттернов можно элегантно прерывать цепочки async-операций&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-vertical-codebase&quot;&gt;The Vertical Codebase&lt;/a&gt; — TkDodo объясняет, почему &lt;code&gt;components / hooks / utils / types&lt;/code&gt; не масштабируется: код одного домена размазывается по куче папок, а &lt;code&gt;utils&lt;/code&gt; превращается в помойку. Предлагает группировать по доменам, а не по техническому типу&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/startpoint_dev/214&quot;&gt;V8: как код становится «достаточно горячим»&lt;/a&gt; — разбор того, как движок V8 решает什么时候 оптимизировать функцию через TurboFan и какие триггеры запускают JIT-компиляцию&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 21.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-21/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-21/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://vercel.com/kb/bulletin/vercel-april-2026-security-incident&quot;&gt;Vercel взломали&lt;/a&gt; — атаковали через сторонний AI-инструмент сотрудника, утекли данные клиентов. Guillermo (CEO) говорит что атака «значительно ускорена ИИ». Ещё один случай supply chain через AI-тул.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://reactnative.dev/blog/2026/04/07/react-native-0.85&quot;&gt;React Native 0.85&lt;/a&gt; — наконец-то Unified Animation Backend: &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;flex&lt;/code&gt; теперь анимируются через native driver без падения на JS-нить. Plus: DevTools с одновременными CDP-соединениями, Metro с TLS.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/pnpm/pnpm/releases/tag/v11.0.0-rc.0&quot;&gt;pnpm 11 RC&lt;/a&gt; — SQLite-backed store index и supply-chain protection включены по дефолту. На этот раз opinionated — это правильно.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tip.com/hand-drawn-underline/&quot;&gt;hand-drawn underline на border-shape&lt;/a&gt; — Temani Afif превращает скучную &lt;code&gt;border-bottom&lt;/code&gt; в нарисованную от руку линию. Генератор формы прилагается. Chrome-only пока что.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bram.us/2026/03/30/css-sticky-per-axis/&quot;&gt;CSS &lt;code&gt;position:sticky&lt;/code&gt; теперь по осям&lt;/a&gt; — девятилетнее issue закрыто: sticky-элемент может отслеживать разные scroll-контейнеры по горизонтали и вертикали. Позволяет layouts, которые раньше были невозможны.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://shadow-dom-css.adobe.com/&quot;&gt;современные CSS-фичи ломаются в Shadow DOM&lt;/a&gt; — cascade layers, container queries, &lt;code&gt;@scope&lt;/code&gt;, &lt;code&gt;@property&lt;/code&gt; ведут себя иначе внутри shadow DOM. Команда Adobe Spectrum задокументировала проблемы.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://allthingssmitty.com/2026/04/20/why-i-dont-chain-everything-in-javascript-anymore/&quot;&gt;почему я больше не чейню всё подряд&lt;/a&gt; — &lt;code&gt;.filter().map().sort()&lt;/code&gt; выглядит чисто, но больно дебажить. Правило: 3-4 шага — разбить на именованные переменные. Для async-цепочек тем более.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cekrem.github.io/posts/parse-dont-validate-typescript/&quot;&gt;Parse, Don&apos;t Validate в TypeScript&lt;/a&gt; — branded types и discriminated unions позволяют TypeScript нести доказательство что валидация уже прошла. Без защитных &lt;code&gt;if&lt;/code&gt; по всему коду.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Платформа&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/&quot;&gt;MDN перестроили без React → Web Components&lt;/a&gt; — React был просто обёрткой вокруг статического контента. Теперь кастомный render pipeline и Lit web components. Самый MDN-поступ за всё время.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raymondcamden.com/2026/04/20/building-a-simple-markdown-pwa-app&quot;&gt;PWA может ассоциировать себя с файлами&lt;/a&gt; — через &lt;code&gt;file_handlers&lt;/code&gt; в manifest и &lt;code&gt;launchQueue&lt;/code&gt; API: клик по .md-файлу открывает твою PWA. 400KB против 90MB Electron-версии того же приложения.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 23.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-23/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-23/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/structured-clone-messaging?hl=en&quot;&gt;Chrome 148 теперь поддерживает Structured Clone для messaging&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Map&lt;/code&gt;, &lt;code&gt;Set&lt;/code&gt;, &lt;code&gt;Date&lt;/code&gt;, &lt;code&gt;File&lt;/code&gt; и &lt;code&gt;Blob&lt;/code&gt; передаются между контекстами расширения без ручной сериализации&lt;/li&gt;
&lt;li&gt;опционально: &lt;code&gt;&quot;message_serialization&quot;: &quot;structured_clone&quot;&lt;/code&gt; в manifest.json&lt;/li&gt;
&lt;li&gt;расширения с разным форматом сериализации не смогут общаться между собой&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/the-incredible-overcomplexity-of-the-shadcn-radio-button/&quot;&gt;Shadcn radio button — 260 строк кода вместо одной&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;input type=&quot;radio&quot;&amp;gt;&lt;/code&gt; — и это всё, что нужно&lt;/li&gt;
&lt;li&gt;Shadcn: 45 строк + Radix за спиной (215 строк, 7 импортов)&lt;/li&gt;
&lt;li&gt;accessibility не лучше, стилизация не проще&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wiretext.app/&quot;&gt;Wiretext&lt;/a&gt; — wireframe-редактор, где всё рендерится Unicode box-drawing символами. Рисуешь блоки, текст, кнопки чистым текстом — идеально для быстрых набросков без GUI&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rexa-developer/tiks&quot;&gt;tiks&lt;/a&gt; — процедурные звуки для веб-интерфейсов через Web Audio API:
&lt;ul&gt;
&lt;li&gt;осцилляторы, шум, кривые — никаких mp3, только математика&lt;/li&gt;
&lt;li&gt;единая «звуковая тема», всё звучит консистентно&lt;/li&gt;
&lt;li&gt;core ~2KB, React hook ~300B, уважает &lt;code&gt;prefers-reduced-motion&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=J4vJ-wO6Sl0&quot;&gt;DistributiveOmit&lt;/a&gt; — как стандартный &lt;code&gt;Omit&amp;lt;T, K&amp;gt;&lt;/code&gt; превращает union-типы в &lt;code&gt;{}&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;keyof&lt;/code&gt; для union видит только общие ключи всех веток&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Exclude&lt;/code&gt; возвращает &lt;code&gt;never&lt;/code&gt;, и тип схлопывается&lt;/li&gt;
&lt;li&gt;решение: &lt;code&gt;T extends any ? Omit&amp;lt;T, K&amp;gt; : never&lt;/code&gt; — применяет Omit к каждой ветке отдельно&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/alexnozer_dev/361&quot;&gt;Настоящий mobile-first&lt;/a&gt; — не про медиа-запросы, а про учёт реальных ограничений мобильных:
&lt;ul&gt;
&lt;li&gt;питание, сеть, жесты, производительность, оффлайн&lt;/li&gt;
&lt;li&gt;кэширование контента, экономия трафика, адаптация ориентации экрана&lt;/li&gt;
&lt;li&gt;режим энергосбережения → упрощённая версия без лишних ресурсов&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://spencermortensen.com/articles/email-obfuscation/&quot;&gt;Обфускация email в 2026&lt;/a&gt; — защита от спам-ботов комбинацией HTML-сущностей, SVG, CSS и комментариев с оценкой устойчивости к разным парсерам&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1Kur&quot;&gt;React Native оптимизация сборки&lt;/a&gt; — уменьшение размера bundle, улучшение времени старта и тонкая настройка конфигурации для production&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.blog/open-source/git/highlights-from-git-2-54/&quot;&gt;Git 2.54&lt;/a&gt; — новые команды для работы с историей:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git history reword&lt;/code&gt; — переписывает сообщение коммита, не трогая дерево&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git history split&lt;/code&gt; — интерактивное разделение коммита на два&lt;/li&gt;
&lt;li&gt;работают с bare-репозиториями, отказываются при конфликтах слияния&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://uicolors.app/generate/00ccff&quot;&gt;Tailwind CSS Color Generator&lt;/a&gt; — визуализация палитр с предпросмотром на компонентах, интеграция с Figma и экспорт в CSS-переменные&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 24.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-24/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-24/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://webkit.org/blog/17934/release-notes-for-safari-technology-preview-242/&quot;&gt;Release Notes for Safari Technology Preview 242&lt;/a&gt; — Safari Technology Preview 242 включает поддержку CSS attr() function из Level 5, oblique-only font-synthesis-style, закрытых атрибутов &amp;lt;dialog&amp;gt; и исправления для position-try-order. Также добавлена поддержка secure cookies на loopback хостах и getAllRecords() в IndexedDB.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/introducing-gpt-5-5/&quot;&gt;GPT-5.5: мощная модель от OpenAI&lt;/a&gt; — OpenAI выпустили GPT-5.5, которая превосходит Opus 4.7 по ключевым бенчмаркам: Terminal-Bench 2.0 (82.7% vs 69.4%), GDPval (84.9% vs 80.3%). Модель оптимизирована для агентных задач с меньшим количеством подсказок, имеет Computer use на уровне 78.7% и более токен-эффективна, чем предыдущая версия.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/&quot;&gt;TypeScript 7.0: компилятор на Go и 10x прирост производительности&lt;/a&gt; — TypeScript 7.0 beta представляет полный порт компилятора на Go, что дает 10x прирост производительности по сравнению с 6.0. Новая версия поддерживает параллельное выполнение parsing, type-checking и emitting, имеет новые флаги --checkers и --builders для настройки потоков, а также hard errors на deprecated фичах из 6.0.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/constructable-stylesheets-and-adoptedstylesheets-one-parse-every-shadow-root/&quot;&gt;Constructable Stylesheets и adoptedStyleSheets: один парс для каждого Shadow Root&lt;/a&gt; — Constructable Stylesheets позволяют парсить CSS один раз и разделять между множеством Shadow Roots, что критически важно для производительности веб-компонентов. Вместо инъекции &amp;lt;style&amp;gt; тега в каждый экземпляр, браузер создает один CSSStyleSheet объект и ссылается на него во всех компонентах.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mefody.dev/talks/input/&quot;&gt;Доклад о теге &amp;lt;input&amp;gt;: слайды и факты&lt;/a&gt; — Слайды доклада, посвященного тегу &amp;lt;input&amp;gt; - одному из самых сложных и неоднозначных тегов в HTML. Доклад обновляет предыдущие презентации про &amp;lt;a&amp;gt; (2019) и &amp;lt;img&amp;gt; (2020), включает новые факты и особенности реализации.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ditherimage.online/&quot;&gt;Dither Image Online: генератор ретро пиксельного и точечного арта&lt;/a&gt; — Веб-инструмент для быстрой конвертации фото в эффект stippling и pixel art прямо в браузере. Поддерживает алгоритмы Bayer, Crosshatch, Halftone и Contour с настраиваемой силой, цветовыми уровнями и bloom. Идеально для креаторов и веб-дизайнеров.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1Kvu&quot;&gt;Testing OpenGraph on localhost from the CLI&lt;/a&gt; — Инструмент для локального тестирования OpenGraph метаданных через CLI без необходимости деплоя или использования внешних отладчиков. Упрощает проверку OG-тегов на локальных серверах разработки.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.aaron-gustafson.com/notebook/never-lose-form-progress-again/&quot;&gt;Form-saver: веб-компонент для сохранения прогресса форм&lt;/a&gt; — Веб-компонент form-saver автоматически сохраняет состояние форм в localStorage и восстанавливает поля при перезагрузке страницы. Решает проблему потери заполненных данных из-за случайного закрытия вкладки или обновления.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 25.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-25/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-25/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/manifest-localization?hl=en&quot;&gt;Localization support for web app manifests&lt;/a&gt; — Chrome и Edge 148 добавили поддержку локализации для web app manifest. Теперь можно определять многоязычные значения для name, description и других полей прямо в манифесте, используя BCP47 теги.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vkhanhqui/figma-mcp-go&quot;&gt;Figma MCP plugin&lt;/a&gt; — Бесплатный плагин и MCP для обхода API-лимитов Figma. Позволяет верстать с помощью ИИ без ограничений Rate Limit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;AI/Agents&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/alexnozer_dev/362&quot;&gt;Страница на Claude Code и Figma MCP&lt;/a&gt; — Разбор случая, когда человек без опыта разработки создал страницу за 30 минут с помощью Claude Code + Figma MCP. Автор критикует выбор Next.js для простой страницы.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9756&quot;&gt;Как правильно организовать передачу файлов через WebRTC DataChannel&lt;/a&gt; — Разбор 6 реальных проблем при передаче файлов через WebRTC: буфер SCTP, готовность получателя, переподключения, жизненный цикл файлов с практическими решениями.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9758&quot;&gt;Нормализация состояния в React через Entity Registry на Zustand&lt;/a&gt; — Паттерн Entity Registry с рекурсивным парсингом и мягкими удалениями для аккуратного UI и точечных перерендеров в React.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/msosnovfeed/1383&quot;&gt;How I Resolved 15K Circular Dependencies&lt;/a&gt; — Инженерная история как в огромном Nx-монорепозитории (7 млн строк, 1000+ проектов) за год вычистили 15 тысяч циклических зависимостей на уровне проектов.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/htmlshit/4064&quot;&gt;#событие дня March MadCSS&lt;/a&gt; — 16 лучших фронтенд-разработчиков (Josh Cameau, Wes Bos, Kyle Cook, Chris Coyier) схлестнутся в соревновании по вёрстке интерфейсов.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/yandex4frontend/516&quot;&gt;Ломается вёрстка после правок? Есть решение&lt;/a&gt; — Михаил Балицкий (Яндекс) рекомендует использовать сабгриды для создания легко поддерживаемого качественного CSS-кода с минимальными усилиями.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/auto-sizes-on-images/&quot;&gt;Auto &lt;code&gt;sizes&lt;/code&gt; on Images&lt;/a&gt; — Firefox 150 добавил sizes=&quot;auto&quot; для responsive images, что делает их проще и надёжнее без необходимости ручного указания sizes атрибута.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/webstandards_ru/7715&quot;&gt;Варианты предзагрузки изображений на JavaScript&lt;/a&gt; — Алекс Макартур сравнивает 5 подходов к предзагрузке изображений: new Image(), &amp;lt;link rel=&quot;preload&quot;&amp;gt;, скрытый &amp;lt;div&amp;gt; с CSS-фоном, Cache API и fetch() с их компромиссами.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/htmlshit/4065&quot;&gt;Когда пакет долго живёт...&lt;/a&gt; — Статья про организацию библиотек с subpath exports в package.json вместо одного большого barrel-файла, чтобы избежать проблем с module graph.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 26.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-26/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-26/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/articles/1023578&quot;&gt;Как правильно реализовать кнопку Назад во Vue&lt;/a&gt; — Разбор нюансов кнопки «Назад» во Vue: почему router.push создаёт дубли страниц и ловушку навигации, когда использовать router.back или router.go(-1), и как добавить fallback для корневого маршрута. Полезно для тех, кто сталкивается со странным поведением истории браузера в SPA.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nerdy.dev/CSS-recently-in-all-browsers&quot;&gt;CSS Recently In All Browsers&lt;/a&gt; — Подборка CSS-фич, которые перешли в Baseline с октября 2025 по апрель 2026. Anchor Positioning для привязки элементов без DOM-хаков, @scope для селекторного скоупа с «пончиком», name-only container queries без условия на размер, shape() для нативной CSS-геометрии, view-transition-class для анимаций роутинга в SPA, и новые типографские юниты rcap/rch/rex/ric. Много чего уже можно использовать в проде.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bram.us/2026/04/02/view-transitions-toolkit/&quot;&gt;View Transitions Toolkit&lt;/a&gt; — Набор утилит для View Transitions: детект поддержки, полифилл для activeViewTransition, оптимизация keyframes, управление воспроизведением и автоматическая подстановка transition-типов при навигации. Упаковано в npm-пакет с готовыми хелперами — чтобы каждый раз не писать boilerplate для сложных анимированных переходов.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 27.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-27/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-27/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/&quot;&gt;TypeScript 7.0: компилятор на Go, 10x быстрее&lt;/a&gt; — TypeScript переезжает на Go, получая колоссальный прирост производительности — в 10 раз быстрее, чем TypeScript 6.0. Парсинг, типизация и эмиссия теперь работают параллельно, что кардинально ускорит большие проекты.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bcd-watch.igalia.com/weekly/2026-04-27.html&quot;&gt;BCD Changes Report: Serial API, LanguageModel, CSS Container Rule&lt;/a&gt; — Firefox добавил поддержку Serial API для работы с последовательными портами и LanguageModel API. В CSS появился Container Rule и свойство position-anchor. Всего за неделю +40 новых API в браузерах.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tsrx.dev/&quot;&gt;TSRX: духовный преемник JSX для TypeScript&lt;/a&gt; — Языковое расширение TypeScript от Dominic Gannaway, которое позиционируется как духовный преемник JSX. Позволяет писать более декларативный код с улучшенной типизацией шаблонных конструкций.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://rspack.rs/blog/announcing-2-0&quot;&gt;Rspack 2.0: much faster, better ESM support&lt;/a&gt; — Rspack обновился до версии 2.0 с существенным улучшением производительности и поддержкой ES modules. Бандлер продолжает расти популярностью как альтернатива Webpack.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;[collective speed isn&apos;t the sum of individual speed](https://blog.jim-nielsen.com/2026/collective-speed-isnt-the-sum-of individual-speed/) — Глубокая мысль: быстрые разработчики не делают быструю компанию, как спринтеры в эстафете. Критически важна передача эстафеты (синхронизация) между участниками, а не индивидуальная скорость.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://chriscoyier.net/2026/04/25/ai-alignment/&quot;&gt;AI &amp;amp; alignment: raw coding speed isn&apos;t the bottleneck&lt;/a&gt; — Хорошая статья о том, что скорость написания кода не является основной проблемой. Важнее синхронизация команды, понимание того, что строить, и review процесс. AI ускоряет индивидуальную работу, но не помогает с командной.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/readymag/rebuilding-a-web-text-editor-3g2o&quot;&gt;Rebuilding a web text editor: draft.js is not the answer&lt;/a&gt; — Readymag CTO о том, почему они отказались от draft.js и решили строить свой текстовый редактор с нуля. Интересный кейс про vendor lock, emoji sequences и необходимость full control над текстовыми манипуляциями.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://apify.com/integrations/openclaw&quot;&gt;Apify Actors для OpenClaw: 25,000+ инструментов для веб-данных&lt;/a&gt; — Интеграция Apify в OpenClaw дает доступ к более чем 25,000 инструментам для реального сбора веб-данных. Один CLI install для расширенных возможностей парсинга и извлечения данных.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://codeberg.org/hails/wsl9x&quot;&gt;WSL9x: Linux kernel внутри Windows 9x kernel&lt;/a&gt; — Любопытный проект: современный Linux kernel, работающий кооперативно внутри ядра Windows 9x. Технически невозможное стало возможным.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 28.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-28/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-28/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://piccalil.li/blog/the-end-of-responsive-images/&quot;&gt;Конец адаптивных изображений&lt;/a&gt; — Мэт Маркиз, бывший председатель Responsive Image Community Group, подводит итог десятилетней борьбе с &lt;code&gt;sizes&lt;/code&gt;. Теперь &lt;code&gt;sizes=&quot;auto&quot;&lt;/code&gt; + &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; перекладывают работу на браузер — поддержка уже в Firefox, Safari и Chrome. Длинные &lt;code&gt;sizes&lt;/code&gt; нужны только для above-the-fold картинок.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://deno.com/blog/fresh-2.3&quot;&gt;Fresh 2.3 — обновление full-stack фреймворка Deno&lt;/a&gt; — Nuxt/Kinoko для Deno получил версию 2.3 с улучшенной island-архитектурой, быстрее холодные старты и обновлённые dev tools.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://voidzero.dev/posts/oxc-angular-compiler&quot;&gt;OXC Angular Compiler — компилятор Angular на Rust&lt;/a&gt; — Команда VoidZero (OXC, Vite) делает компилятор для Angular-шаблонов на Rust. Цель — ускорить сборку проектов, которые сейчас зависят от тяжёлого Java-компилятора.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://replacements.fyi/&quot;&gt;replacements.fyi — замены для 687 устаревших NPM-пакетов&lt;/a&gt; — Каталог альтернатив устаревшим пакетам — показывает современные drop-in замены с актуальной поддержкой. Полезно при миграции старых проектов.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://animata.design/&quot;&gt;Animata — коллекция open-source UI-анимаций&lt;/a&gt; — Библиотека готовых анимированных компонентов для веба. Копируй код, адаптируй — от hover-эффектов до сложных page transitions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.railway.com/p/moving-railways-frontend-off-nextjs&quot;&gt;Railway уходит с Next.js&lt;/a&gt; — Railway мигрирует фронтенд с Next.js на статический сайт. Причины: ненужный серверный рендеринг для SaaS-дашборда, сложность деплоя и желание упростить инфраструктуру.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/name-only-containers-the-scoping-we-needed/&quot;&gt;Name-only контейнеры в CSS — scoped стили на уровне платформы&lt;/a&gt; — CSS Container Queries с name-only синтаксисом позволяют ограничивать область действия стилей по имени без медиа-условий. Ближе к CSS Modules, но нативно — решает проблему конфликта классов в дизайн-системах.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/building-a-ui-without-breakpoints/&quot;&gt;Building a UI without breakpoints&lt;/a&gt; — Как строить адаптивные интерфейсы без медиа-запросов — container queries, &lt;code&gt;clamp()&lt;/code&gt;, intrinsic sizing и fluid typography. Подход, при котором layout подстраивается к контейнеру, а не к viewport.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://meyerweb.com/eric/thoughts/2026/04/27/canvas-ing-the-web/&quot;&gt;Canvas-ing the Web — рендеринг HTML+CSS в canvas&lt;/a&gt; — Эрик Мейер разбирает практический use case для нового HTML-in-Canvas API (Chrome preview). Рендер DOM-дерева на &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; — для скриншотов, PDF-экспорта и нестандартных layout-эффектов.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/svg-filters-guide-getting-started-with-the-basics/&quot;&gt;SVG Filters — визуальный гайд по основам&lt;/a&gt; — Введение в SVG-фильтры: blur, color manipulation, displacement mapping. С визуальными примерами и объяснением каждого примитива (&lt;code&gt;feGaussianBlur&lt;/code&gt;, &lt;code&gt;feColorMatrix&lt;/code&gt;, &lt;code&gt;feTurbulence&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 29.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-29/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-29/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://rspack.rs/blog/announcing-2-0&quot;&gt;Rspack 2.0 — больше не просто «быстрый webpack»&lt;/a&gt; — Rspack выходит за рамки webpack-совместимости: чистый ESM, нормальный tree-shaking для CommonJS destructuring и inline dynamic imports, persistent cache для SWC минификатора ещё на ~50% быстрее. Дев-сервер похудел с 192 npm-зависимостей до одной. npm-скачивания выросли со 100k до 5M в неделю — и это вполне заслуженно.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/&quot;&gt;MDN полностью переписали — без React, на Web Components&lt;/a&gt; — React был обёрткой поверх статического контента — они его выкинули и написали свой рендер-пайплайн на Lit Web Components. Результат: быстрее, проще, никакого hydration для контента, который не меняется. Самое MDN-шное решение из возможных.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/&quot;&gt;Что нужно знать в JavaScript в 2026 году&lt;/a&gt; — Chris Coyier нарисовал карту JS-ландшафта: ECMAScript 2025/2026, фреймворки, рантаймы, билд-тулы. Длинный и подробный обзор. Хорошо подходит как checkpoint — проверить, не упустил ли что-то за год.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/&quot;&gt;CSS Containment — забытый инструмент для производительности&lt;/a&gt; — Harry Roberts разбирает CSS Containment с нуля. Фича доступна давно, но почти не используется. Позволяет браузеру пропускать пересчёт layout, paint и style для изолированных поддеревьев DOM. Как virtual DOM, но нативный и без JS. Если у вас есть виджеты или динамические блоки — containment может дать заметный прирост.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bram.us/2026/03/30/css-sticky-per-axis/&quot;&gt;position:sticky теперь отслеживает ближайший scroll-контейнер по каждой оси&lt;/a&gt; — Девятилетний баг в CSS-спецификации наконец исправлен: sticky-элементы могут независимо прилипать к разным scroll-контейнерам по горизонтали и вертикали. Лейауты, которые раньше были невозможны чистым CSS. Сначала landed в Chromium.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://engineering.squarespace.com/blog/2026/how-to-use-standard-html-video-and-audio-lazy-loading-on-the-web-today&quot;&gt;Ленивая загрузка видео и аудио стала веб-стандартом&lt;/a&gt; — Chrome 148: нативный lazy loading для &amp;lt;video&amp;gt; и &amp;lt;audio&amp;gt; через loading=&quot;lazy&quot;. Firefox и WebKit на подходе. Никаких IntersectionObserver — работает как для изображений.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms&quot;&gt;Как научить свой сайт быть видимым для LLM: 6 техник, которые работают&lt;/a&gt; — Evil Martians разобрали, что реально помогает LLM-агентам находить ваш контент: структурированные данные, llms.txt, чистый семантический HTML. Плюс 8 техник, которые не дают ничего. Трафик всё чаще приходит не только из Google, но и из Claude/Gemini — стоит подготовиться.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/endevco/aube&quot;&gt;aube — новый пакетный менеджер от автора mise&lt;/a&gt; — Drop-in замена npm с фокусом на raw performance и безопасные дефолты от Jeff Dickey (mise, rtx). Если устали ждать pnpm или нодят npm — стоит присмотреться.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://jakub.kr/writing/details-that-make-interfaces-feel-better&quot;&gt;Мелочи, которые делают интерфейсы приятнее&lt;/a&gt; — CSS-детали, из которых собирается полировка UI: сбалансированный text-wrap, concentric border-radius, tabular numbers, прерываемые CSS-переходы. Ничего революционного, но именно из таких штук складывается ощущение качественного продукта.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 30.04.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-04-30/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-04-30/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/element-scoped-view-transitions&quot;&gt;Element-scoped View Transitions в Chrome 147&lt;/a&gt; — Chrome 147 добавил element-scoped view transitions — теперь можно запускать переходы на конкретном контейнере, а не только на document. Позволяет анимировать список, не затрагивая сайдбар&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tsrx.dev/&quot;&gt;TSRX — духовный наследник JSX&lt;/a&gt; — Dominic Gannaway (React, Svelte, Inferno) анонсировал TypeScript Render Expressions — компилятор, трансформирующий новый синтаксис в идиоматичный React, Solid или Ripple. Поддерживает условный рендеринг с хуками, SFC и async boundaries&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/analogjs/analogjs-25-runtime-i18n-fast-compilation-mode-hierarchical-content-and-more-3ocj&quot;&gt;Аналог.js 2.5 — runtime i18n, fast compilation и hierarchical content&lt;/a&gt; — Вышла версия 2.5 метафреймворка Analog.js с runtime интернационализацией, режимом быстрой компиляции и поддержкой иерархического контента&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://trees.software/&quot;&gt;Trees — библиотека рендеринга файловых деревьев&lt;/a&gt; — Новая библиотека для рендеринга файловых деревьев от команды, работавшей над Preact и Wouter&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pracht.resynapse.dev/&quot;&gt;Pracht — full-stack Preact-фреймворк&lt;/a&gt; — Новый full-stack фреймворк на базе Preact от Daishi Kato, автора React Server Components articles&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gitbutler.com/&quot;&gt;GitButler — Git-клиент на стероидах&lt;/a&gt; — Скотт Чакон (сооснователь GitHub, автор Pro Git) привлёк $17M на GitButler — клиент с параллельными ветками, автосинхронизацией, автоматическими снимками и упрощённым управлением коммитами&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Dark0ne1/shakal-3000&quot;&gt;Шакализатор сайтов 3000&lt;/a&gt; — Сервис превращает любой современный сайт в Web 1.0: вырезает стили и скрипты, добавляет кислотный фон, гифки и переписывает ссылки. Open-source&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/&quot;&gt;Что знать в JavaScript к 2026 году&lt;/a&gt; — Обзор ECMAScript 2025: ленивые Iterator Helpers, методы для Set, RegExp.escape для безопасных регулярок. Фокус на применении в рантаймах, фреймворках и туллинге&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gomakethings.com/generative-colors-with-css/&quot;&gt;Генеративные цвета через CSS relative colors и oklch()&lt;/a&gt; — Практический гайд по созданию полных цветовых палитр из одного hex-кода с помощью oklch() и relative colors в CSS — с регулировкой chroma и lightness через calc()&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/7-view-transitions-recipes-to-try/&quot;&gt;7 рецептов для View Transitions в CSS&lt;/a&gt; — Готовые шаблоны анимаций для плавных переходов между страницами — от dissolve до продвинутых эффектов с учётом prefers-reduced-motion&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1KAi&quot;&gt;Building a UI Without Breakpoints&lt;/a&gt; — Как строить адаптивные интерфейсы без медиа-запросов — intrinsic layouts, fluid values и container queries вместо breakpoint-driven дизайна&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.joshwcomeau.com/animation/scroll-driven-animations/&quot;&gt;Scroll-Driven Animations — полное руководство от Josh Comeau&lt;/a&gt; — CSS animation-timeline: таймлайны прокрутки, диапазоны анимации (cover, contain, entry, exit), view-timeline и timeline-scope. Поддержка ~85%&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://shabalin.online/blog/css/pixel/&quot;&gt;Пиксель в CSS: почему 1px ≠ 1px на дисплее&lt;/a&gt; — Разбор того, почему CSS-пиксель может не совпадать с физическим пикселем — devicePixelRatio, субпиксельный рендеринг и fractional pixels&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gbbns.co/journal/accessibility-problem-isnt-design/&quot;&gt;Проблема доступности — это не дизайн, это инженерия&lt;/a&gt; — Почему full-stack инженеры и AI-generated код разрушают доступность: lack of semantic HTML, ARA cargo-culting, и 70% проблем, которые автоматические тесты не ловят. Фронтенд — это специализация&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://telegra.ph/Goryachij-kod-v-V8-chto-ehto-znachit-04-05&quot;&gt;Горячий код в V8: оптимизация на лету&lt;/a&gt; — Как V8 оптимизирует код от «холодного» до «горячего»: интерпретация, JIT-компиляция и влияние на бенчмарки, облачные функции и высоконагруженные проекты&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dbushell.com/2026/04/29/github-is-sinking/&quot;&gt;GitHub is sinking — время уходить?&lt;/a&gt; — Анализ деградации GitHub после Microsoft: падение аптайма, slop, проблемы с Copilot и AI-генерацией кода. Обзор альтернатив — Codeberg, Forgejo, Tangled, self-hosted&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 01.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-01/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-01/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/search-compression-dictionaries&quot;&gt;Google Search теперь использует Compression Dictionaries для ещё более быстрой загрузки&lt;/a&gt; — Google Search подключил Shared Dictionary Compression — браузер заранее загружает словарь сжатия, и страницы летают ещё быстрее. Бонус: URL-преобразования Google Search теперь работают через Service Worker, а не серверный редирект.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/companies/domclick/articles/1018180/&quot;&gt;Signal Forms в Angular v21 — реактивные формы на сигналах&lt;/a&gt; — Angular v21 вводит Signal Forms — реактивные формы, построенные на сигналах вместо Observable-стрима. Проще отслеживать изменения, меньше бойлерплейта, легче композиция. Domclick делится опытом миграции с Reactive Forms.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/ai-generated-ui-is-inaccessible-by-default/&quot;&gt;AI-generated UI is inaccessible by default&lt;/a&gt; — UI, сгенерированный через v0, shadcn/ui и аналоги, не проходит базовые проверки доступности — нет семантики, aria-атрибуты прописаны формально, клавиатурная навигация сломана. AI генерирует «визуально правильный» код, но для скринридеров он мёртв.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://piccalil.li/blog/three-stoic-principles-for-better-web-accessibility/&quot;&gt;Three stoic principles for better web accessibility&lt;/a&gt; — Патрик Лаукке переводит стоические принципы на язык a11y: фокус на контроле (вместо «клиент хочет так»), дисциплина семантики, и принятие ограничений как design constraint, а не бага.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.pope.tech/2026/04/01/making-emojis-and-icons-screen-reader-accessible/&quot;&gt;Эмодзи и иконки: как сделать их доступными для скринридеров&lt;/a&gt; — Эмодзи и иконки в UI часто невидимы для assistive technology. Разбираем &lt;code&gt;role=&quot;img&quot;&lt;/code&gt;, &lt;code&gt;aria-label&lt;/code&gt;, &lt;code&gt;aria-hidden&lt;/code&gt;, и когда emoji можно оставить, а когда замена обязательна.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raymondcamden.com/2026/04/30/animated-video-backgrounds-via-a-web-component-and-colorthief&quot;&gt;Animated video backgrounds через Web Component и ColorThief&lt;/a&gt; — Raymond Camden показывает, как сделать анимированный video background с динамической цветовой палитрой: Web Component оборачивает &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt;, а ColorThief извлекает доминирующий цвет для подстраивания UI под кадр.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://linear.app/now/output-isn-t-design&quot;&gt;Output isn&apos;t design&lt;/a&gt; — Linear о том, почему финальный пиксель — это не дизайн. Дизайн — это система решений, контракты, ограничения и компромиссы. AI может рисовать экраны, но не может проектировать систему.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 02.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-02/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-02/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tanstack.com/form/latest&quot;&gt;TanStack Form — новая библиотека форм от команды TanStack&lt;/a&gt; — Tanner Linsley представил TanStack Form — библиотеку для управления формами с сильной типизацией и фокусом на производительность. Поддерживает React, Vue, Solid, Angular и Svelte. Vanilla-подход с uncontrolled-инпутами и реактивной валидацией.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9773&quot;&gt;SSGOI — нативные переходы между страницами&lt;/a&gt; — SSGOI (Streaming Server-Generated Overlaid Interactions) добавляет плавные переходы между страницами поверх SSG — View Transitions + streaming. Переходы работают без клиентского роутинга.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/kobezzza_channel/1172&quot;&gt;Арифметика в TypeScript: зачем складывать числа на типах&lt;/a&gt; — Разбор системы типов TypeScript как инструмента для вычислений на уровне типов: литеральные типы, рекурсивные условные типы и кортежи для реализации арифметических операций.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9771&quot;&gt;Чем заменить !important в CSS&lt;/a&gt; — Разбор альтернатив !important: каскадные слои (@layer), грамотный порядок подключения стилей и трюк с specificity через изоляцию CSS. !important ломает каскад и делает отладку сложнее.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/front_end_dev/9772&quot;&gt;CSS subgrid для выравнивания контента из CMS без костылей&lt;/a&gt; — Subgrid позволяет наследовать сетку родителя в дочерних элементах — идеально для карточек с контентом из CMS, где нужно выровнять заголовки, текст и кнопки по одной линии.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hidde.blog/web-ai-breakout/&quot;&gt;Open web vs AI: what can W3C do?&lt;/a&gt; — Hidde de Vries рассказывает о breakout-сессии на W3C Advisory Committee: угрозы открытому вебу от LLM-краулеров, закрытых AI-платформ и walled gardens. Обсуждение возможных ответных мер стандартизацией.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/webstandards_ru/7722&quot;&gt;SVG с нуля — Кармен Ансио&lt;/a&gt; — Кармен Ансио предлагает смотреть на SVG не как на формат графики, а как на полноценный язык разметки для интерактивной визуализации с анимациями и скриптами.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 03.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-03/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-03/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/Abban/718a92afa27c676f135c342101988e39&quot;&gt;Как проверять NPM-зависимости на коммиты от Claude&lt;/a&gt; — Скрипт для Node.js, который проходит по node_modules, извлекает GitHub-репозитории из package.json и через API проверяет коммиты от Claude Code. Помогает оценить долю AI-сгенерированного кода в зависимостях проекта.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/unsleeping706/1315&quot;&gt;Разбор window.open — особенности попапов в разных браузерах&lt;/a&gt; — Глубокий разбор API window.open: как работают features (размеры, position, toolbar, scrollbars), блокировки попап-блокерами, различия поведения в Chrome, Firefox и Safari. Практические примеры и подводные камни.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://brennan.day/the-end-of-eleventy/&quot;&gt;Eleventy переименован в Build Awesome — новый Kickstarter&lt;/a&gt; — Статический генератор Eleventy сменил имя на Build Awesome. Команда Font Awesome перезапустила Kickstarter после отмены мартовской кампании — уже собрала $57k при цели $30k. David Bushell и Brennan Brown разбирают странную историю ребрендинга и проблемы с доставкой email.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 04.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-04/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-04/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dbushell.com/2026/04/29/github-is-sinking/&quot;&gt;GitHub is sinking — David Bushell&lt;/a&gt; — David Bushell разбирает деградацию GitHub после покупки Microsoft: падение uptime, AI-slop-коммиты которые DDoS-ят платформу, и массовый исход разработчиков (Ghostty, Mitchell Hashimoto, Armin Ronacher уходят на Codeberg/Forgejo). Напоминает что Git ≠ GitHub и что пора искать альтернативы.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.keithcirkel.co.uk/css-or-bs/&quot;&gt;CSS or BS? — интерактивный квиз на знание CSS-свойств&lt;/a&gt; — Игра от Keith Cirkel: 20 раундов, нужно угадать — реальное CSS-свойство или выдумка. В спецификации уже 600+ свойств, и некоторые звучат как фейк. Отличный способ проверить и освежить знания CSS.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 05.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-05/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-05/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tui.studio/&quot;&gt;TUIStudio — визуальный редактор для terminal UI&lt;/a&gt; — Figma-подобный визуальный редактор для TUI-приложений: drag-and-drop компонентов, live ANSI-превью, экспорт в 6 фреймворков. Alpha, Apple Silicon.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1KEO&quot;&gt;React Native animations: бенчмарк каждого подхода&lt;/a&gt; — Детальное сравнение всех подходов к анимациям в React Native: Reanimated, Animated API, Layout Animation, Moti. Результаты бенчмарков и рекомендации когда какой подход использовать.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/css-n-of-selectors-for-conditional-validation/&quot;&gt;CSS &lt;code&gt;n of&lt;/code&gt; Selectors — условная валидация форм&lt;/a&gt; — &lt;code&gt;:nth-child(n of selector)&lt;/code&gt; умеет считать элементы по условию — например, показать подсказку когда заполнено ровно 3 поля из 5. Работает через &lt;code&gt;:has()&lt;/code&gt; и &lt;code&gt;:checked&lt;/code&gt; для создания контр-зависимых UI без JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jim-nielsen.com/2026/small-html-pages/&quot;&gt;Много маленьких HTML-страниц вместо SPA&lt;/a&gt; — Jim Nielsen возвращаетсь к подходу «много маленьких HTML-страниц» вместо SPA-интеракций. Навигация между страницами через View Transitions API + CSS вместо JavaScript-раскрытий. Меню, модалки, табы — всё через multi-page navigation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/alexnozer_dev/365&quot;&gt;You don&apos;t know HTML: &amp;lt;fieldset&amp;gt;&lt;/a&gt; — Разбор &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt; — элемент для группировки FormControl&apos;ов с доступной подписью через &lt;code&gt;&amp;lt;legend&amp;gt;&lt;/code&gt;. Скринридеры зачитывают легенду, а фокус управляется на уровне группы.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://yatil.net/blog/screen-readers-are-not-testing-tools&quot;&gt;Скринридеры — не тестовый инструмент для проверки WCAG&lt;/a&gt; — Скринридеры помогают понять как пользователи с инвалидностью взаимодействуют с интерфейсом, но не заменяют автоматизированное тестирование WCAG. Это разные задачи с разными целями.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/startpoint_dev/216&quot;&gt;Что такое bfcache и как он работает&lt;/a&gt; — Back/Forward Cache — когда пользователь жмёт «назад», браузер мгновенно восстанавливает предыдущую страницу из памяти вместо полной перезагрузки. Как это работает, какие ограничения и как проверить что страница попадает в bfcache.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 06.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-06/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-06/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/new-in-chrome-148?hl=en&quot;&gt;New in Chrome 148&lt;/a&gt; — CSS name-only container queries, lazy loading для video/audio и Prompt API с доступом к on-device AI Gemini Nano&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hacks.mozilla.org/2026/05/trustworthy-javascript-for-the-open-web/&quot;&gt;Trustworthy JavaScript for the Open Web&lt;/a&gt; — WAICT — новая платформа для верифицируемой безопасности веб-приложений с криптографической привязкой кода к публичным манифестам&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebTransport_API&quot;&gt;Старший брат Web Socket&apos;ов&lt;/a&gt; — Web Transport API стал Baseline — быстрая двунаправленная связь поверх HTTP/3 с потоками и датаграммами&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/css-multi-column-layout-wrapping-features/&quot;&gt;Chrome 145: column-height и column-wrap&lt;/a&gt; — Новые свойства для multi-column layout позволяют строить 2D-потоки с вертикальным заполнением&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/reduce-friction-ai/&quot;&gt;Lattice — framework для AI-assisted programming&lt;/a&gt; — Компонуемые skills в three tiers (atoms, molecules, refiners) для battle-tested engineering disciplines&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/blog/releases/11.0&quot;&gt;pnpm 11 cuts the npm umbilical cord&lt;/a&gt; — pnpm 11 — чистый ESM, SQLite store, supply-chain protection по умолчанию и нативная реализация publish workflow&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/why-i-dont-chain-everything-in-javascript-anymore/&quot;&gt;Why I don&apos;t chain everything in JavaScript anymore&lt;/a&gt; — Отказ от excessive chaining в JavaScript из-за необходимости логирования между частями и ясности имен переменных&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.inngest.com/blog/hanging-promises-for-control-flow&quot;&gt;Висящие промисы как простой способ оборвать async-функцию&lt;/a&gt; — Использование &lt;code&gt;await new Promise(() =&amp;gt; {})&lt;/code&gt; для явной остановки async-функций без исключений&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2410.21333&quot;&gt;Сбрось цепи размышлений!&lt;/a&gt; — Исследования показывают, что Chain-of-Thought для простых задач не только увеличивает оверхед токенов, но и негативно влияет на результат&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 07.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-07/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-07/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://awesomeagents.ai/news/github-fake-stars-investigation/&quot;&gt;6 миллионов фейковых звёзд на GitHub&lt;/a&gt; — Исследователи из CMU проанализировали 20 терабайт метаданных GitHub и нашли ~6 млн фейковых звёзд на 18 617 репозиториях от 301 000 аккаунтов. Stars продаются открыто — от $0.03 до $0.85 за штуку, прямо через Telegram. Основной юзкейс — продвижение malware-репозиториев через фейковую социальную доказательность.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vercel-labs/portless&quot;&gt;Portless — стабильные .localhost URL вместо портов&lt;/a&gt; — Инструмент от Vercel Labs заменяет &lt;code&gt;localhost:3000&lt;/code&gt; на &lt;code&gt;myapp.localhost&lt;/code&gt;. На первом запуске генерирует локальный CA для HTTPS с HTTP/2, биндит порт 443 (с auto-elevate на macOS/Linux). Прокси стартует автоматически, назначает порт из диапазона 4000-4999 через &lt;code&gt;PORT&lt;/code&gt;, настраивает rewrite для TLD в &lt;code&gt;/etc/hosts&lt;/code&gt;. Работает с Next.js, Nuxt, Express из коробки; для Vite и Astro автоинжектит &lt;code&gt;--port&lt;/code&gt;. В monorepo один &lt;code&gt;portless.json&lt;/code&gt; покрывает все workspace-пакеты. Pre-1.0.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/valya_reads_issue/381&quot;&gt;Vite выходит из Vitest&lt;/a&gt; — В Vitest завелась дискуссия о разделении с Vite. Vitest работает над собственным transform pipeline и пользовательский комьюнити запрашивает поддержку альтернативных bundlers — Rolldown, Rspack. Два проекта, которые долго шли вместе, могут пойти разными путями: Vitest получит независимость от Vite-specific решений.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/animating-focus-with-view-transitions/&quot;&gt;Animating Focus with View Transitions&lt;/a&gt; — Cassidy Williams показывает как сделать «летающее» фокус-кольцо при Tab-навигации через View Transitions API — анимированное перемещение outline между элементами. WebAIM уже используют этот паттерн на своём сайте accessibility. Паттерн уважает &lt;code&gt;prefers-reduced-motion&lt;/code&gt; и автор честно отмечает, что это скорее эстетический эксперимент, чем a11y-необходимость.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://habr.com/ru/articles/1021414/&quot;&gt;sizes=&quot;auto&quot; для адаптивных изображений&lt;/a&gt; — Мэт Маркиз, бывший председатель Responsive Image Community Group, рассказывает историю борьбы с атрибутом &lt;code&gt;sizes&lt;/code&gt; за 10 лет. &lt;code&gt;sizes=&quot;auto&quot;&lt;/code&gt; вместе с &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; передаёт задачу выбора подходящего изображения браузеру — больше не нужно вручную описывать медиа-запросы и layout-размеры. Браузер сам определяет размер на основе layout и lazy-loading контекста.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 09.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-09/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-09/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/msosnovfeed/1387&quot;&gt;Rspack 2.0 — релиз бандлера на Rust&lt;/a&gt; — Вышел Rspack 2.0 — бандлер на Rust, прошедший путь от 100K еженедельных скачиваний до полноценного конкурента webpack. Ключевые изменения: улучшенный tree-shaking, native ESM, быстрый HMR и улучшенная совместимость с webpack-экосистемой.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.smashingmagazine.com/2026/05/designing-stable-interfaces-streaming-content/&quot;&gt;Designing Stable Interfaces For Streaming Content&lt;/a&gt; — Smashing Magazine разбирает дизайн UI для streaming-контента — чат-приложения, логи, транскрипции в реальном времени. Интерфейс растёт на глазах пользователя: layout shift&apos;ы, клавиатурная навигация, ARIA-атрибуты для динамического контента, обработка прерываний потока. 19-минутная статья с примерами кода.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://evilmartians.com/chronicles/from-react-to-native-web-with-nanotags-a-migration-that-saved-100kb&quot;&gt;От React к нативному вебу с nanotags — миграция, сэкономившая 100 Кб&lt;/a&gt; — Павел Гринченко (Web Standards) рассказывает про миграцию с React на нативный веб с библиотекой nanotags. Результат: минус 100 Кб бандла, уход от React-зависимостей и переход на Web Components + нативные DOM API. Доклад с HolyJS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/how-to-control-infinite-css-animations-part-1-of-2/&quot;&gt;Управление бесконечными CSS-анимациями — часть 1&lt;/a&gt; — Temani Afif показывает как управлять &lt;code&gt;infinite&lt;/code&gt; CSS-анимациями: ускорять, замедлять, плавно останавливать. Ключевой трюк — &lt;code&gt;animation-composition: add&lt;/code&gt; позволяет определить анимацию дважды (одна paused, вторая running) и при hover получить удвоенную скорость. Также разбираются &lt;code&gt;animation-timeline: scroll()&lt;/code&gt; для scroll-driven управления и способы плавного замедления через &lt;code&gt;cubic-bezier&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/alexnozer_dev/367&quot;&gt;ARIA APG: доверяй, но проверяй&lt;/a&gt; — Разбор проблем ARIA Authoring Practices Guide — официального ресурса по доступным паттернам. Несмотря на статус «официального», APG содержит ошибки и устаревшие рекомендации. Автор призывает не копировать паттерны blindly, а проверять их реальную работу со скринридерами и сверяться с актуальными спецификациями.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 10.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-10/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-10/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/we_use_js/5295&quot;&gt;Anti-corruption layer на фронте: зачем адаптеры между API и UI&lt;/a&gt; — Разбор паттерна Anti-Corruption Layer из DDD применительно к фронтенду: адаптеры между API-ответами и UI-компонентами изолируют бизнес-логику от изменений контракта бэкенда. Когда бэкенд меняет структуру ответа, меняется только адаптер, а не весь UI. Практические примеры и когда паттерн оверхед.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://alvaromontoro.com/blog/68095/supports-lies-css-says-yes-browsers-say-lol-no&quot;&gt;When CSS Says &apos;Yes&apos; but Browsers Say &apos;LOL No&apos;&lt;/a&gt; — Alvaro Montoro разбирает почему &lt;code&gt;@supports&lt;/code&gt; может лгать: вложенный &lt;code&gt;@supports&lt;/code&gt; внутри стилевого правила не наследует селектор, а работает глобально. Пример: &lt;code&gt;@supports (content: &quot; - &quot;)&lt;/code&gt; внутри &lt;code&gt;li::marker&lt;/code&gt; — Chrome и Firefox рендерят красный dash, а Safari красный круг, хотя &lt;code&gt;@supports&lt;/code&gt; говорит что свойство поддерживается. Проблема: &lt;code&gt;@supports&lt;/code&gt; проверяет свойство вообще, а не в контексте конкретного селектора.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 08.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-08/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-08/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/docs/ai/prompt-api?hl=ru&quot;&gt;Chrome 148: Prompt API на базе Gemini Nano&lt;/a&gt; — В Chrome 148 появился Prompt API — встроенный доступ к Gemini Nano прямо в браузере, оффлайн. Модель весит ~4 ГБ и подтягивается автоматически. Проблема: в каждом браузере своя модель, ответы непредсказуемы и могут меняться при обновлении. Сандартизация под вопросом.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hacks.mozilla.org/2026/05/behind-the-scenes-hardening-firefox/&quot;&gt;Mozilla укрепляет Firefox с помощью Claude Mythos&lt;/a&gt; — Mozilla описала, как с помощью Claude Mythos и agentic-харнесов нашла и исправила беспрецедентное количество уязвимостей в Firefox. AI-пайплайн для аудита безопасности: от поиска багов до триажа и шиппинга фиксов. Найдены sandbox-escape&apos;ы, UAF и 20-летние баги в XSLT.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://webkit.org/blog/17953/release-notes-for-safari-technology-preview-243/&quot;&gt;Safari Technology Preview 243&lt;/a&gt; — Много CSS-фиксов: &lt;code&gt;text-autospace&lt;/code&gt; с ключевым словом &lt;code&gt;insert&lt;/code&gt;, &lt;code&gt;contain: style&lt;/code&gt; для счётчиков цитат, исправления &lt;code&gt;@scope&lt;/code&gt; в web components, &lt;code&gt;:has(:empty)&lt;/code&gt;, &lt;code&gt;position-area&lt;/code&gt;, &lt;code&gt;clip-path: inset()&lt;/code&gt; и ускорение &lt;code&gt;:where&lt;/code&gt;/&lt;code&gt;:is&lt;/code&gt;. Плюс фиксы accessibility для VoiceOver.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API&quot;&gt;Navigation API — замена History API для SPA&lt;/a&gt; — Navigation API решает проблемы History API единым событием &lt;code&gt;navigate&lt;/code&gt; на &lt;code&gt;window.navigation&lt;/code&gt;. Один обработчик вместо россыпи слушателей, &lt;code&gt;intercept()&lt;/code&gt; вместо preventDefault, доступ к стеку через &lt;code&gt;entries()&lt;/code&gt;, встроенная отмена через &lt;code&gt;signal&lt;/code&gt;. Поддержка: Chrome 102+, Firefox 147+, Safari 26.2+.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://polypane.app/blog/using-safe-area-inset-to-build-mobile-safe-layouts/&quot;&gt;safe-area-inset для мобильных раскладок&lt;/a&gt; — Разбор env(safe-area-inset-*) для учёта вырезов, камер и плавающих кнопок на мобильных. Зачем нужен &lt;code&gt;viewport-fit=cover&lt;/code&gt;, как комбинировать отступы через &lt;code&gt;calc()&lt;/code&gt;, и новые &lt;code&gt;safe-area-max-inset-*&lt;/code&gt;, которые не меняются при скрытии адресной строки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bearnie.dev/&quot;&gt;Bearnie — компонентная библиотека для Astro + Tailwind&lt;/a&gt; — Набор компонентов для Astro и Tailwind CSS, которые добавляются через CLI и остаются под вашим контролем. Быстрый старт: &lt;code&gt;npx bearnie init&lt;/code&gt;. Можно расширять и собирать свою библиотеку поверх.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://griddyicons.com/&quot;&gt;Griddy Icons — open-source иконочный шрифт&lt;/a&gt; — Бесплатная open-source библиотека иконок с утилитарным стилем. Более 1000 иконок, SVG-формат, подходит для веб-проектов.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 11.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-11/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-11/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bcd-watch.igalia.com/weekly/2026-05-11.html&quot;&gt;BCD Changes Report: 138 изменений за неделю&lt;/a&gt; — Еженедельный отчёт Igalia: 138 изменений в Browser Compatibility Data. Из интересного — CSS container style queries с range syntax добавлены в Firefox, WebGPU createTexture descriptor поддержан всеми 3 движками, и множество обновлений по WebRTC и Web Audio API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ishadeed.com/article/range-syntax/&quot;&gt;The CSS Range Syntax — чище и понятнее media queries&lt;/a&gt; — Ahmad Shadeed разбирает range syntax в media queries: &lt;code&gt;@media (width &amp;gt;= 400px)&lt;/code&gt; вместо &lt;code&gt;@media (min-width: 400px)&lt;/code&gt;. Range-синтаксис устраняет частую ошибку с &lt;code&gt;min-width&lt;/code&gt;/&lt;code&gt;max-width&lt;/code&gt; когда значения не стыкуются, делает код читаемее. Поддерживается во всех браузерах.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jim-nielsen.com/2026/out-with-js-in-with-html/&quot;&gt;Out With the JS, In With the HTML — Jim Nielsen&lt;/a&gt; — Jim Nielsen продолжает серию про «много маленьких HTML-страниц»: заменил web component для ресайза иконок на обычные HTML-страницы с разными URL (?size=sm/md/lg). Раньше — JS-компонент с кастомными атрибутами, теперь — навигация через View Transitions. Сайт полностью pre-rendered, и JS был единственным исключением — теперь его нет.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss&quot;&gt;Avoid using CDATA in RSS — почему CDATA ломает фиды&lt;/a&gt; — Разбор почему &lt;code&gt;&amp;lt;![CDATA[...]]&amp;gt;&lt;/code&gt; в RSS/Atom — плохая практика: невозможно экранировать &lt;code&gt;]]&amp;gt;&lt;/code&gt; внутри блока, ломается при вложенности, парсеры обрабатывают непредсказуемо. Альтернатива — XML-escaping (&lt;code&gt;&amp;amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;amp;amp;&lt;/code&gt;) или Atom с namespace. Актуально для авторов RSS-фидов и разработчиков парсеров.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 12.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-12/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-12/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;🩸 Пульс веб-платформы 12.05.2026&lt;/h1&gt;
&lt;h2&gt;Новости&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://webkit.org/blog/17938/webkit-features-for-safari-26-5/&quot;&gt;WebKit для Safari 26.5&lt;/a&gt; — Новый :open pseudo-class — единый стиль для :open-состояний &amp;lt;dialog&amp;gt;, &amp;lt;details&amp;gt;, &amp;lt;select&amp;gt; и &amp;lt;input&amp;gt;. random() получил element-scoped ключевое слово для пер-элементного рендома. Color-interpolation для SVG-градиентов — линейный RGB вместо sRGB. Anchor Positioning и Scroll-driven animations — полдюжины фиксов. Итого 63 багфикса — крупнейший маевый релиз WebKit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Проекты&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/DetachHead/rebased&quot;&gt;Rebased — Git-клиент из IntelliJ Community&lt;/a&gt; — Open-source (Apache 2.0) графический Git-клиент на базе IntelliJ Community Edition. Продвинутый Diff, интерактивный rebase, Git Worktree, полноценный VCS. Для тех, кто скучает по JetBrains-инструментам, но не хочет платить за full IDE.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://joanleon.dev/en/chrome-devtools-mcp-cli/&quot;&gt;Chrome DevTools MCP CLI — LLM-аудит страниц&lt;/a&gt; — Инструмент, который даёт LLM доступ к Chrome DevTools через MCP-протокол. Вместо Playwright + Lighthouse — прямая работа с Chrome Insights для Core Web Vitals. Аудит получается заметно детальнее, а по токенам — примерно то же самое.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Статьи, мнения, туториалы&lt;/h2&gt;
&lt;h3&gt;JS/TS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tc39/proposal-composites&quot;&gt;TC39 Composites: структурное сравнение объектов&lt;/a&gt; — Новый TC39-проposal вместо Records &amp;amp; Tuples — composites. Позволяет сравнивать объекты по содержимому: Composite({ x: 1, y: 4 }) === Composite({ x: 1, y: 4 }) → true. Можно использовать как ключи в Map/Set. Performance-оптимизированнее, чем Records &amp;amp; Tuples, но до языка ещё далеко — активно обсуждают.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;CSS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://caniuse.com/mdn-css_at-rules_container_container-query_optional&quot;&gt;Контейнерные запросы стали проще&lt;/a&gt; — container-type теперь опционален — достаточно задать container-name, и браузер сам определит inline-size. Меньше boilerplate, меньше ошибок.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://paulmakeswebsites.com/writing/shadcn-radio-button/&quot;&gt;Shadcn-радио: зачем 260 строк для &amp;lt;input type=radio&amp;gt;&lt;/a&gt; — Paul Makes Websites разбирает, почему Shadcn оборачивает простую радио-кнопку в 3 импорта, 45 классов Tailwind и 215 строк Radix UI-кода. Решение с appearance: none + ::before работает во всех браузерах и в 10 раз короче. Радикальный взгляд на over-engineering-компонентов.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Performance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/startpoint_dev/217&quot;&gt;stale-while-revalidate: невидимый кэш для мгновенных ответов&lt;/a&gt; — Полезный разбор HTTP-заголовка Cache-Control: stale-while-revalidate. Ресурс отдаётся мгновенно из устаревшего кэша, пока в фоне тянется обновление. Идеально для нехешированной статики и API-ответов. Пользователь видит старую версию максимум на 30 секунд — незаметно.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 13.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-13/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-13/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/webauthn-immediate-ui?hl=en&quot;&gt;Chrome 149: Immediate UI mode для паролей и passkeys&lt;/a&gt; — Браузер теперь может сам предложить сохранённые учётки при клике на кнопку входа — без редиректа на отдельную страницу и ручной формы. Origin Trial уже отыгрался, API стабилизировалась (с изменением: теперь нужен uiMode: &apos;immediate&apos; вместо mediation: &apos;immediate&apos;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://vite.dev/blog/announcing-vite8&quot;&gt;Vite 8: esbuild и Rollup уходят, приходит Rust-бандлер&lt;/a&gt; — Vite 7 разделил пайплайн: esbuild для dev-зависимостей, Rollup для продакшн-бандла. Каждый движок со своей семантикой модулей и tree-shaking. Восьмёрка убирает оба и ставит на их место единый Rust-бандлер — одна семантика, один бэкенд.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/frontend_pasta/819&quot;&gt;TanStack: 84 npm-пакета скомпрометированы через CI/CD&lt;/a&gt; — Socket обнаружили Malware Mini Shai-Hulud в пакетах @tanstack. Злоумышленники пролезли через GitHub Actions (pull_request_target + OIDC-токены) и автоматически запускались через npm lifecycle hooks. Заражены даже @tanstack/react-router с 12 млн загрузок/неделю. Покрути секреты, если ставили.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/cherkashindev/486&quot;&gt;Зачем ИИ использует void в JavaScript и когда это оправдано&lt;/a&gt; — Короткий разбор оператора void: он вычисляет выражение и всегда возвращает undefined. В контексте ИИ-генерации кода void чаще всего используют, чтобы показать — промис запускается «в фоне» без ожидания результата. Полезно знать, чтобы не путать с C#.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/repeating-square-dots-backgrounds-in-css/&quot;&gt;Рисуем квадратные точки через conic-gradient (Chris Coyier)&lt;/a&gt; — Chris Coyier показывает, как рисовать паттерн из квадратных точек без растровых картинок — одним conic-gradient с жёсткими стоп-цветами. Три четверти области прозрачная, последняя четверть — точка. background-size + background-repeat = повторяющийся узор. Проще, чем линейные градиенты-маски.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 14.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-14/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-14/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm/&quot;&gt;TC39 ShadowRealm — изолированные контексты JS на стадии 2.7&lt;/a&gt; — Предложение TC39 позволяет запускать JS в изолированных контекстах с собственными глобальными объектами — в том же потоке, что и основной код. Два метода — evaluate() и importValue() — достаточно, чтобы изолировать сторонние скрипты, рекламу и тесты без загрязнения main context. Пока нет в браузерах.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/sergeysova/1161&quot;&gt;@effector/router v1.0.0 — роутер на стыке atomic-router и argon-router&lt;/a&gt; — Effector core team объединили идеи atomic-router и argon-router в новый @effector/router. Предыдущие роутеры больше не поддерживаются. Для миграции — заменить зависимости на @effector/router@v1.0.0-rc.0 и @effector/router-react@v1.0.0-rc.0, плюс использовать historyAdapter(history) из-за ломающих изменений.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/TanStack/router/issues/7383&quot;&gt;Supply chain атака на @tanstack — 84 вредоносных пакета в npm&lt;/a&gt; — Злоумышленник опубликовал 84 вредоносные версии в 42 пакетах @tanstack через цепочку уязвимостей: pull_request_target в GitHub Actions → отравление pnpm-кэша → кража OIDC-токена из памяти раннера. Payload собирал AWS/GCP/K8s токены, SSH-ключи и самораспространялся как червь. Пакеты помечены, но стоит проверить проекты на наличие заражённых версий.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://audio.raphaelsalaja.com/&quot;&gt;@web-kits/audio — декларативный аудиосинтез для веба&lt;/a&gt; — Определяй звуки как plain-объекты и проигрывай одной функцией. TypeScript, React-хуки, CLI для пакования sound patches — всё включено. Звучит как nice DX-утилита для тех, кто хочет кастомные звуки без Web Audio API boilerplate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/johnsoncodehk/reactive-framework-test-suite&quot;&gt;reactive-framework-test-suite — бенчмарки-кросс-тесты реактивности&lt;/a&gt; — Ментейнер реактивности Vue запустил набор тестов корректности для реактивных библиотек — это не бенчмарки, а проверка edge cases. Почти все библиотеки недопроходят десятки тестов. Реатом провалился на одном: рекурсивное обновление computed без явного break-условия. Автор считает, что библиотека должна останавливаться сама; разработчики Реатома — что это ответственность пользователя.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/kobezzza_channel/1187&quot;&gt;Thenable-трюки: ленивые вычисления через совместимость с Promise&lt;/a&gt; — Thenable-объекты — не только про бэкенд-совместимость с Promise. Автор показывает, как создать контейнер ленивых вычислений, который лениво считает значение при первом await, кеширует результат и поддерживает монадический bind для цепочек отложенных операций. Классический пример: инициализация конфига из IndexedDB, которая происходит только когда кто-то реально это запрашивает.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/callout-ui-with-css-offset-border/&quot;&gt;Callout UI с CSS offset-path и border-линиями&lt;/a&gt; — Как сделать callout-элементы (текстовые блоки с указывающей линией) без SVG и canvas — чистый CSS. offset-path: border-box приклеивает текстовый бокс к рамке контейнера, а border-box + border-width рисует leader-line. Skew для диагональных линий, box-shadow для теневых, corner-shape для скруглённых углов. Всё анимируется.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 15.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-15/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-15/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/oven-sh/bun/pull/30412&quot;&gt;Bun PR #30412 — 16 000 файлов за один раз&lt;/a&gt; — Ментейнеры Bun запушили PR с 16 000 изменений в одном пулл-реквесте. Меньше 200 строк — это повод ворчать на коллегу, но когда ты в команде Bun — это повод уважать ментейнеров.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/kobezzza_channel/1188&quot;&gt;Promise — не универсальный примитив для асинхронщины&lt;/a&gt; — Разбор, где Promise не подходит: нет поддержки отмены, нет приоритетов, нет backpressure. Рассмотрены альтернативы для конкретных паттернов — от абортных задач до потоковой обработки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/frontend_pasta/820&quot;&gt;shape-outside — текст обтекает произвольные формы&lt;/a&gt; — shape-outside позволяет тексту обтекать circle, ellipse, polygon и gradient-определённые формы. В отличие от float, не ломает flow — контент естественно обтекает, а не сползает под плавающую область.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 16.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-16/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-16/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://denodell.com/blog/browsers-treat-big-sites-differently&quot;&gt;Браузеры по-другому относятся к крупным сайтам&lt;/a&gt; — Den Odell показывает, как Safari (Quirks.cpp) и Firefox (about:compat) содержат тысячи строк специфичного кода для TikTok, Netflix, Reddit и других популярных сервисов. Иногда — подмена User Agent на Chrome. Доминирование Chrome превращает интероп в зеркало эпохи IE.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://daverupert.com/2026/05/small-language-models-in-the-browser/&quot;&gt;Small language models в браузере: дилемма стандартизации&lt;/a&gt; — Dave Rupert разбирает Prompt, Summarizer и Rewriter APIs (Chrome + Edge), соглашается с Mozilla о проблемах calcification и нейтральности моделей, но видит пользу в локальных SLM — приватность, автономность, бесплатность. Аргументы за и против, и честная оценка: веб-платформа получает недетерминированный engine поверх HTML/CSS/JS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/kobezzza_channel/1191&quot;&gt;Синхронные промисы&lt;/a&gt; — Полезное наблюдение: даже финализированные промисы через микротаску возвращают значение — и это может убивать perf в горячих путях. Автор показывает, как написать Thenable-обёртку, которая для терминальных состояний отдаёт значение синхронно. Хороший фолк для понимания event loop и Promise internals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Performance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/frontendhubvk/260&quot;&gt;Speculation Rules API — браузер рендерит следующую страницу ещё до клика&lt;/a&gt; — Подробный разбор API, который позволяет браузеру фоново prefetch или prerenderить страницы. Два режима, параметр eagerness, кейс Shopify (до 180ms улучшения LCP на P95) и ловушка prerender с двойными запросами аналитики. Поддержка: Chrome 109+, Firefox prefetch обещан, Safari — только за флагом.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 17.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-17/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-17/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/artalog/1938&quot;&gt;Raycast переехал со Swift на React&lt;/a&gt; — Крупный productivity-инструмент переписал нативное macOS-приложение на веб-стек (React). Хайлайты из технического поста: архитектурные решения, производительность, бэкенд для веб-компонентов. Артем Арутюнян (@artalar) разбирает, стоило ли оно того — читать в исходнике.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/ai-agent-site-ux&quot;&gt;Build agent-friendly websites&lt;/a&gt; — Омар Мор из Google о том, как сделать сайты, которые AI-агенты читают без боли. Accessibility tree как карта для агентов, а не визуальный шум — DOM-иерархия, role/aria-атрибуты вместо CSS-анимаций и hover-эффектов. Проще говоря: чем чище семантика, тем точнее агент тебя поймёт.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web-platform-dx.github.io/web-features-explorer/features/meta-refresh&quot;&gt;Meta refresh&lt;/a&gt; — Новая страница в Web-features Explorer: &amp;lt;meta http-equiv=&quot;refresh&quot;&amp;gt; и Refresh HTTP header. Baseline Widely Available — работает во всех браузерах с 2008 года. Полезно как справочник по старому, но вечно живому мета-тегу.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 18.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-18/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-18/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontend-weekly.ru/weekly-digest-46/&quot;&gt;Safari 26.5: :open, Origin API, SVG-улучшения&lt;/a&gt; — Apple обновила Safari — теперь есть :open для input-элементов, Origin API для проверки домена, доработки random() и улучшения SVG. WebKit продолжает догонять стандарты, особенно после заморозки разработки на год назад.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://thesvg.org/&quot;&gt;theSVG — 6030+ брендированных SVG-иконок&lt;/a&gt; — Открытая библиотека SVG-иконок от известных брендов с npm-пакетом, React/Vue/Svelte компонентами, CLI, CDN и даже MCP-сервером. Если нужны качественные иконки Apple, Google или Notion — тут они есть.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1KSC&quot;&gt;Security in React Applications&lt;/a&gt; — Разбор типичных уязвимостей React-приложений: XSS, unsafe rendering, небезопасные паттерны аутентификации. Хороший чек-лист для code review.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 19.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-19/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-19/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/obsjs/obs&quot;&gt;Obs.js — адаптация сайта под сеть, батарею, CPU и память&lt;/a&gt; — Библиотека, которая подстраивает поведение сайта под реальные условия устройства: медленная сеть или садящаяся батарея → отключаешь анимации и тяжёлые ресурсы. Живой responsive design по ощущениям, а не по ширине экрана.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://george.mand.is/2026/05/my-favorite-bugs-invalid-surrogate-pairs/&quot;&gt;Unicode, emojis и surrogate pairs&lt;/a&gt; — George Mandis объясняет, почему str.slice(0,1) или str[0] ломаются на эмодзи из-за surrogate pairs. Простой код, который кажется безопасным, но ломается на Unicode. Фундаментальный баг, который нужно знать.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static&quot;&gt;AbortSignal.timeout&lt;/a&gt; — MDN: AbortSignal.timeout(ms) позволяет задать таймаут для fetch-запросов без обёрток. Вызывается fetch(url, { signal: AbortSignal.timeout(3000) }) — и готово.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ishadeed.com/article/css-round/&quot;&gt;Round, and round, and round... CSS round()&lt;/a&gt; — Ahmad Shadeed о функции round() в CSS. Зачем нужно округлять плавающие значения вроде 23.333px — и когда это реально удобно. floor(), ceil(), и все случаи применения.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/web-features-cli&quot;&gt;web-features-cli&lt;/a&gt; — Новый CLI от W3C WebDX Community Group: browser support, baseline status и ссылки на спецификации — прямо из терминала. Для тех, кто живёт в командной строке.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 20.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-20/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-20/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151&quot;&gt;Firefox 151 для разработчиков&lt;/a&gt; — Шведская лошадка подбросила сразу несколько фич: &lt;code&gt;position-anchor: normal&lt;/code&gt; для якорей, &lt;code&gt;@container style()&lt;/code&gt; в условных запросах, Document Picture-in-Picture API для окон «поверх всего», Web Serial API на десктопе, &lt;code&gt;CanvasRenderingContext2D.lang&lt;/code&gt;, &lt;code&gt;keyboardLock&lt;/code&gt; в &lt;code&gt;requestFullscreen()&lt;/code&gt; и экспериментальное &lt;code&gt;field-sizing&lt;/code&gt; для форм. Хороший апдейт, если пишешь под Firefox.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/css_mind/111&quot;&gt;Next.js cssnano ломает типизацию CSS @property&lt;/a&gt; — Если объявить &lt;code&gt;@property --var { syntax: &quot;&amp;lt;percentage&amp;gt;&quot;; initial-value: 0% }&lt;/code&gt;, Next.js (через встроенный cssnano) оптимизирует &lt;code&gt;0%&lt;/code&gt; в &lt;code&gt;0&lt;/code&gt; — и тип теряется. Бордеры: писать &lt;code&gt;0.0%&lt;/code&gt; или менять на &lt;code&gt;&amp;lt;length-percentage&amp;gt;&lt;/code&gt;, пока Next не обновит cssnano. Полезна отладка для тех, кто активно использует custom properties.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/border-shape/&quot;&gt;border-shape (Una Kravets) — кастомные формы бордеров на чистом CSS&lt;/a&gt; — Раньше, чтобы нарисовать пузырь речи или сердечко, приходилось резать бордеры через &lt;code&gt;clip-path&lt;/code&gt;. Теперь — &lt;code&gt;border-shape&lt;/code&gt;. Новый CSS primitive задаёт собственную форму для бордера элемента. &lt;code&gt;clip-path()&lt;/code&gt; заслужила свой отдых, и &lt;code&gt;border-shape&lt;/code&gt; — её достойная замена для задач, где нужен и бордер, и кастомная форма.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/htmlshit/4098&quot;&gt;text-fit — текст в контейнере без vw/vh хаков&lt;/a&gt; — Скоро в CSS (в рамках CSS Text Module) появится свойство &lt;code&gt;text-fit&lt;/code&gt;, которое позволит вписать текст в контейнер без скриптов и костылей с &lt;code&gt;vw&lt;/code&gt;/&lt;code&gt;vh&lt;/code&gt;. Пока за флагом в Chrome, но само обсуждение в CSS Working Group уже идёт — похоже, до стандарта дело дойдёт.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/htmlshit/4097&quot;&gt;CSS Custom Highlight API + поиск: подсветка результатов прямо в тексте&lt;/a&gt; — CSS Custom Highlight API используется не только для подсветки кода — его можно комбинировать с поиском по тексту страницы. Браузер создаёт highlight ranges, а CSS рисует подсветку через &lt;code&gt;::highlight()&lt;/code&gt;. Похоже на то, как работают поисковые подсвечивания в редакторах, но — нативно, через CSS, без JS-обвязки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/declarative-partial-updates?hl=en&quot;&gt;Chrome: автоматическая замена HTML-шаблона на контент через &lt;code&gt;&amp;lt;?marker&amp;gt;&lt;/code&gt; и &lt;code&gt;&amp;lt;template for&amp;gt;&lt;/code&gt;&lt;/a&gt; — Команда Chrome предлагает API для стриминга: ставишь &lt;code&gt;&amp;lt;?marker name=&quot;placeholder&quot;&amp;gt;&lt;/code&gt; в HTML, а потом — &lt;code&gt;&amp;lt;template for=&quot;placeholder&quot;&amp;gt;&lt;/code&gt; с реальным контентом. Браузер сам подменяет шаблон на данные, когда они готовы. Работает и со стримингом, и с JS-ответами. Удобно для progressive enhancement и уменьшения perceived latency.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 23.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-23/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-23/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://storybook.js.org/blog/storybook-10-4/&quot;&gt;Storybook 10.4&lt;/a&gt; — AI-агенты теперь могут автоматически настраивать Storybook: анализируют структуру проекта, генерируют конфиг, моки (MSW), stories и interaction-тесты для до 10 компонентов. Sidebar теперь фокусируется на сториях, затронутых изменениями кода. Первая классная поддержка TanStack React.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tanstack.com/start/latest/docs/framework/react/guide/deferred-hydration&quot;&gt;TanStack Start — Deferred Hydration&lt;/a&gt; — TanStack Start позволяет лениво гидратировать части страницы: server-render остаётся, но клиент не тратит время на гидратацию всего документа. Deferred hydration откладывает гидратацию boundary и выносит children в отдельный JS-чанк. Экспериментально, но уже можно попробовать.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/react-server-components-in-tanstack/&quot;&gt;React Server Components в TanStack&lt;/a&gt; — Frontend Masters разбирает RSC в TanStack Start — радикально другая реализация, чем в Next.js. RSC-компоненты бегут только на сервере, ждут fetch/DB, код не попадает в клиент, отдаётся только markup. Автор идёт от первых принципов, без сравнения 1:1 с Next.js.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/&quot;&gt;Moving away from Tailwind, and learning to structure my CSS&lt;/a&gt; — Julia Evans переехала с Tailwind на semantic HTML + vanilla CSS. Выводы: 8 лет Tailwind научили её системному мышлению — она уже знает паттерны управления layout, цветами, компонентами. На чистом CSS это проще и приятнее, чем она думала.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.npmjs.com/staged-publishing/&quot;&gt;Staged publishing for npm packages&lt;/a&gt; — npm добавил approval-шаг перед публикацией пакетов. Вместо npm publish → npm stage publish — пакет попадает в staging-зону. Мейнтейнер должен одобрить с 2FA, только потом пакет становится публичным. Требует npm CLI 11.15.0+ и Node 22.14.0+.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lirantal/npq&quot;&gt;npq — audit npm packages before install&lt;/a&gt; — npq позволяет проверять пакеты npm перед установкой: сканирует snyk.io на CVE, проверяет metadata и integrity. Команда: npx npq install express --dry-run. Для тех, кто устал гадать, что залезет в node_modules.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 22.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-22/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-22/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hacks.mozilla.org/2026/05/web-serial-support-in-firefox/&quot;&gt;Announcing Web Serial Support in Firefox&lt;/a&gt; — Firefox получил Web Serial API — теперь можно общаться с последовательными устройствами (Arduino, RFID-считыватели) прямо из браузера. Серьёзный шаг для IoT-разработки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&quot;&gt;Framework-agnostic design systems: a practical approach to web components&lt;/a&gt; — Как строить дизайн-системы без привязки к React/Vue/Svelte. Web Components как универсальный слой — компоненты, токены, паттерны, которые работают везде.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://survey.devographics.com/en-US/survey/state-of-css/2026&quot;&gt;State of CSS 2026&lt;/a&gt; — Devographics запустили ежегодный опрос о состоянии CSS. Статистика использования, тренды, фичи — всё, что CSS-разработчики должны знать в 2026 году.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tenphi.me/blog/why-i-spent-years-trying-to-make-css-states-predictable/&quot;&gt;Why I spent years trying to make CSS states predictable&lt;/a&gt; — Длинный путь автора к предсказуемым CSS-состояниям. Почему , ,  — это не просто псевдоклассы, а система состояний, и как сделать её надёжной.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 24.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-24/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-24/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/temaProg/131&quot;&gt;React под капотом: что изменилось за 4 года&lt;/a&gt; — Автор возвращается к старой лекции по React из ШРИ (92к просмотров) и показывает, что из классической модели Virtual DOM ещё что-то держится, а что уже слишком грубо. Основной сдвиг: React перестал быть просто библиотекой для описания UI и стал runtime, который управляет приоритетами. Батчинг, Suspense, Server Components, React Compiler — всё это не просто новые фичи, а новая философия планирования работы UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web-platform-dx.github.io/web-features-explorer/features/container-style-queries&quot;&gt;Baseline: container-style-queries, rlh, lh, user-activation&lt;/a&gt; — Web Features Explorer от Web Platform DX: container-style-queries вошли в Newly Available, а rlh, lh и user-activation — в Widely Available. Четыре веб-API, которые теперь стабильны и доступны в основных браузерах — пора переходить от экспериментов к продакшену.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 21.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-21/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-21/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;🩸 Пульс веб-платформы 21.05.2026&lt;/h1&gt;
&lt;h2&gt;Новости&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wicg.github.io/html-in-canvas/&quot;&gt;WICG пропозал: HTML-in-Canvas — рендер DOM-элементов прямо в canvas&lt;/a&gt; — Новое предложение от WICG: можно вставлять DOM-элементы в canvas через drawElementImage(), не рисовать контент вручную пикселями. Элементы с атрибутом layoutsubtree становятся дескрипторами для рендера — это решает вечную проблему canvas: плохой инклуд текста, нулевая доступность и сложная локализация. Уже работает за флагом в Chromium.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/live/OQK9XHTiqVw&quot;&gt;Google I/O — What&apos;s new in Web UI: новые браузерные фичи для фронтенда&lt;/a&gt; — Google I/O 2026 — доклад про новые веб-UI фичи в Chrome. Как обычно, Google задают тон для всей индустрии. Через несколько месяцев это всё окажется в хромовских девайсах у миллионов.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 25.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-25/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-25/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bcd-watch.igalia.com/weekly/2026-05-25.html&quot;&gt;BCD Changes Report, Mon May 25 2026&lt;/a&gt; — Еженедельный отчёт об изменениях в Browser Compatibility Data от Igalia. Новые фичи, обновления совместимости, статус экспериментов в браузерах — всё что изменилось в веб-совместимости за неделю.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=x3qCVaKKxHY&quot;&gt;Как фронтендеры подключали LLM к продуктам (док+демо)&lt;/a&gt; — Андрей Мелихов разбирает практические подходы к интеграции AI-ассистентов в веб-интерфейсы: от базового промпт-инжиниринга до обработки контекста пользователя и валидации AI-ответов. К докладу — open-source демо, которые можно пощупать руками.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/melikhov_dev/403&quot;&gt;Попытки подключить IDE к AI-агентам через ACP — и почему не зашло&lt;/a&gt; — Андрей Мелихов делится опытом, почему попытки подключиться из IDE к агентам через ACP не зашли. Практический разбор с реальными проблемами и выводами для тех, кто рассматривает AI-агентов в рабочей среде.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1KXU&quot;&gt;Лучшее fluid-скейлинг через CSS round()&lt;/a&gt; — CSS-функция &lt;code&gt;round()&lt;/code&gt; позволяет задавать размеры, которые плавно масштабируются, но при этом «прилипают» к чётким значениям на брейкпоинтах. В отличие от &lt;code&gt;calc()&lt;/code&gt; с &lt;code&gt;clamp()&lt;/code&gt;, здесь нет глитч-переходов — размер меняется предсказуемо, без промежуточных дробных пикселей на ретина-дисплеях. Идеально для типографики и отступов.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 26.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-26/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-26/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tw93/pake&quot;&gt;Pake — оборачиваем сайты в нативные приложения за &amp;lt; 5 МБ&lt;/a&gt; — Rust-утилита превращает любой сайт в нативное app без Electron и тяжелых браузеров. Бинарь может весить меньше 5 МБ против минимум 100 МБ у Electron. Один CLI-команда — и готовое приложение.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/your-node-js-streams-arent-backpressuring-theyre-silently-eating-your-memory/&quot;&gt;Node.js Streams: почему твой бэкенд ест память&lt;/a&gt; — Streams не защищают от утечек памяти по умолчанию — &lt;code&gt;highWaterMark&lt;/code&gt; в Node 22 вырос до 64КБ, а .write() всегда возвращает true, если не проверять boolean. Статья-детектив про OOM-краш, который прошёл код-ревью полгода назад: .write() вызывается без проверки return value, буфер не ограничивается, поды улетают в OOM при большой нагрузке.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.mozilla.ai/the-interface-is-no-longer-the-product/&quot;&gt;The interface is no longer the product&lt;/a&gt; — Агент-нативные приложения строятся вокруг структурированного источника истины, а не UI. Слайды, таблицы и документы — это рендеры, не суть. Статья от Mozilla о том, почему следующий шаг в продуктивности — не агенты, которые кликают по вашему интерфейсу, а приложения, где интерфейс — лишь одно из представлений.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1KYs&quot;&gt;Когда использовать shorthand-свойства в CSS, а когда нет&lt;/a&gt; — Полезный гайд по использованию shorthand-свойств в CSS — когда они улучшают читаемость и намерение, а когда только мешают.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://evilmartians.com/chronicles/600-million-people-write-right-to-left-2-fixes-your-app-needs&quot;&gt;RTL для 600 млн: две правки для вашего приложения&lt;/a&gt; — 600+ миллионов людей пишут справа налево. Два практических фикса: &lt;code&gt;dir=&quot;auto&quot;&lt;/code&gt; для полей свободного ввода (браузер сам определит направление) и &lt;code&gt;dir=&quot;rtl&quot;&lt;/code&gt; на &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; с логическими CSS-свойствами — &lt;code&gt;margin-inline-start&lt;/code&gt;, &lt;code&gt;padding-inline-end&lt;/code&gt; — для полностью локализованных интерфейсов. Ни JavaScript, ни костылей.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Инструменты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/yossTheDev/removerized&quot;&gt;removerized — удаление фона и апскейл прямо в браузере&lt;/a&gt; — Open-source AI image toolkit на ONNX Runtime Web + WebGPU. Модели запускаются client-side — без серверов, без отправки фото на бэкенд. Удаление фона, апскейл, пакетная обработка, офлайн-режим.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 27.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-27/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-27/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/declarative-partial-updates&quot;&gt;Декларативные частичные обновления HTML&lt;/a&gt; — Барри Поллард и Ноам Розенталь предложили две идеи для веб-платформы: инструкции &amp;lt;?marker&amp;gt; и &amp;lt;?start&amp;gt;/&amp;lt;?end&amp;gt; в паре с &amp;lt;template&amp;gt; позволяют серверу вставлять HTML в нужные места без последовательной доставки. Плюс новые JS-методы setHTML(), appendHTML() и streamHTML() — единое API для частичных обновлений. Полифилы уже на npm.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nerdy.dev/relative-alpha?utm_source=rss&quot;&gt;CSS relative alpha&lt;/a&gt; — Новая функция alpha(from color / calc(alpha * .25)) в CSS Color Level 5 позволяет вычислять альфа-канал относительно другого цвета. Например, border-color: alpha(from hotpink / calc(alpha * .25)) — прозрачность на основе цвета источника.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/temaProg/134&quot;&gt;Как современный React думает о приоритетах&lt;/a&gt; — Тёма пересмотрел свой подход к объяснению React: вместо 60 FPS как отправной точки он теперь начинает с вопроса «что пользователь должен увидеть сразу, а что может подождать». Fiber — не только про скорость, но про то, какую работу делать в фоне, какую прервать, где показать старый экран. Хороший материал для mid+ разработчиков.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/cherkashindev/489&quot;&gt;for await...of в JavaScript: практическое объяснение&lt;/a&gt; — Чёркашин разобрал for await...of на реальном примере: экспорт постов из Telegram в Astro-блог. Ключевой момент — цикл работает последовательно, а не параллельно. Идеально для пагинации и потоковой загрузки данных.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.joshwcomeau.com/animation/css-vs-javascript/&quot;&gt;CSS vs JavaScript: где реально проседает производительность&lt;/a&gt; — Josh Comeau сравнил CSS keyframes, чистый JS с requestAnimationFrame, Motion и GSAP на одном демо. Главный инсайт: JS-анимации тормозят не из-за вычислений, а потому что работают на main thread. Motion обходит это через Web Animations API. А в целом CSS стал достаточно мощным, что либы для анимации теперь нужны реже.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 28.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-28/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-28/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://issues.chromium.org/issues/508306805&quot;&gt;Chrome 147 — регрессия с колёсиком мыши на number-инпутах&lt;/a&gt; — В Chrome 147 сломалась привычная защита: если навест курсор на input[type=&quot;number&quot;] и крутануть колёсико — страница прокрутится, а число тоже изменится. Фикс только в Chrome 150. Обходной путь — wheel event с preventDefault.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://telp.cc/1K_o&quot;&gt;What&apos;s new in Chrome at I/O 2026&lt;/a&gt; — Обзор новых платформенных фич и тулинга, анонсированных на Google I/O 2026. Chrome продолжает наращивать capabilities — стоит следить за обновлениями.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/we_use_js/5308&quot;&gt;isolatedDeclarations — ускорение сборки monorepo&lt;/a&gt; — Флаг TypeScript isolatedDeclarations заставляет писать явные типы, но в награду компилятор генерирует .d.ts независимо по файлам, без анализа соседей. В больших monorepo, библиотеках и project references — сборка заметно быстрее и стабильнее. Trade-off: чуть больше boilerplate вместо магии type inference.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/managing-anchor-associations-with-data-attributes-and-advanced-attr/&quot;&gt;Anchor positioning через data-атрибуты и advanced attr()&lt;/a&gt; — Attribute anchor так и не стандартизировали, но Una Kravets и Рома Комаров показали, как продвинутый attr() с type() позволяет мапить data-атрибуты на position-anchor и anchor-name. Один CSS-селектор на все якоря — меньше boilerplate, больше декларативности. Поддержка: Chrome, Firefox 152 (июнь 2026), Safari Tech Preview.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://getdesign.md/&quot;&gt;DESIGN.md популярных продуктов — готовая дизайн-система для AI-агентов&lt;/a&gt; — getdesign.md собирает DESIGN.md файлы Claude, Airbnb, Stripe, Linear и других продуктов по спеке Google Stitch. По сути — готовые дизайн-системы, которые AI-агенты (Cursor, Claude Code) могут читать и применять при генерации UI. Удобно, если делаешь инструмент для конкретного ресурса.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 30.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-30/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-30/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://deno.com/blog/v2.8&quot;&gt;Deno 2.8&lt;/a&gt; — Ryan Dahl анонсировал «крупнейший минорный релиз» — Deno 2.8. TypeScript 6 по умолчанию, 6 новых подкоманд, и главное: 76% тестового покрытия Node.js (было 42%). Поддержка OffscreenCanvas, WebGPU Geometry Interfaces, улучшенные workspaces и аудит пакетов. npm-подход явно побеждает идею замены npm — Deno теперь старается быть совместимым, а не конкурентом.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.infoq.com/news/2025/06/json-module-import-interop-2025/&quot;&gt;ES2025: Импорт JSON-файлов как модулей&lt;/a&gt; — ECMAScript 2025 официально добавляет import JSON-файлов как модулей — без require и fs.readFileSync. Наконец-то нативный import для JSON, давно ожидаемый фронтендерами.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/the-fundamentals-and-dev-experience-of-css-function/&quot;&gt;The Fundamentals and Dev Experience of CSS @function&lt;/a&gt; — Jane Ori разбирает подводные камни нового синтаксиса CSS @function — где он реально полезен, где подводные камни и как получить максимум от CSS-функций в продакшене. Практический гайд по фиче, о которой говорят, но мало кто пробует.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.carmenansio.com/articles/spring-physics-css&quot;&gt;CSS-анимации на spring-physics с linear()&lt;/a&gt; — Кармен Ансио про CSS-функцию linear() — природные, пружинящие анимации без JS. Появилась в последнем Chrome и выглядит эффектно: анимации ведут себя как реальные пружины, а не линейные градиенты.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 29.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-29/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-29/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/devspotting/147&quot;&gt;Claude Opus 4.8: бенчмарки и цены&lt;/a&gt; — Anthropic выпустила Opus 4.8 — традиционно чуть лучше по бенчам, цены $5/$25, fast mode в 3 раза дешевле. Заодно в Claude Code появились Dynamic workflows для параллельного запуска сотен саб-агентов.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/we_use_js/5311&quot;&gt;Recursive type limits: почему TS «умирает» на сложных типах&lt;/a&gt; — Глубокий DeepPartial, infer внутри infer — красиво, но компилятор считает каждый conditional type. Лайфхак: ограничивать глубину рекурсии, не тащить сложные generics в публичный API. Самый дорогой runtime — compile time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://piccalil.li/blog/navigating-the-age-old-problem-of-checkmarks-in-ui-with-progressive-enhancement/?ref=main-rss-feed&quot;&gt;Чекбоксы в UI с прогрессивным улучшением&lt;/a&gt; — ::checkmark из CSS Form Control Styling Module Level 1 — стилизация checked для чекбоксов и радиокнопок. Пока только Chrome, Safari и Firefox отстают. Полный цикл: от чистого CSS к a11y с ARIA и keyboard nav.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gomakethings.com/articles/how-to-add-icons-to-external-links-with-css/&quot;&gt;Иконки внешних ссылок на чистом CSS&lt;/a&gt; — [href^=&quot;http&quot;]:not(.btn, :has(svg))::after + CSS mask для SVG-иконки + alt-текст для скринридеров. Без JS, без SVG-спрайтов, без разметки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://meyerweb.com/eric/thoughts/2026/05/28/accessible-i-think-split-cell-table-headers/&quot;&gt;Доступные сплит-ячейки в таблицах&lt;/a&gt; — Диагональный &lt;code&gt;&amp;lt;th&amp;gt;&lt;/code&gt; для таблицы Apollo 16 docs: две строки &lt;code&gt;&amp;lt;th&amp;gt;&lt;/code&gt; с rowspan, CSS-градиент, absolute positioning. Проверил с a11y-экспертами, Safari-хак через @supports спасает. «I Think» в заголовке — автор не уверен на 100%.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.smashingmagazine.com/2026/04/session-timeouts-accessibility-barrier-authentication-design/&quot;&gt;Таймауты сессии как барьер a11y&lt;/a&gt; — Завершение сессии ломает UX для людей с ОВЗ и просто неторопливых. Статья — как проектировать продление сессии с предупреждениями. Критично для banking и government.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Дизайн/Продукт&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nngroup.com/articles/after-design-critique/&quot;&gt;Что делать после критики дизайна&lt;/a&gt; — NN/g про этап, который все пропускают: закрытие loop, приоритизация фидбэка, before/after атрибуция. Фидбэк не умирает с окончанием сессии, а рождается из follow-up.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/designtua_frontenduel/95&quot;&gt;Роботизированный язык в интерфейсах&lt;/a&gt; — Пять постов про машинные формулировки, «Найдено результатов: 125», канцелярит. Но контринтуитивный поворот: для профи в робо-режиме формализованные данные иногда удобнее литературных. Якорь в конце строки эффективнее числа в середине.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 31.05.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-05-31/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-05-31/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Проекты&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/shadcnstore/shadcn-dashboard-landing-template&quot;&gt;shadcn-dashboard-landing-template — готовый шаблон лендинг + админка&lt;/a&gt; — Готовый лендинг + админ-панель на React, TypeScript, Vite, Next.js, Tailwind и shadcn ui v3. Удобно форкнуть и быстро адаптировать под свой продукт.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;JS/TS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/arrays-objects-now-composites/&quot;&gt;Composites: структурное сравнение объектов в JavaScript&lt;/a&gt; — Новая proposal — composites — даёт структурное сравнение для массивов и объектов. Два объекта с одинаковым содержимым, но разным порядком ключей — равны. Удобно для keying структурных значений в Maps и Sets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;CSS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nerdy.dev/flex-wrap-balance&quot;&gt;flex-wrap: balance уже летит в Chrome&lt;/a&gt; — Долгожданное &lt;code&gt;flex-wrap: balance&lt;/code&gt; — свойство для автоматического выравнивания переполненных flex-контейнеров — официально движется в Chrome. Больше никаких хаков для красивых wrap-сеток.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Пульс веб-платформы 01.06.2026</title><link>https://juwain.github.io/web-platform/pulse/2026-06-01/</link><guid isPermaLink="true">https://juwain.github.io/web-platform/pulse/2026-06-01/</guid><description>Ежедневный дайджест новостей веб-разработки</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Новости&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jestjs/jest/releases/tag/v30.4.0&quot;&gt;Jest 30.4.0&lt;/a&gt; — Крупный релиз Jest. Переписан заново собственный рантайм в preparation для нативной поддержки ESM — теперь require(esm) работает на Node 24.9+. Fake timers наконец-то понимают Temporal API (Duration, Instant, ZonedDateTime). Поддержка React 19 в pretty-format: snapshot&apos;ы теперь рендерятся корректно. Новый флаг --collect-tests для discovery тестов без запуска, поддержка jest.config.mts.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/pnpm/pnpm/releases/tag/v11.1.0&quot;&gt;pnpm 11.1&lt;/a&gt; — Первый мажорный апдейт после pnpm 11: audit signatures для ECDSA-проверки registry, поддержка установки пакетов из GitHub Packages через gh: префикс, алиасы named registries в pnpm-workspace.yaml и новые флаги для CI. Безопасность на уровне рантайма.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Статьи, мнения, туториалы&lt;/h3&gt;
&lt;h4&gt;HTML/Accessibility&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://vale.rocks/posts/digital-accessibility-technologies&quot;&gt;Digital Accessibility Technologies — обзор&lt;/a&gt; — Джонатан Харрис собрал обзор цифровых технологий доступности — инструменты ввода и вывода для людей с ограниченными возможностями: от экранных читалок до айтрекинг-систем и альтернативных ввода данных. Хороший reference, если разрабатываешь продукты с учётом accessibility.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>