mrkeyoor.com_
Wed 30 Sept 23:38 UTC
Webevaluationupdated 26 Aug 2026

tailwindcss review

Tailwind CSS is a utility-first CSS framework that turns class names in your templates into the styles your site uses. It solves the recurring work of naming selectors and maintaining a separate stylesheet by giving teams a shared set of small, composable utilities.

+86stars / 7d
Verdict

Our Tailwind CSS checkout passed 5,496 of 5,497 tests, but its Oxide build failed after 81 seconds, so application users can trust the tested core more readily than new contributors can trust a clean source build. Use v4 for modern-browser product work when utility classes make reviews and design tokens easier for your team. Stay on v3.4 for older browser targets, and choose another styling system if Sass or semantic class names are non-negotiable.

We ran it

Lab card: what happened when we ran tailwindcssScreenshot of tailwindcss (tailwindcss.com)
Install✓ · 70s383 packages · 956 MB
Build✗ · 81s
Tests✓ · 106s5496 passed · 0 failed · 1 skipped of 5497 (vitest)
Repo553 files~162,604 lines of source · 5.8 MB · 4 CI workflows

Answers from our run

Does tailwindcss build from source?

Dependencies installed in 70 seconds (383 packages), and the build failed. We cloned commit 90f8ff4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tailwindcss's tests pass?

Yes: 5496 of 5497 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use tailwindcss?

Sites that must support browsers older than Chrome 111, Safari 16.4, or Firefox 128: the v4 compatibility page says to stay on v3.4 for those targets.

What are the alternatives to tailwindcss?

UnoCSS, Bootstrap, vanilla-extract. Our Tailwind CSS checkout passed 5,496 of 5,497 tests, but its Oxide build failed after 81 seconds, so application users can trust the tested core more readily than new contributors can trust a clean source build.

Setup3/5Package use is simple; our 81-second source build failed
Docs5/5Official setup, upgrade, compatibility, and contributor guides
Community5/597,339 stars and active August 2026 issue and PR work
Maturity5/5v4.3.3 and 5,496 passing tests show a seasoned codebase

Discussed on

  1. hnCreators of Tailwind laid off 75% of their engineering team1,457 points
  2. hnTailwind CSS v2.238 points
  3. hnTailwind CSS JIT – The Next Generation of Tailwind CSS7 points

Who it’s for

Front-end teams that want a shared design vocabulary without building a component library first.
Product developers who prefer styling in markup and want unused utilities omitted from production CSS.
Vite, PostCSS, or CLI users targeting modern browsers.
Design-system teams willing to express tokens and custom utilities in CSS.

Who it’s NOT for

Sites that must support browsers older than Chrome 111, Safari 16.4, or Firefox 128: the v4 compatibility page says to stay on v3.4 for those targets.
Projects built around Sass, Less, or Stylus: Tailwind v4's compatibility guide says it is not designed to work with those preprocessors.
Teams unwilling to migrate v3 conventions: the official upgrade guide covers breaking changes, CSS-based configuration, and a Node.js 20 requirement for the upgrade tool.
Contributors expecting a JavaScript-only checkout: the contributing guide requires Rustup and a WASM target, and our repository build stopped inside the Oxide package.

Setup reality

Our sandbox installed 383 pnpm packages in 70 seconds and used 956 MB on disk. The build failed after 81 seconds in @tailwindcss/oxide; the visible log tail only shows a child process exiting with code 1. Tests then ran for 106 seconds, with 5,496 passed, 0 failed, and 1 skipped out of 5,497.

Using the published framework is much simpler than building its repository. The official paths cover Vite, PostCSS, a CLI, and framework-specific setup. A v3 migration can use @tailwindcss/upgrade, which requires Node.js 20 or newer.

Repository contributors also need Rustup and the wasm32-wasip1-threads target. Tailwind v4 targets modern browsers and explicitly excludes Sass, Less, and Stylus workflows. The monorepo has native Oxide code, so a successful pnpm install does not prove the full source build will work on a fresh machine.

Utility classes replace a second naming system

Tailwind CSS scans templates for utility names and generates the CSS those names require. A button can get spacing, color, typography, focus behavior, and responsive changes directly in its class attribute. That keeps the styling decision next to the markup and removes the separate job of inventing selector names. The trade is visible too: templates become denser, and a team has to agree that repeated utility strings are easier to maintain than a conventional stylesheet.

This is a large compiler project behind a familiar npm package. The checkout we measured contained 553 files and about 162,604 lines of source before installation. It is a pnpm workspace with TypeScript packages and the Rust-based Oxide engine. Most application developers will never touch that machinery. Contributors, package maintainers, and teams debugging edge cases across build tools will.

