tailwindlabs/tailwindcss
A utility-first CSS framework for rapid UI development.
How tailwindcss is put together
This is the Tailwind CSS v4 monorepo: a utility-first CSS framework distributed as a set of npm packages (core `tailwindcss`, plus integrations for CLI, PostCSS, Vite, Webpack, Turbopack, browser runtime, standalone binaries, and a v3-to-v4 upgrade tool). Performance-critical parsing/scanning (candidate extraction, globbing, file walking) is implemented in Rust under a Cargo workspace (`crates/oxide`, `crates/ignore`, `crates/node`) exposed to JS via napi-rs native bindings and WASM, while the orchestration, plugin system, and build integrations are TypeScript. Data flow: user CSS entry files (with @import/@config/@source/@plugin/@theme directives) are parsed, candidate class names are extracted from content files via the Rust scanner, utilities are generated from theme variables in CSS, and the result is emitted through the chosen integration (CLI, PostCSS plugin, bundler plugin). There is no server, database, or network service; it is a developer toolchain built and tested with pnpm workspaces, Turborepo, Vitest, Playwright, and cargo.
Languages
Frameworks
Infrastructure
Major components
packages/tailwindcss (core)
The core Tailwind engine: parses CSS directives (@theme, @utility, @apply, @config), generates utilities, ships preflight/theme/utilities stylesheets.
crates/oxide
Rust implementation of high-performance scanning: candidate extraction, fast-skip lexing, glob matching, and path handling, exposed as a binary/library for node bindings.
crates/node
napi-rs Node.js bindings that bridge the Rust oxide scanner into the JavaScript packages.
crates/classification-macros
Proc-macro crate supporting classification of Rust types used by the oxide scanner.
@tailwindcss-cli / @tailwindcss-standalone
Command-line interface that compiles CSS from stdin/files to output files with watch mode; standalone package bundles platform-specific native binaries.
@tailwindcss-postcss / @tailwindcss-vite / @tailwindcss-webpack / @tailwindcss-turbopack
Integrations exposing Tailwind as plugins/loaders for PostCSS, Vite, Webpack, and Turbopack build pipelines.
@tailwindcss-upgrade
Codemod tool that migrates Tailwind v3 projects (config JS/TS files, CSS, HTML classes) to v4 syntax, including git-aware file handling.
integrations/
End-to-end integration test suites that spin up fixture projects and run the real CLI/PostCSS/Vite/upgrade tooling against them.
This week was all about performance and correctness fixes, with big wins for Vite users on projects with lots of ignored files.
3 weeksWeek of 2026-08-10
Week of 2026-08-10latest
This week was all about performance and correctness fixes, with big wins for Vite users on projects with lots of ignored files.
Week of 2026-08-03
The team improved platform compatibility with a WebAssembly fallback and fixed several edge cases in class detection.
Week of 2026-07-27
A new Turbopack loader shipped this week alongside fixes for symlinked files and better handling of advanced CSS at-rules.
Over the past three weeks the Tailwind CSS team focused heavily on making builds faster and more reliable, especially in Vite-based projects where large folders and full page reloads were slowing things down. They also added a new Turbopack loader for Next.js-style setups and a WebAssembly fallback so the core engine works on more platforms. Alongside those bigger items came a steady stream of small fixes to how classes are detected and CSS is generated.
Week by week
2026-08-10This week was all about performance and correctness fixes, with big wins for Vite users on projects with lots of ignored files.latest6 changes
Refactor
Faster Vite rebuilds
Projects using the Vite plugin with large gitignored directories no longer suffer from slow rebuilds.
Fix
No unnecessary full page reloads
The Vite plugin now avoids forcing the whole browser page to reload when it isn't needed.
Fix
Cleaner supports- variants
Words like 'and', 'or', and 'not' inside supports-[...] conditions are no longer incorrectly spaced out.
Fix
Skip unsupported theme values
Utilities no longer output values when an unsupported modifier is attached, avoiding broken CSS.
Fix
Safer scanner input
Files containing invalid text encoding are dropped as candidates instead of causing problems.
Fix
Safer legacy config conversion
Converting old config files no longer breaks when certain theme sections contain plain strings.
2026-08-03The team improved platform compatibility with a WebAssembly fallback and fixed several edge cases in class detection.6 changes
Feature
WebAssembly fallback for the core engine
If the fast native engine can't run on someone's machine, a WebAssembly version is used instead so everything still works.
Fix
Prevent Vite crash
The Vite plugin no longer crashes when used with Vite's experimental 'bundledDev' mode.
Fix
Better Ruby class detection
Class names written in Ruby string literals with angle brackets or custom delimiters are now found correctly.
Fix
Respect ignored folders in safelisting
Folders listed in .gitignore are skipped during safelist scanning, saving time and avoiding noise.
Fix
--default() emits values unchanged
The --default(...) function now outputs its value exactly as given rather than altering it.
Chore
Dependency updates
Several underlying libraries were bumped to newer versions for stability and security.
2026-07-27A new Turbopack loader shipped this week alongside fixes for symlinked files and better handling of advanced CSS at-rules.6 changes
Feature
Turbopack loader support
Tailwind can now be used directly with Turbopack (the faster Next.js bundler), complete with integration tests.
Fix
Symlinked file changes detected
Editing files that live outside the project but are linked into it via symlinks now triggers rebuilds correctly.
Fix
Better @scope handling
CSS that uses the @scope rule is processed more reliably.
Fix
Cleaner fallback variable formatting
Fallback values in CSS variables are formatted consistently with a space after commas.
Chore
BOM character test coverage
Tests were updated to confirm the invisible byte-order mark at the start of files is re-emitted correctly by PostCSS.
Refactor
Smarter variant conversion
Variants with custom bracketed values are converted to built-in equivalents where possible, producing tidier code.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 8 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required