React 19 Changed How I Write Forms (For the Better)
React 19 forms, useActionState, and useOptimistic with before-and-after code. The features I actually kept after upgrading, and the one I'm still careful with.
React 19 forms, useActionState, and useOptimistic with before-and-after code. The features I actually kept after upgrading, and the one I'm still careful with.
I've shipped Laravel apps with Livewire, Inertia.js, and a separate React SPA. Here's how I actually choose between them, with code and a few regrets.
Six TypeScript utility types that earn their keep in production, the hand-rolled types they replaced, and the clever ones I stopped using. Real code included.
I switched on the React Compiler in a real app and deleted most of my useMemo and useCallback calls. Here's what changed and where it…
I defended Redux for years, then Zustand made most of the boilerplate disappear. Here's how the two compare, with real code, and where I still…
What I actually keep in the hooks folder in 2026 - usePersistedState, useDebouncedValue, useEventListener - and the half-dozen custom hooks I quietly deleted.
Most htmx tutorials skip the part that confuses React developers. Here's the mental model I needed before any of it clicked, plus the four patterns…
How I actually use TypeScript's satisfies operator in real code, where it beats type annotations and as casts, and the two places I still don't…
Tailwind and Bootstrap stopped being the same kind of tool. Here's how I choose between them in 2026, with the code and the maintenance math…
React 19 turns ref into a regular prop, so forwardRef is on its way out. Here's how I migrate components, plus the codemod gaps and…