# Feature catalog — postcss/postcss

> Canonical page: https://codevetter.com/unpack/postcss/feature-catalog

# Feature catalog — postcss/postcss

Scanned commit 7ac902664902289ea0cb9d6b1096b81e8d33bbf5 (2026-09-29). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The user-facing surface is a JavaScript API for transforming and inspecting CSS. Callers can use plugin processing, direct parsing, programmatic AST construction, custom syntaxes, diagnostics, source maps, and JSON hydration. Ecosystem tools supply features such as prefixing and linting, while external runners supply CLI and build-tool integration. Core features preserve source and formatting information to support those integrations.
- Callers can configure a reusable Processor with postcss(plugins), append plugins through use(plugin), and process multiple CSS inputs with per-call options. — [lib/postcss.js#L22-27](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.js#L22-L27) [lib/processor.js#L44-59](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/processor.js#L44-L59)
- LazyResult supports synchronous css/root/messages access and promise-style then, catch, and finally; synchronous processing throws when a plugin returns a promise. — [lib/lazy-result.js#L114-140](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/lazy-result.js#L114-L140) [lib/lazy-result.js#L194-212](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/lazy-result.js#L194-L212) [lib/lazy-result.js#L408-421](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/lazy-result.js#L408-L421) [lib/lazy-result.js#L445-455](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/lazy-result.js#L445-L455)
- The public API exposes factories for comments, at-rules, declarations, rules, roots, and documents, plus cloning, replacement, sibling insertion, and removal operations. — [lib/postcss.js#L77-82](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.js#L77-L82) [lib/node.js#L120-160](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L120-L160) [lib/node.js#L361-389](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L361-L389)
- Container offers mutation-aware walk plus type-specific walkAtRules, walkComments, walkDecls, and walkRules; applicable filters accept exact strings or regular expressions, and callbacks can stop traversal with false. — [lib/container.js#L327-369](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/container.js#L327-L369) [lib/container.js#L372-447](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/container.js#L372-L447)
- ProcessOptions accepts parser, stringifier, or combined syntax replacements, along with document, from, to, map, and unsafeMap; custom parsers can return Root or Document. — [lib/postcss.d.ts#L229-259](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.d.ts#L229-L259) [lib/postcss.d.ts#L317-361](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.d.ts#L317-L361) [test/processor.test.ts#L444-486](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/test/processor.test.ts#L444-L486)
- Source-map options include inline/external output, annotation strings or callbacks, source-name overrides, absolute paths, previous maps, and optional source content. — [lib/postcss.d.ts#L261-314](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.d.ts#L261-L314) [lib/map-generator.js#L27-43](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/map-generator.js#L27-L43) [lib/map-generator.js#L133-140](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/map-generator.js#L133-L140)
- Node.error creates source-positioned CssSyntaxError objects, Node.warn attaches nodes to result warnings, and Result.warnings filters the shared message channel by type. — [lib/node.js#L163-173](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L163-L173) [lib/node.js#L486-489](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L486-L489) [lib/result.js#L23-37](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/result.js#L23-L37) [lib/css-syntax-error.js#L41-50](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/css-syntax-error.js#L41-L50)
- Node.toJSON and postcss.fromJSON provide AST serialization/hydration; list.comma, list.space, and list.split separate values while respecting quotes, escapes, comments, and parentheses. — [lib/node.js#L400-467](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L400-L467) [lib/fromJSON.js#L63-103](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/fromJSON.js#L63-L103) [lib/list.js#L3-23](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/list.js#L3-L23) [lib/list.js#L25-74](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/list.js#L25-L74)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
