Расследование размера бандла. Надя Макаревич пошагово проходит анализ сборки в Vite, находит как wildcard-импорты ломают tree-shaking, почему lodash без ESM раздувает бандл и убирает дубликаты библиотек дат, чтобы сократить приложение на React с 5 МБ до 601 КБ. #js #performance
https://www.developerway.com/posts/bundle-size-investigation
https://www.developerway.com/posts/bundle-size-investigation
❤48👍20🔥13
Хватит превращать всё в массивы. Мэтт Смит показывает, как iterator helpers в JavaScript дают ленивые цепочки
https://allthingssmitty.com/2026/01/12/stop-turning-everything-into-arrays-and-do-less-work-instead/
map, filter и take без промежуточных массивов и прекращают работу, когда UI получил нужные элементы. Это удобно для больших списков, потоков и пагинации, поддержка есть в современных браузерах и Node 22+. #js #performancehttps://allthingssmitty.com/2026/01/12/stop-turning-everything-into-arrays-and-do-less-work-instead/
🔥63👍17❤1
Практическое руководство по элементу <img>: от основ до LCP. Джоан Леон разбирает атрибуты
https://joanleon.dev/en/guia-practica-elemento-img/
srcset и sizes для адаптивных изображений, <picture> с AVIF и WebP, а также loading=lazy, width и height против CLS, decoding и fetchpriority. Отдельно о том, когда стоит добавить preload для LCP-картинок и почему иногда всё-таки нужны CDN. #performance #htmlhttps://joanleon.dev/en/guia-practica-elemento-img/
🔥24👍13❤3
Словарное сжатие наконец здесь, и результаты впечатляют. Тим Перри объясняет, как Compression Dictionary Transport работает с Zstandard и Brotli поверх HTTP: предыдущие ответы используются как словари для сжатия данных почти до размера дельт. JS-бандлы YouTube уменьшаются до 90% по сравнению с Brotli, HTML поиска Google — почти на 50%. Уже используется в Google, Shopify, Pinterest и Notion. Chrome 130+, Safari и Firefox на подходе. #performance #http
https://httptoolkit.com/blog/dictionary-compression-performance-zstd-brotli/
https://httptoolkit.com/blog/dictionary-compression-performance-zstd-brotli/
🔥58👍6❤5
SVG в вебе: сравнение скорости в зависимости от способа загрузки. Джоан Леон сравнивает пять методов и то, как каждый влияет на кеширование, запросы и рендеринг: инлайн
https://joanleon.dev/en/svg-optimization/
<svg>, <img>, <object>, CSS-фон и спрайты с <use>. Главный анти-паттерн: встраивание растровых изображений в base64 внутри SVG увеличивает размер файла на 33% и блокирует рендеринг. #svg #performancehttps://joanleon.dev/en/svg-optimization/
👍29🔥16❤1
Squarespace и веб-стандарты: как мы помогли добавить ленивую загрузку видео и аудио в HTML. Скотт Джел рассказывает, как инженеры Squarespace предложили
https://engineering.squarespace.com/blog/2026/squarespace-and-web-standards-how-we-helped-bring-html-video-and-audio-lazy-loading-to-todays-browsers
loading="lazy" для элементов <video> и <audio>, работали с WHATWG, написали Web Platform Tests и сотрудничали с командами Mozilla, Apple и Chromium, чтобы фича стала официальным стандартом 23 марта 2026 года. #html #performancehttps://engineering.squarespace.com/blog/2026/squarespace-and-web-standards-how-we-helped-bring-html-video-and-audio-lazy-loading-to-todays-browsers
🔥43👍12❤1
Великое расширение CSS. Павел Лаптев рассматривает CSS-фичи, заменяющие JavaScript-библиотеки: anchor positioning вместо Floating UI, Popover API и
https://blog.gitbutler.com/the-great-css-expansion
<dialog> вместо Radix, scroll-driven animations вместо GSAP, view transitions вместо Motion и кастомизируемый <select> вместо React Select. Вместе они могут убрать до 322 КБ JavaScript. #css #performancehttps://blog.gitbutler.com/the-great-css-expansion
🔥55👍10🎉2❤1
Что такое CSS containment и как его использовать? Гарри Робертс объясняет недооценённую возможность CSS, позволяющую браузеру пропускать лишнюю работу по раскладке и отрисовке. Статья разбирает каждое значение
https://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/
contain (layout, paint, size, style), сокращения content и strict, а также content-visibility для ленивого рендеринга. Приводится пример OpenTable, где contain: strict сократил время раскладки с 11 до 2 мс, ограничив область с 4371 до 73 элементов. #css #performancehttps://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/
🔥24👍7❤5
Варианты предзагрузки изображений на JavaScript. Алекс Макартур сравнивает пять подходов:
https://macarthur.me/posts/preloading-images/
new Image(), <link rel="preload">, скрытый <div> с CSS-фоном, Cache API и fetch(). У каждого метода свои компромиссы в плане браузерного кеширования, обработки CORS и гибкости. Статья разбирает, когда лучше использовать каждый из них, чтобы избежать задержки при показе ещё не загруженных изображений. #js #performancehttps://macarthur.me/posts/preloading-images/
🔥21👍6❤4🎉2
Конец адаптивных изображений. Мэт Маркиз, бывший председатель Responsive Image Community Group, оглядывается на десять лет борьбы с атрибутом
https://piccalil.li/blog/the-end-of-responsive-images/
sizes и рассказывает, как sizes="auto" вместе с loading="lazy" наконец передают эту работу браузеру для большинства картинок. Поддержка уже есть в Firefox, Safari и Chrome, а длинные значения sizes можно оставлять только для картинок в первом экране. #html #performancehttps://piccalil.li/blog/the-end-of-responsive-images/
❤30🔥12
CSS или JavaScript для анимаций. Джош Комо сравнивает CSS, Web Animations API и JS-библиотеки GSAP и Motion при загруженном основном потоке. Анимации на CSS и Motion остаются плавными, потому что работают вне основного потока, а нативные JS-анимации и GSAP подвисают. Размер библиотек тоже важен: Motion весит 48 КБ в gzip, GSAP — 27 КБ. Джош советует нативный CSS по возможности, а JS-библиотеки — только для того, что CSS не умеет, например для морфинга SVG. #animation #performance
https://www.joshwcomeau.com/animation/css-vs-javascript/
https://www.joshwcomeau.com/animation/css-vs-javascript/
👍25🔥5
Тихая проблема ненужного async. Мэтт Смит предупреждает, что
https://allthingssmitty.com/2026/06/08/the-quiet-problem-with-unnecessary-async/
async функция без настоящей асинхронной работы меняет свой контракт и заставляет все вызовы обрабатывать промисы. async распространяется по цепочке вызовов, добавляет когнитивную нагрузку и скрывает, где действительно происходит ввод-вывод. Он советует оставлять синхронные функции синхронными, а async вводить только тогда, когда появляется реальная асинхронная работа. #js #performancehttps://allthingssmitty.com/2026/06/08/the-quiet-problem-with-unnecessary-async/
👍30🎉4
Cross-Origin Storage API: не скачиваем одно и то же дважды. Деннис Морелло разбирает предложенный стандарт, который хранит и отдаёт большие файлы по их SHA-256-хешу вместо URL, создавая общий кеш для разных сайтов. Единственный метод
https://morello.dev/blog/cross-origin-storage-api
requestFileHandle() возвращает файл, если он есть, либо скачивает и сохраняет. Приватность встроена: нельзя перечислить файлы, ответы «не найдено» намеренно неоднозначны, а для общих файлов есть публичный список хешей. #performance #browserhttps://morello.dev/blog/cross-origin-storage-api
👍22🔥11❤3
Нужны ли карты кода? Джеймс Гарбутт и Алекс Лихтер объясняют, когда npm-пакетам стоит их публиковать, а когда они лишь раздувают вес. Из-за них пакет
https://e18e.dev/blog/source-maps-or-not.html
change-case вырос с 7,2 КБ до 22,7 КБ, а magic-string без них уменьшился с 241 КБ до 155 КБ. Они оправданы, только если опубликованный код теряет информацию: минифицированный вывод или синтаксис вроде Vue SFC. Лучше публиковать читаемый код без минификации или хранить исходники удалённо через sourceRoot. #npm #performancehttps://e18e.dev/blog/source-maps-or-not.html
👍9
Разбираемся с панелью Performance в Chrome DevTools. Джоан Леон на интерактивных примерах показывает цвета для скриптов, рендеринга, отрисовки, загрузки и простоя, устройство полосы сетевого запроса, две оси флеймчарта и разницу между self time и total time. Ещё есть четыре фазы LCP, сдвиги лейаута, INP, композитинг, порядок диагностики и таблицы типичных функций и запросов. #performance #devtools
https://perf.reviews/profile-guide
https://perf.reviews/profile-guide
🔥24👍3
Как ускорить длинный список: content-visibility или виртуализация. Агустин Барриентос сравнивает список из 50 тысяч карточек, отрисованный тремя способами. Свойство
https://agustinbarrientos.com/writing/senior-eye/content-visibility-vs-virtualization/
content-visibility: auto вместе с contain-intrinsic-size оставляет все строки в DOM и пропускает рендеринг за пределами экрана, а виртуализация выкидывает строки из DOM и заодно забирает у браузера поиск по странице, ссылки-якоря, сохранение фокуса и состояние карточек. #performance #csshttps://agustinbarrientos.com/writing/senior-eye/content-visibility-vs-virtualization/
🔥31👍8❤4
Ну и ладно, напишу свой текстовый редактор! Дэвид Бушелл пробует три способа собрать редактор в браузере и показывает, чем приходится жертвовать. Канвас даёт полный контроль, но лишает выделения текста, истории отмен и вставки нескольких строк. Атрибут
https://dbushell.com/2026/09/01/text-editor/
contenteditable с плейн-текстом возвращает нативное редактирование и доступность, но тормозит после определённого числа символов. Быстрее всех оказался обычный <textarea> с подсветкой синтаксиса поверх. #html #performancehttps://dbushell.com/2026/09/01/text-editor/
🔥28👍4❤1
Главный поток браузера — дорогой ресурс. Сонхёп Ли напоминает: в одном потоке живут JavaScript, стили, лейаут, отрисовка и события, а на всё это — около 10 миллисекунд на кадр, на 120 Гц вдвое меньше. Тратить их можно с умом: дробить длинные задачи через
https://kciter.so/posts/the-expensive-main-thread/en/
scheduler.yield(), объединять события дебаунсом и тротлингом, расставлять приоритеты и откладывать неважное. Или отдать работу композитору и воркерам. Всё показано на интерактивных демо. #performance #jshttps://kciter.so/posts/the-expensive-main-thread/en/
👍29❤13🔥4
Как ускорить сайт, отправляя больше CSS. В блоге GitHub Джош Блэк и Мари Лукка рассказывают, как дизайн-система Primer перешла с CSS-in-JS на CSS-модули. Пропс
https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/
sx создавал рантайм-нагрузку, которая росла с числом компонентов на странице, поэтому команда выкатывала обе версии за флагами и сравнивала скриншоты визуальных тестов. Итог: серверный рендеринг страницы стал быстрее на 55%, а инициализация компонентов — на 25%. #css #performancehttps://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/
🔥21❤3👍3
Сравнение JPEG XL и AVIF для веба. Джейк Арчибальд сравнил оба формата на фото, скриншотах и картинках с прозрачностью. При сжатии с потерями AVIF выигрывает везде: на фото JPEG XL при стандартных настройках обычно на 15–25% тяжелее, а на скриншотах и прозрачности разрыв ещё больше. Без потерь лидирует JPEG XL. По умолчанию Джейк советует AVIF 4:4:4 с самым тщательным сжатием, на какое хватит терпения, а JPEG XL через энкодер jixel стоит попробовать. #image #performance
https://jakearchibald.com/2026/jpeg-xl-vs-avif/
https://jakearchibald.com/2026/jpeg-xl-vs-avif/
🔥9❤4🎉2👍1