Saving the web from Javascript bloat
Theo (t3.gg) reviews James Garbet’s breakdown of JS bloat and donates $5,000 to the E18E cleanup initiative.
- Three pillars of JS bloat: legacy engine support (ES3/IE6), atomic micro-packages, and pony fills that were never removed after native support landed.
-
path-key(a 4KB file checking Windows PATH casing) gets 158 million npm downloads per week;slashgets 96M;is-arraygets 160M. - Hero Devs caused the axe-object-query controversy: adding 60 direct dependencies (one package, deep-equal, adding 50 more) nearly doubled SvelteKit’s dependency count in a minor bump.
-
Node uses “primordials” — it rebinds all default globals at startup into a private namespace so user code mutating
MaporArraycannot break Node internals. -
Cross-realm values (iframe vs parent page) are a real reason some type-checking packages exist;
instanceoffails across realms, requiringObject.prototype.toStringchecks instead. - Pony fills differ from polyfills: they provide a future API as an importable module rather than mutating globals, but become bloat once engines natively support the feature.
-
E18E’s CLI can detect redundant deps and auto-migrate (e.g., chalk → picocolors);
knipfinds unused imports and dead deps; module-replacements lists modern alternatives. - Theo donated $5,000 to E18E, whose entire treasury held $17,000 — calling the underfunding of this critical ecosystem work “terrifying.”
2026-03-29 · Watch on YouTube