REQUIRED WORK

99% complete.

77 / 78 required criteria

7 workstreams / 1 release target

01 · 8/8Zero dependencyRuntime · package · clean install
100%
02 · 13/13JS APIEntry point · results · sync APIs
100%
03 · 11/11PluginsLifecycle · context · diagnostics
100%
04 · 18/19Node N-APINative async/sync · packaging
95%
05 · 11/11Core CSSTokenizer · parser · AST · maps
100%
06 · 7/7CLI/packageConfig · reporting · migration
100%
07 · 9/9Browser/WASMWorker · plugins · CSP · contracts
100%

Product target

postcss-go is an independent Go-backed implementation of the PostCSS public API and plugin model. Production source, published packages, the CLI, and every runtime backend must work without installing or loading the postcss package.

The target Node.js package will provide a PostCSS-compatible public surface implemented and owned by postcss-go. This includes the entry point and processor, AST classes and constructors, parsing and stringifying helpers, plugin helpers, results, inputs, warnings, errors, source maps, and public TypeScript contracts.

PostCSS remains available only in development fixtures, differential tests, the vendored upstream compatibility suite, and benchmarks. Unsupported behavior must produce a stable diagnostic; it must never silently fall back to PostCSS.

Current status

Required completion criteria

Zero PostCSS production dependency

Public JavaScript API

Plugin execution

This section is the JavaScript plugin runtime used by Node, the CLI, and the browser WASM Worker. Go-native Plugin/Visitor values in pkg/api are a separate API: they share parse, stringify, and source maps with the JavaScript path, but they walk the tree once and do not dirty-rewalk.

Node N-API and synchronous execution

Core CSS pipeline

Node CLI and package boundary

Browser and WASM

Optional performance work

The current compact binary AST transfers the tree once before JavaScript plugin execution and once before final stringification. A persistent opaque-handle AST is an optimization, not a prerequisite for removing PostCSS or exposing the N-API synchronous API.

The Go handle ABI lives in internal/asthandle and is measured by pnpm bench:boundary Part E. Production Node N-API exports the same handle surface (handleParse, batched field I/O, cursors) for declaration-only plugin pipelines; cached native handles beat bulk binary transfer on that visitor shape at 1–30 plugins. They are not a full PostCSS node facade (raws, custom nodes, dirty rewalk, Result/helpers), and the WASM Worker path still needs a serializable tree. Production therefore keeps the compact binary AST and DTO protocols for compatibility boundaries.

Validation and release gates

These boxes are the publication checklist. A checked item was verified during implementation. Unchecked items stay open until they are re-run or completed as part of a release.

Implementation order