
Tailwind CSS in 2026: v4 and the New Engine
Picture this: it's a Tuesday morning in early 2025 and your team is staring at a 14-second hot reload on a Next.js 14 app. The Tailwind v3 JIT compiler is choking on a 240,000-line utility scan, your…
Quriostack
18 articles · 9 subcategories

Picture this: it's a Tuesday morning in early 2025 and your team is staring at a 14-second hot reload on a Next.js 14 app. The Tailwind v3 JIT compiler is choking on a 240,000-line utility scan, your…

One of my favourite things to do when I have some down time is to grab a random devkit from my pile of random devkits, and try and write some code that will run on it. I generally try and avoid exist…

Cites Forms plugin cutting insurance-app cross-browser input styling from a week to 20 minutes for three engineers in 2020, and the 2025 Web Almanac finding prose classes like prose-lg on ~4% of HTML pages. Provides a Tailwind v3 tailwind.config.ts with `forms({ strategy: 'class' })` (critical for not fighting existing custom form CSS) plus typography with DEFAULT css variable overrides --tw-prose-body slate-700, --tw-prose-headings slate-900, --tw-prose-links indigo-600, maxWidth 68ch, and prose-invert for dark. Notes aspect-video CLS reduction (0.05 good to 0.25 poor without reservation) and bundle sizes: Forms base ~6.5KB gzipped, class ~3.2KB, Typography ~4.8KB+2KB theme, Aspect Ratio ~0.8KB or ~0.3KB native-only. Recommends staging rollout via content-facing forms first then action triggers.

Detailed comparison covering rest vs graphql vs grpc: the 2026 comparison: architecture differences, performance benchmarks, ecosystem maturity, when to use each, and the 2026 verdict.

The article got pulled into a Slack debate last week between two engineers arguing about whether Tailwind was "real CSS." That conversation is a perfect proxy for the broader industry confusion: ther…

Nuxt 3 scores 89% satisfaction and 73% retention in the State of JS 2024 survey, beating Next.js's 84%, and has become the de facto Vue meta-framework. A friend migrated from hand-rolled Vue 3 + Vite to Nuxt 3 in a weekend, dropping LCP from 6.3s to 1.4s after a Product Hunt traffic spike. The stack pairs Vue 3 auto-imports with file-based routing and Nitro, which compiles to Node, Bun, Deno, Cloudflare Workers, Vercel Edge, or Netlify Edge. Use `runtimeConfig` (not `public`) for secrets and `setResponseHeader` for CDN caching.

Diagnoses why Tailwind bundles balloon—PurgeCSS/JIT misconfiguration, dynamic class names constructed at runtime, unused variants kept by safelist, and over-broad content glob patterns—and walks through a case study where a 412KB CSS bundle was pruned to 38KB (a 91% reduction) by enabling JIT mode, narrowing the content glob, and removing regex patterns that blocked detection. Cites a 2024 Web Almanac figure that median CSS request weight is 400K and Lighthouse penalizes 100ms of main-thread blocking. Recommends continuous bundle monitoring via bundlesize in CI with a 2% regression threshold, plus monthly audits of unused classes via coverage tools.

Ten daily Tailwind patterns composed from utilities rather than nested component abstractions: primary/secondary/ghost button trio using focus-visible:outline and active: variants, constrained max-w-7xl container, stacked form field with focus:ring-2 ring-inset, card with aspect-video media, avatar with status dot using ring-2 ring-white, modal backdrop with bg-gray-900/50 color-mix syntax, responsive 1-4 column grid, inline-flex items-center gap-2 icon buttons, status badges, and sr-only screen-reader-only labels.

The ten recurring REST mistakes ranked by impact: returning 200 OK for errors (breaks every gateway's status-code contract), verbs in URLs (POST /api/createUser instead of POST /v1/users), inconsistent error shapes, exposed auto-increment database IDs, missing or wrong pagination, missing Idempotency-Key headers on POST (causing double-charges), ignoring HTTP semantics like 201 Created with Location, unvalidated input, broken authentication, and missing versioning. Stripe's error envelope {error: {type, code, message, param}} is the de facto standard. A Series B company spent $2M on a v2 rewrite after two years of accumulated inconsistency. The fix order is: pick the highest-impact mistake, fix it across the API in one sprint, lint it in CI, then repeat.

Microsoft reported in 2022 that roughly 70% of the security vulnerabilities they patched in the year prior were memory safety issues — exactly the class of bugs Rust prevents by design. They've since committed to Rust for new systems-level code. The Linux kernel accepted Rust as a second official language in 2022.

Top 5 Tailwind Mistakes Beginners Make. The article started teaching Tailwind workshops in 2023, and It has watched hundreds of developers make the same handful of mistakes. They're not career-ending mistakes, but they slow you down, cause weird bugs, and frustrate the people reviewing your PRs. After running about a

Revises the long-standing 'avoid @apply' advice for Tailwind v4, presenting a three-tier mental model (inline utilities for one-offs, @apply for repeated semantic patterns in 3+ places, full components for behavior-driven styles). Walks through four worked examples (hero section, card pattern, prop-driven Button component, and v4 @utility directive) and warns about over-abstraction, @apply chains that duplicate component hierarchies, and the telltale signs of an over-extracted codebase.

Tailwind Plugins You Should Know in 2026. A few months ago It a PR that added a "forms" component to a project. The reviewer pointed out that It would written 47 lines of CSS to style inputs consistently across the app — and that `@tailwindcss/forms` would have done it in

A successful admin template rests on four pillars: adaptive layout shell (offcanvas on mobile, persistent sidebar on desktop), scalable navigation with collapse groups and search, density-tuned tables/forms (0.625rem padding), and coherent dark mode via Bootstrap 5.3's CSS variables. The Nimbus template demonstrates sticky sidebar, `/` keyboard shortcut, and theme persistence to avoid flash.

Reframes Rust compiler errors as three-part messages (location, summary, explanation) and shows that reading the explanation typically uncovers the real bug faster than patching with `clone()`, citing a 60-engineer team where instituting 'read the compiler error first' dropped median PR review cycles from 2.4 to 1.6. Walks through the seven most common errors (borrow of moved value, cannot borrow as mutable, lifetime mismatch, type annotations needed, trait bound not satisfied, use of moved value in async, async closures unstable in 2026) plus the E0597 and E0277 deep dives, with `cargo fix`, `rustc --explain`, and `cargo expand` as the meta-tools.

Frames Tailwind v4's Rust engine rewrite as 10x faster cold builds and even larger incremental wins, plus CSS-first @theme config, source-relative auto-detection, @utility directive, and @variant dark theming. Documents a v3-to-v4 migration that took five engineer-days across 280 components and dropped dev start from 9s to 1.4s. Walks through oklch() color scales, container queries, color-mix, and a Figma sync plugin over CSS variables.

Next.js 15 in 2026: App Router, Server Components, and the New Caching. Last October, Observations included a case where a senior engineer at a 200-person fintech stare at a Vercel dashboard for ten straight minutes. Their marketing page, the one they spent two months rewriting on App Router, was serving

For over a decade, we've relied on window.history to build Single Page Applications (SPAs), and for over a decade, we've complained about it. The reason? It was never really designed for SPAs. To provide a seamless experience, SPAs must mimic standard multi-page navigation by manually tapping into the browser's history to support the back and forward buttons.