Vitest vs Jest in 2026: What I Reach For (and Why I Switched)
I've been migrating projects from Jest to Vitest since late 2024. Here's where Vitest actually wins, where Jest still beats it, and the playbook I…
I've been migrating projects from Jest to Vitest since late 2024. Here's where Vitest actually wins, where Jest still beats it, and the playbook I…
Six years of React, written from the bruises. When each hook actually earns its keep, and the times I reached for one and made things…
I rewrote our admin panel in htmx and kept our dashboard in React. Here's how the two compare in 2026, with code, gotchas, and when…
Valibot's bundle size win is real, but switching from Zod cost me more than I expected. Here's what I migrated, what I didn't, and why…
Six months using Cursor, GitHub Copilot, and Claude Code on the same projects. Where each wins, where each quietly fails, and how I actually combine…
Honest take on Drizzle vs Prisma after running both in production. When I switched my Next.js project, when Prisma still wins, and what tripped me…
I shipped sqlx in a Rust production service for 8 months. Here's the patterns I keep, the footguns that bit me, and what I'd do…
I deleted tailwind.config.js six months ago and moved every theme variable into CSS. Here's what changed about my workflow, and where the new approach still…
Six months running Laravel AI in production: the stack I actually reach for, the package I bailed on, and the parts that are still mostly…
Six Next.js server actions mistakes I shipped to production: trusting the client, missing revalidatePath, throwing errors wrong. With code fixes for each.