60–90 KB - столько веса лишнего кода в среднем приложении
Именно — столько веса зависимостей Джад Джубран нашёл в типичном package.json среднего приложения — всё это теперь умеет браузер.
Статья проводит аудит кластерами, а не библиотека за библиотекой, и даёт фреймворк из трёх вопросов, который стоит украсть для своего package.json:
1. Безопасна ли замена по Baseline для твоей аудитории — не абстрактно, а конкретно по твоему browserslist? 2. Сколько реально стоит замена — не перевесит ли полифилл/fallback то, что убираешь? 3. Покрывает ли платформенная фича твой реальный случай, или библиотека делает больше, чем ты думаешь?
Кластеры:
→ **Интернационализация (~14 KB)** — timeago.js, pluralize, numeral заменяются Intl.RelativeTimeFormat, Intl.PluralRules, Intl.NumberFormat. Всё Widely available. Самый лёгкий выигрыш во всём аудите
→ **HTTP-клиенты (~17 KB)** — fetch + AbortSignal.timeout() закрывает большинство случаев axios, но честно: нет авто-reject на 4xx/5xx, нет интерцепторов, нет upload progress. Проверь что реально используешь перед заменой
→ **UI-примитивы (~24 KB)** — самый приятный. + showModal() заменяет и модалку, и focus-trap, и почти весь body-scroll-lock одним элементом и одной CSS-строкой (body:has(dialog:modal) { overflow: hidden; }). Popover API + CSS anchor positioning заменяют tippy.js/Popper для тултипов
→ **Lodash-утилиты (~8 KB)** — Object.groupBy, structuredClone и нативные операции Set (union/intersection/difference) покрывают lodash.groupby, lodash.clonedeep и другие. debounce/throttle аналогов в платформе всё ещё нет — их оставляем
Самое честное место — контрпример: **Temporal** — действительно лучший API для дат, но он ещё не Baseline — Safari пока не выкатил стабильную поддержку. Полифилл — ~44 KB, в 10+ раз тяжелее dayjs. Замена сейчас не экономит, а добавляет — примерно ~41 KB. Сама логика фреймворка говорит: подожди.
Полный аудит с готовым процессом у Jad Joubran 👇 https://www.smashingmagazine.com/2026/08/how-baseline-can-help-ship-less-javascript/