React’s useActionState: The Hook That Replaced My Form Reducers
Six weeks with useActionState in React 19: where it kills useReducer, the error-handling pattern I use, and when I still reach for the old way.
Six weeks with useActionState in React 19: where it kills useReducer, the error-handling pattern I use, and when I still reach for the old way.
I replaced Redux Toolkit with Zustand on two React apps and stopped on a third. Here are the patterns I actually use and when Redux…
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…
My honest take on Bun vs Node after six months of mixing both: where Bun earned a real spot in my workflow, and where Node…
I shipped a refund bug that branded types would have caught. Here is how I use TypeScript branded types for IDs, money, and validated input,…
Six months after React 19 went stable, here are the features I actually use day to day, the ones I forget exist, and the ones…
The TypeScript satisfies operator fixed my worst type-narrowing habits. Where I use it, where as is still better, and the trap with as const.
I resisted Next.js server actions for two years. Then I rebuilt a dashboard with them and dropped my /api form routes. Here's what worked and…