DEV Community

Leo
Leo

Posted on • Originally published at news.html.to

Baseline as a bundle audit, and what usually falls out

I ran through the swap list in this piece with our own package.json open, and it did the thing a good audit is supposed to do: three dependencies picked up a strikethrough before I finished the first pass. Writing for Smashing Magazine on 7 August 2026, Jad Joubran reframes Baseline as a review tool rather than a green checkmark you scatter on a docs page. The frame is simple. If a feature is Baseline Newly available or Widely available, ask whether the library you are carrying still does work the browser can now do for you.

The pitch

Per the source, Baseline sorts features into three buckets: Limited availability, Newly available (just shipped across the major engines), and Widely available (30+ months in every major engine). Joubran uses those buckets as an audit rubric. Once something crosses into Newly available, it becomes a candidate to consider. Once it is Widely available, the argument for keeping a userland copy gets weaker every quarter.

That is the part I liked. Instead of "is this cool," it is "is this replaceable, and for whom." Per the source, he puts three questions on it: is the replacement safe for my audience's browsers, what does the actual swap cost, and does the platform feature cover my real use case. Nothing dramatic. But it turns Baseline from a badge into a line-item you can add to a quarterly dependency review.

A partial swap list

The piece names specific libraries against specific platform features. Per the source, the list includes:

  • timeago.js (1 KB gz) against Intl.RelativeTimeFormat
  • pluralize (2.3 KB gz) against Intl.PluralRules
  • numeral (3.9 KB gz) against Intl.NumberFormat
  • humanize-duration (6.6 KB gz) against Intl.DurationFormat
  • axios (17 KB gz) against fetch plus AbortController
  • a11y-dialog (1.8 KB gz) and focus-trap (6.6 KB gz) against the <dialog> element
  • tippy.js (14 KB gz) against the Popover API and anchor positioning
  • body-scroll-lock (1.3 KB gz) against CSS overflow: hidden
  • lodash.clonedeep against structuredClone
  • lodash.groupby against Object.groupBy

Per the source, these are candidates, not gimmes. The reason the list is fun to read is that most of these dependencies got installed for the right reason at the time, and then quietly outlived the reason. Nobody removes them because nobody re-checks.

Reading the Baseline label before you swap

Joubran attaches Baseline states to a few of the replacements, and it is worth quoting the specifics rather than paraphrasing from memory. Per the source: Intl.DurationFormat reached Baseline Newly available in March 2025 and is on track to become Widely available in 2027. The Popover API hit Baseline Newly available in January 2025. Anchor positioning became Baseline Newly available in January 2026. Object.groupBy reached Newly available in March 2024 and is expected to go Widely available in late 2026. Temporal is Limited availability because Safari lacks stable support; per the source the polyfill weighs 44 KB gzipped, which is why it does not go on the "drop it now" list.

The audience question matters here. If your analytics show a long tail of older installs, "Newly available" is a signal to plan, not a signal to ship on Monday. If your audience is closer to evergreen, the answer flips.

What I am watching next

The knock-on effect is how this pressure lands on framework starters. A bunch of the swaps above are the reason a create-app template pulls in a small dialog helper or a focus-trap by default. If Baseline-driven audits become routine, those defaults get pruned faster than they get added, and the next generation of starters ships lighter without anyone having to argue about it. The follow-up I want to read is the same list a year from now, once Temporal and Intl.DurationFormat cross into Widely available in every engine that ships to your users. That is the point where the axios-style swap becomes the norm rather than the exercise.

Top comments (1)

Collapse
 
swapnoneel123 profile image
Swapnoneel Saha

the quarterly audit framing makes baseline practical. i would pair each swap with a browser support matrix, a behavior test, and a bundle budget, then keep the old path behind a short rollback flag. size alone can hide changes in focus behavior, abort timing, locale output, or accessibility. recording those checks makes a removal safe and gives teams a clear reason to revisit it later.