The @apply Habit I Broke Moving to Tailwind v4
Tailwind v4 stopped letting @apply see my @layer components classes. The fix was not converting them to @utility, it was deleting most of them. Here…
Tailwind v4 stopped letting @apply see my @layer components classes. The fix was not converting them to @utility, it was deleting most of them. Here…
I migrated three production projects from Tailwind v3 to v4 in one weekend. What the upgrade tool fixed, what silently broke, and the checks I'd…
Bootstrap hasn't shipped a release since August 2025 while Tailwind shipped three. Here's how that changed which one I pick, and when I still choose…
Tailwind v4 makes container queries built in. Here is the card that broke in a narrow sidebar, the @container rewrite that fixed it, and when…
Tailwind v4 dark mode: why your theme flashes white on load, the blocking script that fixes it, and the color-scheme line that saves your scrollbars.
I moved a Next.js app from Tailwind v3 to v4 on a Sunday. Here's what the @theme block, the Oxide engine, and the one migration…
CSS Subgrid finally solved my card-grid alignment problem without JavaScript. Here's the before/after code I use in production, plus what still breaks.
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.
Tailwind v4 ships container queries as first-class utilities. Here's the @container pattern I now reach for, with before-and-after code from real components.