ShopperCove
Menu
All writingBlogTopicsCategoriesAboutRSS
Blog
Categories
Observability & SRE62All categories
Topics
sre111localhost lab102performance70python58javascript47bundle size36benchmarking35node.js35web development21typescript19benchmark16content creation15All topics
About
Loading posts…

ShopperCove

Hands-on notes on developer tools, written after the tool has actually been run.

All writingBlogCategoriesTopicsAboutPrivacyRSS

© 2026 ShopperCove

Latest stories from ShopperCove

vite-plugin-pwa: +1.25s Build Overhead

Vite 8.3.2 plain vs Vite 8.3.2 + vite-plugin-pwa 2.0.0 generateSW on a 40-card vanilla app (minify off). Warm medians (7 rounds, cache cleared): plain 202 ms vs PWA 1,452 ms (+1,250 ms). Dist 4,426 B / 5 files → 21,142 B / 8 files (sw.js 1,347 B, workbox 15,026 B, manifest 293 B). Fixture /workspace/bench-vite-pwa/.

6 Oct 20264 min read
→

Sharp vs Jimp: 112ms vs 366ms Resize

sharp 0.35.5 vs Jimp 1.6.1 on one 1920×1080 JPEG → width 800 JPEG q80. Warm medians (7 rounds after 1 warm-up): sharp 112 ms / 142,435 B vs Jimp 366 ms / 269,590 B (~3.3×). Fixture /workspace/bench-sharp-jimp/.

6 Oct 20264 min read
→

UnoCSS vs Tailwind v4: Which Ships Smaller 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/.

6 Oct 20264 min read
→

Playwright vs Cypress: 1.47s vs 4.24s Smoke

Playwright 1.55.1 Chromium vs Cypress 14.5.4 Electron on one local smoke (visit /, assert h1, click, assert). Warm medians (7 rounds after 1 warm-up): Playwright 1,466 ms vs Cypress 4,243 ms (~2.9x). Disk: PW node_modules ~12 MB + cache ~918 MB; Cypress node_modules ~23 MB + cache ~601 MB. Fixture /workspace/bench-pw-cy/.

6 Oct 20264 min read
→

unplugin-auto-import: 360 Import Lines vs +267ms

unplugin-auto-import 20.3.0 + unplugin-vue-components 29.2.0 on Vue 3.5.43 / Vite 7.3.6: 40 components, 40 utils, 20 composables. Import lines 382 → 22 (−360). Warm production build medians (minify off, 7 rounds): manual 940 ms vs auto 1,207 ms (+267 ms); both 105 modules; JS 209.03 → 210.88 kB.

6 Oct 20265 min read
→

vite-plugin-checker: Plain Vite Shipped My TS Error

vite-plugin-checker 0.10.3 with enableBuild on Vite 7.3.6 / TS 5.9.3 / React 19: clean wall medians plain 1,949 ms vs checker 2,018 ms (+69 ms) vs tsc --noEmit 985 ms. Injected TS error: plain vite exit 0 (ships dist) x3; checker exit 2 x3; tsc exit 2 x3. Fixture 122 modules.

6 Oct 20265 min read
→

Changesets vs standard-version: 3 Package Bumps vs 1

standard-version 9.5.0 vs Changesets 3.0.3 (plus fork commit-and-tag-version 13.2.1) on a 3-package npm workspace with 31 commits: standard-version bumped only root to 1.1.0; Changesets bumped core 1.1.0, ui/cli 1.0.1 and internal deps. Installs: 191 pkgs / 21.1 MB vs 40 pkgs / 4.2 MB. Version step 267 ms vs 148 ms.

6 Oct 20265 min read
→

bun test vs Vitest: 136ms vs 1.67s on 300 Tests

bun test 1.4.2 vs Vitest 5.0.3 on 300 TypeScript tests in 60 files: warm wall medians 136 ms vs 1,673 ms (~12x); Vitest --no-isolate 765 ms (~5.6x). A 5-file vitest-API check (vi.fn, vi.mock, fake timers, spyOn, it.each, snapshot) passed 7/7 under Bun.

6 Oct 20265 min read
→

Turbo vs Lage: 1.97s vs 3.01s Cold Build

Turbo 2.11.7 vs Lage 2.17.0 on a 4-package diamond npm workspace (250k-iter build scripts): cold wall medians 1,974 ms vs 3,007 ms (~1.5x); Turbo warm 4/4 cache hits ~0.50 s; Lage warm ~1.49 s. Lage required git init.

5 Oct 20264 min read
→

esbuild-register vs jiti: 343ms vs 540ms Cold

esbuild-register 3.6.0 vs jiti 2.7.0 on a 61-file TypeScript graph: cold wall medians 343 ms vs 540 ms (~1.57x); after jiti disk cache warm, 185 ms vs esbuild-register 350 ms. Same printed result 970.

5 Oct 20264 min read
→

ncu vs npm outdated: 4 Majors Beyond Wanted

npm-check-updates 23.1.0 vs npm outdated on 7 stale deps (axios/eslint/lodash/prettier/react/typescript/vite): ncu proposed 4 majors (React 19, Vite 8, TypeScript 7, ESLint 10) while npm Wanted stayed in-range; wall medians 863 ms vs 783 ms.

5 Oct 20265 min read
→

Vite vs Parcel: 0.69s vs 1.72s Cold Dev Start

Vite 7.3.6 vs Parcel 2.16.4 on a 40-page React 19 TS fixture (147 modules): cold serve-ready median 692 ms vs 1,718 ms (~2.5x); cold prod build wall median 2,586 ms vs 1,806 ms; JS 228,426 B vs 227,172 B with Parcel --no-source-maps.

5 Oct 20265 min read
→
Previous
  1. 1
  2. …
  3. 18
  4. 19
  5. 20
  6. …
  7. 41
Next

Notes when a lab post goes up

Occasional email for new hands-on reviews. No sequence and no sponsors.