bundle-roast — the npm scale that knows your sins
ISS.<br>▍ issue 001 · 2026 · npm desk filed under: weights<br>bundle/roast<br>the npm scale that knows your sins<br>Bundlephobia, with teeth. Drop in any npm package and we'll tell you what it really costs — minified, brotli'd<br>at quality 11, and the entire transitive dep tree drawn out in wires.<br>weighs less than what it judges · no ads · no cookies
▍open a case<br>type a package or expression
$ ./roast --target a package, or write an expression like react+react-dom | vue | svelte<br>❯ roast it →<br>operators ▸ + combine| compare( ) group
§ the docket<br>▍the docket<br>updates hourly
▍most-roasted<br>by hit count
01 @motion-core/motion-gpu ·single<br>× 61<br>02 react ·single<br>× 39<br>03 traverse ·single<br>× 37<br>04 three ·single<br>× 34<br>05 svelte ·single<br>× 31<br>06 moment ·single<br>× 25<br>07 zod ·single<br>× 18<br>08 @aws-sdk/client-s3 ·single<br>× 17
▍just rolled in<br>newest first
01 three ·single<br>02 next ·single<br>03 zod ·single<br>04 axios|fetch |compare<br>05 @tanstack/query-core ·single<br>06 vue+vue-router +combo<br>07 tailwindcss ·single<br>08 jquery ·single
§ warm up<br>▍start with one of these<br>curated
01 react the obvious one<br>02 lodash@4.17.21 71 kB of regret<br>03 @sveltejs/kit the one writing this site<br>04 react+react-dom | vue | svelte language demo →
§ e18e desk<br>▍the e18e desk<br>community-flagged swaps · e18e.dev ↗
the ecosystem-performance community keeps a list of packages worth swapping.<br>the desk weighs them against their suggested replacements — click a row and<br>watch the numbers fall in.<br>axios → ofetch the XHR wrapper era weigh →<br>moment → date-fns the dates and the desk weigh →<br>lodash → es-toolkit a kitchen sink replaced weigh →<br>chalk → picocolors colors, lightly worn weigh →<br>bcrypt → bcryptjs native gymnastics weigh →<br>jsonwebtoken → jose tokens, modernized weigh →<br>traverse → neotraverse a fresh trail weigh →<br>yargs → sade argv on a diet weigh →
+ | ()<br>▍the language<br>three operators
react a single package<br>react+vue two combined — sum the weight<br>react|vue two compared — one column each<br>react+react-dom | vue | svelte three columns, first is a combo<br>(react+vue) | svelte+kit parens, in case precedence isn't obvious<br>+ binds tighter than |. Same shape as && binds tighter than || in your code.
§ the manifesto<br>▍what you get<br>three things
01<br>real numbers<br>real bundles, real brotli at quality 11. no webpack-stats math, no estimates.
02<br>the full sub-graph<br>tree for the meticulous, wire-graph for the dramatic. every transitive dep weighed.
03<br>combinations<br>weigh real-world combos in one shot. shared deps light up amber so you see the double-pay.
▍ moment 290 kB // what year is it▍ lodash 70 kB // use the modular import▍ rxjs 47 kB // operator overdose▍ jquery 88 kB // grandpa, lets get you to bed▍ react-dom 130 kB // cost of doing business▍ @aws-sdk/client-s3 2.3 MB // oof▍ date-fns 180 kB // pick three functions▍ three 630 kB // for one rotating cube▍ chart.js 180 kB // for the dashboard nobody opens▍ axios 32 kB // just use fetch▍ moment 290 kB // what year is it▍ lodash 70 kB // use the modular import▍ rxjs 47 kB // operator overdose▍ jquery 88 kB // grandpa, lets get you to bed▍ react-dom 130 kB // cost of doing business▍ @aws-sdk/client-s3 2.3 MB // oof▍ date-fns 180 kB // pick three functions▍ three 630 kB // for one rotating cube▍ chart.js 180 kB // for the dashboard nobody opens▍ axios 32 kB // just use fetch