Plate 35
Topic
bundle size
26 posts
Plate 81
scule vs change-case: 570 B vs 795 B Gzip
Plate 28
perfect-debounce vs lodash.debounce: 447 B vs 1.2 KB
Plate 38
smol-toml vs @iarna/toml: 3x Faster on Deno Cargo
Plate 09
ohash vs object-hash: 10x Faster, 3.3 KB vs 11 KB
Plate 18
yaml vs js-yaml: 11x Faster Parse vs Kept Comments
Plate 58
Pathe vs node:path: 1.1 KB for Cross-OS Paths
Plate 68
Defu vs lodash.merge: 6x Faster, 452 B vs 4 KB
Plate 55
Klona vs structuredClone: 1.4M vs 225k Clones per Second
Plate 43
Marked vs markdown-it: 14 KB vs 42 KB Gzip, Same Speed
Plate 91
Tinyexec vs execa: 2.7 KB vs 37 KB Gzip
Plate 78
Clsx vs classnames: 294 B vs 857 B Gzip
Plate 96
es-toolkit vs lodash-es: 2.5 KB vs 9.6 KB Gzip
Plate 89
Dayjs vs date-fns: 3.5 KB vs 6.9 KB Gzip
Plate 64
Ky vs Axios: 9.8 KB vs 19.6 KB Gzip
Plate 26
Picocolors vs Chalk: 1.0 KB vs 3.4 KB Gzip
Plate 17
Immer vs Mutative: 86 us vs 3 us per Update
Plate 93
Nanostores vs Jotai: 1.3 KB vs 2.7 KB Gzip
Plate 66
Jotai vs Zustand: 0.15 ms vs 0.17 ms per Update
Plate 38
TanStack Query vs SWR: 10.4 KB vs 5.6 KB Gzip
Plate 60
Zustand vs Redux Toolkit: 0.14 ms vs 0.68 ms per Update
zustand 5.0.15 vs @reduxjs/toolkit 2.13.0 + react-redux 9.3.0 on React 19.3.0 (jsdom, NODE_ENV=production). 1,000 selector-subscribed rows, 300 flushSync updates x 7 trials, 2 runs: per-update median 0.137/0.139 ms vs 0.676/0.694 ms (~5x); 1 row re-rendered per update in both. Store-only: 1,376,191 vs 6,502 updates/s; Immer autoFreeze off lifts RTK to 386,966. Gzip (React external): 387 B vs 9,708 B. Fixture /workspace/bench-zustand-rtk/.
Plate 48
Zod vs Valibot: 1.14M vs 0.97M Parses
zod 4.6.5 vs valibot 1.5.0 on one nested user schema (uuid/email/age/tags/profile/enum). Warm medians after 2k warmup + 9×50k: zod.parse 1,144,494 ops/s vs valibot.parse 968,187 (~1.18×). safeParse fail: valibot 697,760 vs zod 415,523 (~1.7×). esbuild minify+gzip9: 452,999/92,636 B vs 85,126/15,422 B. Package trees ~6.1 MB vs ~1.9 MB. Fixture /workspace/bench-zod-valibot/.
Plate 93
UnoCSS vs Tailwind: 10.5KB vs 18.5KB CSS
UnoCSS 66.5.2 (presetWind3) vs Tailwind CSS 4.1.13 (@tailwindcss/vite) on Vite 7.3.6: 80 HTML cards, same utility set, minify off. CSS 10,454 B (118 selectors) vs 18,473 B (119). Warm vite build medians (7 rounds, cache cleared): Uno 749 ms vs Tailwind 416 ms. Fixture /workspace/bench-unocss-tw/.
Plate 89
Is webpack-bundle-analyzer Accurate? A 2.3x Size Gap
webpack-bundle-analyzer 5.4.0 vs source-map-explorer 2.5.3 on one webpack 5.111 production build (148,569 B): date-fns 44,313 B vs 19,196 B (2.3x) because of module concatenation estimates; lodash 70,136 vs 70,312 B. CLI medians 313 ms vs 224 ms (JSON).
Plate 80
size-limit vs bundlesize: Should You Switch? 761ms vs 604ms
size-limit 11.2.0 (@size-limit/file) vs bundlesize 1.0.0-beta.2 on 3 prebuilt dist JS files: brotli median 761 ms vs gzip 604 ms; size-limit gzip mode 621 ms. App reported 57.69 kB brotli / 62.20 kB gzip / 60.74 kB bundlesize gzip.
Plate 91
tsup vs unbuild: Should You Switch? 931ms vs 2034ms
tsup 8.5.1 vs unbuild 3.6.1 on a 150-module TypeScript library (ESM+CJS): median 931 ms vs 2034 ms (~2.2x); with .d.ts 3213 ms vs 3740 ms (~1.16x). unbuild ESM 4.9% smaller, CJS 8.3% smaller; tsup README says not actively maintained.