NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #49 most downloaded on npm
Tool for transforming styles with JS plugins
Last release 1 months ago
03 Sep 2026
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
292 releases · first in 2013
Fixes types regression.
Fixed Chinese text in deprecation warning (by @Jesse205 ).
/*# (by @dylanpulver).* hack before a comment in Custom Properties (by @Jaybhade).list.comma() (by @MahinAnowar).list.space() (by @MahinAnowar).One column per quarter.
Fixed list.split() regression (by @lazerg ).
Fixed 8.5.17 visitor regression.
list.split() for non-string values (by @amir-rezaei).Preserve the BOM after the processing (by @hdimer ).
Do not load source map without opts.from for security reasons.
opts.from for security reasons.Fixed custom property losing semicolon before a comment (by @sarathfrancis90 ).
Fixed childless at-rule losing semicolon before comment (by @sarathfrancis90 ).
Fixed missing space if AtRule#params is set after (by @sarathfrancis90 ).
AtRule#params is set after (by @sarathfrancis90).Fixed cleaning before for new nodes inserted to Root (by @MahinAnowar ).
before for new nodes inserted to Root (by @MahinAnowar).Restricted loading previous source maps file to the opts.from folder for security reasons (use unsafeMap: true to disable the check).
opts.from folder for security reasons (use unsafeMap: true to disable the check).Fixed Maximum call stack size exceeded error.
Maximum call stack size exceeded error.postcss.fromJSON().Input#origin() for unmapped end position (by @chatman-media).Fixed Input#origin() position (by @mizdra).
Input#origin() position (by @mizdra).raws after rehydrating a JSON AST (by @sarathfrancis90).nodes of new node (by @MahinAnowar).offset in positionBy() (by @greymoth-jp).rangeBy() on index: 0 (by @sarathfrancis90).Fixed declaration parsing performance (by @homanp).
Fixed custom syntax regression (by @43081j).
Fixed postcss-scss commend regression.
postcss-scss commend regression.Fixed reading any file via user-generated CSS.
opts.unsafeMap to disable checks.Fixed nested brackets parsing performance (by @offset).
Fixed XSS via unescaped in non-bundler cases (by @TharVid).
</style> in non-bundler cases (by @TharVid).Speed up source map encoding paring in case of the error.
- Fixed Processor#version.
Processor#version.Improved source map annotation cleaning performance (by CodeAnt AI).
Fixed ContainerWithChildren type discriminating (by @Goodwine).
ContainerWithChildren type discriminating (by @Goodwine).Fixed package.json→exports compatibility with some tools (by @JounQin).
package.json→exports compatibility with some tools (by @JounQin).Fixed Parcel compatibility issue (by @git-sumitchaudhary).
Added more details to Unknown word error (by @hiepxanh).
Unknown word error (by @hiepxanh).Fixed end position of rules with semicolon (by @romainmenke).
Fixed backwards compatibility for complex cases (by @romainmenke).
PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.
<img src="https://github.com/user-attachments/assets/6ef654a0-d675-4ba0-a670-e28ef27062f5" align="right" width="200" height="200" alt="President Alloces seal">
PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.
@romainmenke during his work on Stylelint added Input#document in additional to Input#css.
root.source.input.document //=> "<p>Hello</p>
// <style>
// p {
// color: green;
// }
// </style>"
root.source.input.css //=> "p {
// color: green;
// }"
This release was possible thanks to our community.
If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:
Fixed custom syntax without source.offset (by @romainmenke).
source.offset (by @romainmenke).Fixed position calculation in error/warnings methods (by @romainmenke).
- Removed debug code.
Fixed Cannot read properties of undefined (reading 'before').
Cannot read properties of undefined (reading 'before').Removed unnecessary fix which could lead to infinite loop.
Another way to fix markClean is not a function error.
markClean is not a function error.Fixed markClean is not a function error.
markClean is not a function error.Fixed CSS syntax error on long minified files (by @varpstar).
Fixed types (by @nex3 and @querkmachine).
Moved to getter/setter in nodes types to help Sass team (by @nex3).
Fixed CssSyntaxError types (by @romainmenke).
CssSyntaxError types (by @romainmenke).Fixed endIndex: 0 in errors and warnings (by @romainmenke).
endIndex: 0 in errors and warnings (by @romainmenke).Fixed original.column are not numbers error in another case.
original.column are not numbers error in another case.Fixed original.column are not numbers error on broken previous source map.
original.column are not numbers error on broken previous source map.Avoid ! in node.parent.nodes type.
! in node.parent.nodes type.undefined to node adding method to simplify types.Fixed AtRule#nodes type (by @tim-we).
AtRule#nodes type (by @tim-we).AtRule#nodes type (by Tim Weißenfels).Fixed NoWorkResult behavior difference with normal mode (by @romainmenke).
NoWorkResult behavior difference with normal mode (by @romainmenke).NoWorkResult usage conditions (by @ahmdammarr).NoWorkResult behavior difference with normal mode (by Romain Menke).NoWorkResult usage conditions (by @ahmdammarr).Fixed postcss().process() types (by @ferreira-tb).
postcss().process() types (by @ferreira-tb).Fixed \r parsing to fix CVE-2023-44270.
\r parsing to fix CVE-2023-44270.Improved source map performance (by @romainmenke).
Fixed Node#source.offset (by @idoros).
Node#source.offset (by @idoros).Node#source.offset (by Ido Rosenthal).Fixed Root.source.end for better source map (by @romainmenke).
Root.source.end for better source map (by @romainmenke).Result.root types when process() has no parser.Root.source.end for better source map (by Romain Menke).Result.root types when process() has no parser.Fixed Container clone methods types.
Container clone methods types.- Fixed clone methods types.
Improve stringify performance (by @romainmenke).
- Fixed Plugin types.
Plugin types.- Fixed warnings in TypeDoc.
Fixed TypeScript support with node16 (by @remcohaszing).
node16 (by @remcohaszing).Fixed Input#error types (by @hudochenkov).
Input#error types (by @hudochenkov).Fixed source map generation for childless at-rules like @layer.
@layer.Fixed whitespace preserving after AST transformations (by @romainmenke).
Your coding agent can read these notes before it upgrades. Set up the MCP server →