postcss

A CSS transformation engine that parses styles into an AST, letting JS plugins lint, prefix, and rewrite CSS — the foundation beneath Autoprefixer, Tailwind, and 200+ other tools.

Library
npm
v8.5.28
28,977 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 96
Maintenance 96
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
88 /100 Excellent
Architecture 92
Code Quality 93
Innovation 88
Learning Curve 80

PostCSS parses CSS into an abstract syntax tree and exposes that tree to a pipeline of JavaScript plugins, each free to inspect or rewrite rules, declarations, and at-rules before the result is stringified back to CSS. It doesn’t impose its own syntax the way a preprocessor like Sass does — it works with real CSS (and CSS-like syntaxes via pluggable parsers) and lets the plugin ecosystem, not the core, decide what transformations happen.

That plugin model has made PostCSS the shared foundation underneath more than 200 published plugins, including Autoprefixer for vendor prefixing and Tailwind CSS’s own processing pipeline. The core ships as a small, dependency-light library (three runtime dependencies) with hand-maintained TypeScript type definitions, 100%-enforced test coverage, and a decade-old plugin contract that has stayed stable enough for that whole ecosystem to build on top of it without breaking changes.

What You Get

  • A stable, class-based CSS AST (Root/Rule/AtRule/Declaration/Comment) with walk* traversal helpers for writing your own transformations.
  • A processing pipeline (postcss(plugins).process(css)) that supports both synchronous and asynchronous plugins.
  • Built-in source map generation and consumption for tracing transformed CSS back to its original source.
  • Typed CSS syntax errors with optional terminal-highlighted output pointing at the exact source location of a parse failure.

Common Use Cases

  • Running Autoprefixer, Tailwind CSS, or cssnano — all of which are PostCSS plugins under the hood.
  • Writing a custom lint rule or codemod that needs to inspect or rewrite CSS programmatically.
  • Parsing non-standard CSS-like syntaxes (Sass, Less, CSS-in-JS template literals) via one of PostCSS’s pluggable syntax parsers.

Under The Hood

Architecture PostCSS splits CSS processing into three explicit stages: a tokenizer (lib/tokenize.js) that turns a raw CSS string into a flat token stream, a parser (lib/parser.js) that assembles those tokens into a class-based AST rooted at a Root node with Rule/AtRule/Declaration/Comment children, and a stringifier that walks the same AST back into CSS text. Plugins operate entirely on the AST between the parse and stringify stages, using walkDecls/walkRules/walkAtRules traversal helpers inherited from a shared Container base class. This split — the project’s own architecture documentation explicitly justifies it on performance and readability grounds — is what lets a decade of downstream plugins (Autoprefixer, cssnano, postcss-nested, and 200+ others) share one stable core without needing to write their own parser.

Tech Stack The runtime is plain, unbundled JavaScript published directly to npm, with dual CommonJS/ESM entry points declared via package.json’s exports map. TypeScript is used only for the test suite (via ts-node) and for hand-authored .d.ts type declarations shipped alongside the JS — there is no build-time compilation step for the library itself. Runtime dependencies are deliberately minimal: nanoid for identifier generation, picocolors for terminal-colored error output, and source-map-js for source map handling. Node’s engines field (^10 || ^12 || >=14) reflects an unusually wide backward-compatibility commitment for an actively maintained library.

Code Quality 26 TypeScript test files run through the lightweight uvu test runner, with a c8 coverage configuration that enforces 100% line coverage as a hard requirement, not an aspiration. A dedicated fuzzing directory hardens the parser against malformed input, and separate integration.js/old-node.js scripts test cross-Node-version behavior. ESLint runs as its own required test step, and the shipped .d.ts type definitions are validated with check-dts rather than trusted as-authored. This is a mature, rigorously tested codebase commensurate with sitting underneath hundreds of other packages’ CI pipelines.

API Design The public surface is a single factory function, postcss(…plugins), returning a Processor whose .process(css) result supports both synchronous .css access and .then() for pipelines containing async plugins. The AST’s walk* traversal methods mirror patterns familiar from other JS-ecosystem AST tools (e.g. Babel’s visitor style), which lowers the learning curve for anyone who has written a codemod before. The main friction newcomers hit is historical: a deprecated postcss.plugin() helper (kept for backward compatibility, emits a runtime warning) and the dual CJS/ESM export surface both add a small amount of legacy surface area a brand-new API wouldn’t have.

Used by 277 apps in this directory

Go
66%
Apache 2.0

open-code-review

Developer Tools · Devops

42,000

The AI code review agent born at Alibaba's scale — combining deterministic engineering with LLM intelligence for precise, token-efficient reviews.

View details
82
Repo Health
83
Technical
80
Dependency
Built with
Go 66%
JavaScript 13%
TypeScript 11%
Updated 2 weeks ago
TypeScript
71%
Apache 2.0

open-design

Design Tools

98,365

Local-first, open-source Claude Design alternative that turns your existing coding agent CLI into a full agentic design studio — with 259+ skills, 142+ design systems, and sandboxed artifact delivery across web, desktop, and mobile surfaces.

View details
85
Repo Health
86
Technical
72
Dependency
Built with
TypeScript 71%
HTML 22%
Updated 1 weeks ago
TypeScript
95%
MIT

Open Lovable

AI Development

28,602

An open-source AI app builder that scrapes a live website and recreates it as a modern React app through chat — built by Firecrawl as a self-hostable example of the Lovable.dev workflow.

View details
35
Repo Health
66
Technical
70
Dependency
Built with
TypeScript 95%
Updated 10 months ago
TypeScript
96%

Open Scouts

AI Agents · Automation

1,372

Create automated AI scouts that continuously search the web and send email alerts when they find what you're looking for.

View details
34
Repo Health
65
Technical
69
Dependency
Built with
TypeScript 96%
Updated 4 months ago
TypeScript
82%
AGPL 3.0

OpenStatus

Devops · Monitoring

9,143

Open-source status pages and uptime monitoring with global synthetic checks, monitoring-as-code, and AI agent integration via MCP.

View details
77
Repo Health
82
Technical
69
Dependency
Built with
TypeScript 82%
MDX 15%
Updated 1 weeks ago
Python
37%
Other

Open WebUI

AI Agents · AI Assistants

153,390

The extensible, privacy-first AI platform that runs Ollama, OpenAI, and any LLM backend behind a polished, feature-packed web interface.

View details
91
Repo Health
75
Technical
66
Dependency
Built with
Python 37%
Svelte 34%
JavaScript 21%
Updated 1 weeks ago
Python
100%
Other

OpenBB

Analytics · Databases · Invoicing Finance

73,553

The AI Workspace for Finance: Connect Data, Run AI Agents, Build Analytics

View details
77
Repo Health
80
Technical
67
Dependency
Built with
Python 100%
Updated 1 weeks ago
TypeScript
91%
MIT

OpenClaw

AI Agents · AI Assistants

390,670

An open-source AI assistant that runs on your own hardware and meets you in Discord, Slack, WhatsApp, iMessage, Telegram, and 20+ other channels, with native apps for every major platform.

View details
88
Repo Health
88
Technical
68
Dependency
Built with
TypeScript 91%
Updated 1 weeks ago
TypeScript
38%
AGPL 3.0

OpenObserve

Analytics · Devops · Monitoring

22,161

Open source observability platform for logs, metrics, traces, and real user monitoring — delivering 140x lower storage costs than Elasticsearch with a single binary you can run in under 2 minutes.

View details
90
Repo Health
9
Technical
71
Dependency
Built with
TypeScript 38%
Rust 30%
Vue 18%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers