CSS :has() Selector: The JavaScript Hacks I Finally Deleted
I spent three years faking a CSS parent selector with useEffect and MutationObserver. Then :has() shipped everywhere. Here's what I deleted and what stayed.
I spent three years faking a CSS parent selector with useEffect and MutationObserver. Then :has() shipped everywhere. Here's what I deleted and what stayed.
My real Tailwind v3 to v4 migration notes: the utility renames, the CSS-first config, the PostCSS pipeline change, and every place my styles quietly broke.
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…
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…
Tailwind v4 dropped the darkMode config key. Here is how dark mode works now: one CSS custom-variant line, the theme-flash fix, and a real system…
I shipped the same marketing site in Next.js and then in Astro, then kept score. Here's when I actually reach for each, with bundle numbers…
Tailwind v4 ships container queries in core. Here's the rewrite that stopped my product cards from breaking in sidebars, and where I still avoid them.
Eight months running React Server Components in production. The boundary patterns that worked, the bugs I shipped, and when I still pick client components.
After 4 years with Tailwind, I extract components way later than guides suggest. Here's what earns a real component, what stays inline, and why my…