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.
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…
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…
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,…
I ignored Tailwind container queries for two years and it cost me. Here's the before/after of a card component I rebuilt, and when @container beats…
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 Tailwind v4 dark mode setup I actually ship: the two-line CSS variant, a flicker-free toggle, the prose gotcha, and a five-minute pre-ship audit.
A practical tour of React 19's useOptimistic hook with before/after code for a like button, a task list, and the gotchas I hit in production.
A practical Tailwind CSS v4 migration guide covering CSS-first config, the new @theme directive, container queries, and real before-and-after code examples.