Цена ошибок гидрации
В React есть много ухищрений, чтобы серверный кусок страницы обновился на клиенте почти незаметно. В большинстве случаев этого хватает, но я почти уверен, что если вы работали с React, то в консоли видели
Иван Акулов разбирает случаи, когда такие ошибки влияют ещё и на метрику Largest Contentful Paint из Core Web Vitals. И для некоторых заказчиков это прям важная метрика.
И в конце статьи делится лайфхаком, как этот самый LCP немного читерски улучшить.
https://3perf.com/blog/hydration-mismatch/
В React есть много ухищрений, чтобы серверный кусок страницы обновился на клиенте почти незаметно. В большинстве случаев этого хватает, но я почти уверен, что если вы работали с React, то в консоли видели
Hydration failed because the initial UI does not match what was rendered on the server.Иван Акулов разбирает случаи, когда такие ошибки влияют ещё и на метрику Largest Contentful Paint из Core Web Vitals. И для некоторых заказчиков это прям важная метрика.
И в конце статьи делится лайфхаком, как этот самый LCP немного читерски улучшить.
https://3perf.com/blog/hydration-mismatch/
PerfPerfPerf
Hidden Cost of Hydration Mismatches
A single hydration mismatch on a page can take Largest Contentful Paint from green to red
❤20🎉5👌4
Эффект одометра
Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я бы сначала всё же попробовал подключить JavaScript.
Прити Сэм применяет современные CSS-функции
https://blog.master.dev/the-odometer-effect-in-css/
Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я бы сначала всё же попробовал подключить JavaScript.
Прити Сэм применяет современные CSS-функции
attr(), sibling-index() и тригонометрические функции, чтобы собрать эффект перелистывания символов как у одометра или счётчика воды в квартире.https://blog.master.dev/the-odometer-effect-in-css/
blog.master.dev
The Odometer Effect (without JavaScript)
We can take a value set in an HTML attribute and use it in CSS, even extracting each individual digit in order to animate separately.
❤🔥12❤8👍3
View Transitions Toolkit
Брамус делится своей коллекцией утилит, чтобы можно было более удобно работать с View Transition API. Напомню, это такая апишка в браузере, которая позволяет делать анимации для элементов между двумя «страницами». В кавычках, потому что не обязательно буквально переходить между страницами, чтобы запустить анимацию.
Как и многие проекты деврелов Chrome, репозиторий покрылся пылью примерно на следующую неделю после Google I/O. Но справедливости ради, там и апишка не то чтобы невероятно активно развивается, чтобы что-то сильно менять.
https://chrome.dev/view-transitions-toolkit/
Брамус делится своей коллекцией утилит, чтобы можно было более удобно работать с View Transition API. Напомню, это такая апишка в браузере, которая позволяет делать анимации для элементов между двумя «страницами». В кавычках, потому что не обязательно буквально переходить между страницами, чтобы запустить анимацию.
Как и многие проекты деврелов Chrome, репозиторий покрылся пылью примерно на следующую неделю после Google I/O. Но справедливости ради, там и апишка не то чтобы невероятно активно развивается, чтобы что-то сильно менять.
https://chrome.dev/view-transitions-toolkit/
chrome.dev
View Transitions Toolkit
A collection of utility functions to more easily work with View Transitions.
👍14❤🔥3❤1
llms.txt: выдаём желаемое за действительное
Я уже много где видел эти советы: добавь на сайт llms.txt, будут агенты туда ходить, токены экономить, а ещё в выдаче поисковой попадёшь в AI-сниппет — все туда сейчас хотят.
Стоян Стефанов взял и проверил, открывает кто-нибудь вообще этот файл или нет.Спойлер: там меньше процента визитов.
Честно говоря, я не понимаю, почему LLM вдруг должна сходить в какой-то отдельный файл, а не на сам сайт, если только явно её не попросить. Это ж как отдельные версии для слабовидящих — гарантировать полное соответствие контенту обычной версии сайта никто не может.
https://www.phpied.com/llms-txt-agent-optimization-wishful-thinking/
Я уже много где видел эти советы: добавь на сайт llms.txt, будут агенты туда ходить, токены экономить, а ещё в выдаче поисковой попадёшь в AI-сниппет — все туда сейчас хотят.
Стоян Стефанов взял и проверил, открывает кто-нибудь вообще этот файл или нет.
Честно говоря, я не понимаю, почему LLM вдруг должна сходить в какой-то отдельный файл, а не на сам сайт, если только явно её не попросить. Это ж как отдельные версии для слабовидящих — гарантировать полное соответствие контенту обычной версии сайта никто не может.
https://www.phpied.com/llms-txt-agent-optimization-wishful-thinking/
phpied.com
llms.txt: agent-optimization wishful thinking
Can't remember where I stumbled upon a SEO-type guide that was suggesting agent-optimization via a robot.txt-like file llms.txt which lives in the web root and helps agents use your site. Perfect, I thought, my sightread.org has a zillion options, all bookmarkable.…
🌚7👍6❤3😐2🎉1
Слабые и средние смартфоны из реального мира
Если занимаетесь оптимизацией производительности сайтов, то, скорее всего, знаете, что ни один лабораторный тест не заменит теста на реальном устройстве. Периодически эксперты по перфомансу делятся советами, какие реальные устройства лучше всего иметь в распоряжении для таких задач.
Гарри Робертс составил свой список. Интересно, что оба варианта в рекомендациях — Samsung. Заняли они прочно эту нишу.
У меня, кстати, когда-то был старенький девайс с Opera Mini, чтобы тестировать специальную версию сайта для слабых девайсов. Прикольный опыт. Подключить его к DevTools там было банально нечем, был только кабель для зарядки.
https://csswizardry.com/2026/07/low-and-mid-tier-mobile-for-the-real-world-2026/
Если занимаетесь оптимизацией производительности сайтов, то, скорее всего, знаете, что ни один лабораторный тест не заменит теста на реальном устройстве. Периодически эксперты по перфомансу делятся советами, какие реальные устройства лучше всего иметь в распоряжении для таких задач.
Гарри Робертс составил свой список. Интересно, что оба варианта в рекомендациях — Samsung. Заняли они прочно эту нишу.
У меня, кстати, когда-то был старенький девайс с Opera Mini, чтобы тестировать специальную версию сайта для слабых девайсов. Прикольный опыт. Подключить его к DevTools там было банально нечем, был только кабель для зарядки.
https://csswizardry.com/2026/07/low-and-mid-tier-mobile-for-the-real-world-2026/
Csswizardry
Low- and Mid-Tier Mobile for the Real World (2026) – CSS Wizardry
The 2026 update to my real-world device testing recommendations paints a clearer picture than ever…
⚡8🎉4❤1
Стилизация тултипов
Начал писать заметку про инициативу от Microsoft Edge дать разработчикам возможность стилизовать нативные тултипы (это которые показываются по ховеру на элемент с атрибутом
Если коротко, то нам готовят псевдоэлемент
https://t.me/alexnozer_dev/413
Начал писать заметку про инициативу от Microsoft Edge дать разработчикам возможность стилизовать нативные тултипы (это которые показываются по ховеру на элемент с атрибутом
title). Отвлёкся на работу — а Лёша уже написал подробнейший разбор.Если коротко, то нам готовят псевдоэлемент
::tooltip, в котором можно будет задавать много разных CSS-свойств, но не все. А если не коротко, то читайте заметку Лёши и ссылки в ней.https://t.me/alexnozer_dev/413
Telegram
<divelopers>
Стилизация тултипов
Два года назад я писал о проблеме с title и о принятом рабочей группой CSS предложении добавить псевдо-элемент ::tooltip от Лии Веру. Похоже, команда Edge займётся тултипами, о чём можно судить по статье Патрика Броссета.
Дисклеймер:…
Два года назад я писал о проблеме с title и о принятом рабочей группой CSS предложении добавить псевдо-элемент ::tooltip от Лии Веру. Похоже, команда Edge займётся тултипами, о чём можно судить по статье Патрика Броссета.
Дисклеймер:…
👍16❤6👏2🎉1
replacements.fyi
Есть такое сообщество — e18e (Ecosystem Performance). Они уже довольно долго помогают вебу становиться производительнее, заменяя не самые эффективные решения в популярных библиотеках на более эффективные.
Нашёл у себя в сохранённых ссылках сайт, который помогает найти альтернативы разным npm-пакетам. Например, вместо библиотеки
На сайте не то чтобы прям очень много предложений. Но проверил, есть ли у меня в пет-проектах что-то не самое производительное по мнению e18e — есть.
https://replacements.fyi/
Есть такое сообщество — e18e (Ecosystem Performance). Они уже довольно долго помогают вебу становиться производительнее, заменяя не самые эффективные решения в популярных библиотеках на более эффективные.
Нашёл у себя в сохранённых ссылках сайт, который помогает найти альтернативы разным npm-пакетам. Например, вместо библиотеки
dotenv предложит воспользоваться нативным process.loadEnvFile. А для semver предложит более производительный пакет verkit.На сайте не то чтобы прям очень много предложений. Но проверил, есть ли у меня в пет-проектах что-то не самое производительное по мнению e18e — есть.
https://replacements.fyi/
replacements.fyi
replacements.fyi - performant, safer npm package alternatives
Find more performant and safer replacements for outdated or unnecessary npm packages.
👏23🔥3❤2😐2
А есть уже проект с таким же именем?
Брамус хотел опубликовать npm-пакет, но внезапно обнаружил, что пакет с таким именем уже есть. Поэтому собрал cli-утилиту, которая проверяет доступность имени в NPM и Netlify. При желании можно добавить свой чекер для любого другого сервиса.
https://www.bram.us/2026/10/08/caniname-cli-tool-to-check-project-name-availability/
Брамус хотел опубликовать npm-пакет, но внезапно обнаружил, что пакет с таким именем уже есть. Поэтому собрал cli-утилиту, которая проверяет доступность имени в NPM и Netlify. При желании можно добавить свой чекер для любого другого сервиса.
https://www.bram.us/2026/10/08/caniname-cli-tool-to-check-project-name-availability/
Bram.us
caniname: CLI tool to check project name availability across Netlify and NPM (and other sources)
Whenever I build a new tool or custom element (like or ), I always end up doing the same manual dance: checking if the package name is still free on NPM and if the matching .netlify.app subdomain is still unclaimed on Netlify. To automate that check, I built…
👍9🥴6😁4❤2👏2🎉1
Полифил для CSS Typed OM
Стоит, наверное, начать с того, а что же такое этот ваш Typed OM. Когда вы задаёте какое-то значение CSS-свойства через JS, то по сути пишете строку, которую браузер парсит и натягивает на элемент. Причём можно задать кривую строку — и ничего не упадёт.
А ведь браузер вообще-то знает типы данных каждого свойства. Он умеет отличать строки от чисел, длины от времени и так далее.
Так вот, CSS Typed OM — это возможность работать со свойствами элементов через
В общем, я фанат этой штуки уже лет 8 в теории (на практике не применял пока что осознанно). И она даже скоро станет кроссбраузерной (Firefox вот-вот, уже-уже). А пока можно воспользоваться полифилом. Хорошим полифилом, который учитывает тесты веб-платформы.
https://www.bram.us/2026/10/13/introducing-css-typed-om-a-complete-and-wpt-tested-polyfill-for-css-typed-om/
Стоит, наверное, начать с того, а что же такое этот ваш Typed OM. Когда вы задаёте какое-то значение CSS-свойства через JS, то по сути пишете строку, которую браузер парсит и натягивает на элемент. Причём можно задать кривую строку — и ничего не упадёт.
el.style.opacity = "wtf"; — валидная инструкция, к сожалению, хоть сам CSS получится не валидный.А ведь браузер вообще-то знает типы данных каждого свойства. Он умеет отличать строки от чисел, длины от времени и так далее.
Так вот, CSS Typed OM — это возможность работать со свойствами элементов через
attributeStyleMap, где каждое поле типизировано. А ещё при попытке запихнуть в неверный тип кривое значение вы буквально получаете ошибку, которую можно перехватить. На сдачу получаем ускорение на 30% для кода, который вертит-крутит CSS-стили в вашем приложении.В общем, я фанат этой штуки уже лет 8 в теории (на практике не применял пока что осознанно). И она даже скоро станет кроссбраузерной (Firefox вот-вот, уже-уже). А пока можно воспользоваться полифилом. Хорошим полифилом, который учитывает тесты веб-платформы.
https://www.bram.us/2026/10/13/introducing-css-typed-om-a-complete-and-wpt-tested-polyfill-for-css-typed-om/
Bram.us
Introducing css-typed-om, a complete and WPT-tested polyfill for CSS Typed OM
Being a big fan of the CSS Typed OM, I’ve wanted a proper polyfill for it for years. Just before my summer vacation back in July, with the help of Gemini/Antigravity, I finally built one: css-typed-om.
👏15👍6❤2🔥1
Определяем перекрытие элементов при помощи CSS
До чего техника дошла. Ахмад Шадид делится способом понять, два элемента в CSS налазят друг на друга или нет. Ну и подстроить под это визуальную часть.
Работает на сочетании Anchor Positioning API, Scroll Timeline API и Container Style Queries.
Раньше для такого нужно было явно прописать брейкпоинты. Садится верстальщик, теребит край окошка влево-вправо, подбирает пиксель, где нужно декоративный элемент спрятать. А теперь можно собрать файлик CSS, который будем смотреть на любом размере вьюпорта, помещается декоративность или нет. Технолоджия.
https://ishadeed.com/article/css-detect-overlap/
До чего техника дошла. Ахмад Шадид делится способом понять, два элемента в CSS налазят друг на друга или нет. Ну и подстроить под это визуальную часть.
Работает на сочетании Anchor Positioning API, Scroll Timeline API и Container Style Queries.
Раньше для такого нужно было явно прописать брейкпоинты. Садится верстальщик, теребит край окошка влево-вправо, подбирает пиксель, где нужно декоративный элемент спрятать. А теперь можно собрать файлик CSS, который будем смотреть на любом размере вьюпорта, помещается декоративность или нет. Технолоджия.
https://ishadeed.com/article/css-detect-overlap/
Ishadeed
Detect when elements overlap with CSS
Detecting when two elements overlap using only CSS anchor positioning and scroll-driven animations.
👏13❤🔥5❤2😍1
Редизайн example.com
Во-первых, я впервые за много лет зашёл на example.com. Он часто в статьях и гайдах фигурирует, а в старых CHM-учебниках для веб-мастеров чуть ли не в каждой статье был.
Во-вторых, я узнал, что этот домен особенный, он зарезервирован IANA для документации. Боюсь представить, какой был бы ужас, если бы его можно было купить.
В-третьих, в статье есть интересное наблюдение за тем, как содержимое страницы менялось с годами. Оказывается, там недавно произошёл полный редизайн, страница мультиязычная, а ещё у неё очень даже приличные метрики Core Web Vitals.
https://www.debugbear.com/blog/example-dot-com-redesign-history
Во-первых, я впервые за много лет зашёл на example.com. Он часто в статьях и гайдах фигурирует, а в старых CHM-учебниках для веб-мастеров чуть ли не в каждой статье был.
Во-вторых, я узнал, что этот домен особенный, он зарезервирован IANA для документации. Боюсь представить, какой был бы ужас, если бы его можно было купить.
В-третьих, в статье есть интересное наблюдение за тем, как содержимое страницы менялось с годами. Оказывается, там недавно произошёл полный редизайн, страница мультиязычная, а ещё у неё очень даже приличные метрики Core Web Vitals.
https://www.debugbear.com/blog/example-dot-com-redesign-history
Debugbear
Example.com Just Launched The Biggest Redesign In Decades | DebugBear
A look at the history of visual changes to example.com.
🎉9❤4🤣4😁1🌚1
Явная вложенность
Если вы уже начали пользовать нативным CSS Nesting, то Рома Комаров рекомендует всегда явно писать
А они почему-то не применяются.
Узнал, что есть целое правило в stylelint —
https://blog.kizu.dev/explicit-nesting/
Если вы уже начали пользовать нативным CSS Nesting, то Рома Комаров рекомендует всегда явно писать
& во вложенном селекторе. Потому что когда-нибудь вы напишете вот такие стили.
button {
background: #111;
:hover,
:focus-visible {
background: #444;
}
}
А они почему-то не применяются.
Узнал, что есть целое правило в stylelint —
selector-nested-pattern. Чтобы машина не давала ошибиться в таких случаях ну совсем.https://blog.kizu.dev/explicit-nesting/
Roma’s Unpolished Posts
Explicit Nesting
If you are not using `&` when you nest some selectors — what are you doing? Please, start using it. This short post explains why and how.
❤🔥6❤1👍1