Version 4 expects CSS configuration and recent browsers

Tailwind v4 moved much of the configuration into CSS and has dedicated packages for Vite, PostCSS, and its command-line tool. The official upgrade utility can migrate dependencies, configuration, and template changes for many v3 projects. It requires Node.js 20 or newer. That migration deserves its own branch and visual checks because the guide documents breaking changes rather than promising identical output.

Browser policy is unusually clear. Version 4 depends on Chrome 111, Safari 16.4, and Firefox 128 as minimums. Tailwind advises projects with older targets to remain on v3.4. Its compatibility page also says the v4 build tool is not designed for Sass, Less, or Stylus. Those are firm selection limits, not minor setup warnings that a plugin will necessarily fix.

What happened when we ran it

Our sandbox installed 383 packages in 70 seconds, leaving 956 MB on disk. The build ran for 81 seconds and exited with code 1. The failing task was @tailwindcss/oxide#build under crates/node. The last log lines show Node's child-process exit handling and repeated lifecycle failures, but they do not expose the original error. We cannot responsibly name a missing package or tool from that tail.

The test result was much better. Vitest completed in 106 seconds with 5,496 passing tests, 0 failures, and 1 skip out of 5,497. That is strong evidence for the JavaScript and TypeScript behavior covered by the suite at commit 90f8ff4. It does not cancel the build failure, because contributors still need a successful Oxide artifact to reproduce the whole repository workflow.

The environment was a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets. Tailwind's contributing guide names Node.js, pnpm, and Rustup as requirements, then asks contributors to add the wasm32-wasip1-threads target before pnpm build. A successful dependency install followed by a native build failure is exactly why that contributor path should be tested before planning a patch.

Application setup is easier than repository setup

A normal project consumes released packages rather than compiling Oxide. The documentation has short recipes for framework integrations, while the core workflow starts by importing Tailwind and letting its scanner find class candidates. Teams still need to define theme variables, decide how shared components package repeated classes, and make generated class names discoverable to the scanner. Dynamic string construction remains something to examine during integration.

At repository scale, 956 MB after a 383-package install is a meaningful cost for CI caches and ephemeral workspaces. The source tree has 4 CI workflow files and no Dockerfile. That does not make the project unhealthy, since its workflows document a wide platform build matrix. It does mean there is no repository container that reproduces the exact contributor environment with one command.

Current fixes cover browsers, watchers, and build tools

Release v4.3.3 was published on July 16, 2026. Its fixes include polling for unreliable filesystem events, PostCSS rebuild behavior after preprocessor changes, Firefox focus outlines, Vite reload behavior, selector parsing, and Windows CJK font selection. This is maintenance across the places where a CSS compiler meets operating systems and bundlers, rather than a release built around one headline feature.

GitHub recorded the last push on August 14, 2026 and listed 57 open issues and pull requests when fetched. Recent activity included an issue about Vite CSS imports discarding user resolve.conditions, alongside proposed fixes. The combined count must not be read as 57 confirmed bugs. It does show that integration details keep moving after a stable release.

The decision depends on markup taste and platform limits

Tailwind is easiest to recommend when a team already reviews UI at the component level. Utility classes make spacing and responsive intent explicit, and theme variables give designers and developers a shared vocabulary. The mature documentation and 5,496 passing tests reduce adoption risk. Existing v4 users also get a project that was still receiving fixes in August 2026.

Walk away when the constraints clash with the product. Older-browser support points to v3.4, preprocessor-heavy codebases face an explicit incompatibility, and developers who prize short semantic class attributes may resent the core authoring model. For contributors, budget beyond the 70-second install: our build failed in Oxide, and the available log tail did not say why.

Alternatives

ProjectWhat it isPick it when
UnoCSSAn on-demand atomic CSS engine with presets and a highly configurable rule system.pick this instead when custom utilities, shortcuts, and preset composition matter more than Tailwind compatibility.
Bootstrap gh↗A CSS framework with ready-made components and established layout conventions.pick this instead when you want supplied component styling and can accept its visual conventions.
vanilla-extractA zero-runtime CSS-in-TypeScript system with typed themes and generated stylesheets.pick this instead when type-safe style objects and named classes suit the team better than utility-heavy markup.

What people are saying

  1. [github-trending] tailwindlabs/tailwindcss

Sources

  1. Tailwind CSS repository
  2. Tailwind CSS v4 compatibility
  3. Tailwind CSS upgrade guide
  4. Tailwind CSS contributing guide
  5. Tailwind CSS v4.3.3 release
  6. Vite resolve.conditions issue 20426

More web reviews

chi · youtube-ambilight · hyalite--liquid-glass · human-atlas · liquid-glass-screens · echarts · the whole board →