NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3132 most downloaded on npm
Nest rules inside each other in CSS
Last release 9 days ago
25 Sep 2026
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
66 releases · first in 2015
Throw when nested rules exceed the maximum depth
September 25, 2026
@csstools/selector-resolve-nested to 4.0.2 (patch)Updated `@csstools/selector-resolve-nested` to `4.0.1` (patch)
July 23, 2026
@csstools/selector-resolve-nested to 4.0.1 (patch)One column per quarter.
Updated: Support for Node 20.19.0 or later (major).
January 14, 2026
20.19.0 or later (major).commonjs API. In supported Node versions require(esm) will work without needing to make code changes.@csstools/selector-resolve-nested to 4.0.0 (major)@csstools/selector-specificity to 6.0.0 (major)Updated `@csstools/selector-resolve-nested` to `3.1.0` (minor)
June 10, 2025
@csstools/selector-resolve-nested to 3.1.0 (minor)Make sorting compound selectors forwards compatible with potential future changes in postcss-selector-parser
October 23, 2024
postcss-selector-parserpostcss-selector-parser@csstools/selector-resolve-nested to 3.0.0 (major)@csstools/selector-specificity to 5.0.0 (major)Make edition 2024-02 the default (major).
August 3, 2024
2024-02 the default (major).@csstools/selector-resolve-nested to 2.0.0 (major)@csstools/selector-specificity to 4.0.0 (major)_May 23, 2024_ - Fix nested rules within @scope
May 23, 2024
@scopeUpdated `@csstools/selector-specificity` to `3.1.1` (patch)
May 13, 2024
@csstools/selector-specificity to 3.1.1 (patch)Updated `@csstools/selector-specificity` to `3.1.0` (minor)
May 11, 2024
@csstools/selector-specificity to 3.1.0 (minor)Do not rewrite selectors for declarations in conditional rules to a form with :is()
April 21, 2024
2024-02:
:is()This will work:
::before, ::after {
color: blue;
@media screen { color: cyan; }
}
This still wont work:
::before, ::after {
color: blue;
&:hover { color: cyan; }
}
Updated `@csstools/selector-specificity` to `3.0.3` (patch)
March 31, 2024
@csstools/selector-specificity to 3.0.3 (patch)Add the edition plugin option to control which CSS nesting specification version should be used. The default is 2021 but you can also set it to the ne
March 6, 2024
edition plugin option to control which CSS nesting specification version should be used. The default is 2021 but you can also set it to the newer 2024-02 edition to have more modern behavior.Fix order of final CSS with complex usage of both nesting and mixins, by @pciarach
February 26, 2024
Updated `@csstools/selector-specificity` to `3.0.2` (patch)
February 19, 2024
@csstools/selector-specificity to 3.0.2 (patch)Updated `@csstools/selector-specificity` to `3.0.1` (patch)
December 15, 2023
@csstools/selector-specificity to 3.0.1 (patch)Fix nesting of @starting-style rules
August 5, 2023
@starting-style rulesChange license to MIT-0 (read more about this change in the blog post)
July 3, 2023
MIT-0 (read more about this change in the blog post)@csstools/selector-specificity to 3.0.0 (major)Add warning when using the deprecated @nest rule
June 14, 2023
@nest rule
silenceAtNestWarning plugin option_March 25, 2023_ - Improved: support for mixins
March 25, 2023
Skip nested rules that have a selector that begins with a letter
February 16, 2023
Added: support for & at the root
February 13, 2023
& at the root@nest is obsolete, all selectors can be written without it (sometimes you will need :is())
January 31, 2023
@nest is obsolete, all selectors can be written without it (sometimes you will need :is())⚠️ We advice everyone to migrate their codebase now to nested CSS without @nest.
Future versions of this plugin will warn and then error on @nest.
Improve types declaration in package.json
January 28, 2023
types declaration in package.jsonUpdated: Support for Node v14+ (major).
January 24, 2023
_September 14, 2022_ - Added: TypeScript typings
September 14, 2022
Partially revert the changes to pseudo element selectors from 10.1.9.
June 30, 2022
.anything::before {
@nest .something_else > & {
order: 1;
}
}
/* becomes */
- .something_else > :is(.anything::before) { /* 10.1.9 */
+ .something_else > .anything::before { /* previous and restored behavior */
order: 1;
}
The exact behavior of this pattern is unspecified and might change in the future. We are reverting to the previous behavior until the specification is clarified.
Fix selector order with any pseudo element.
June 23, 2022
Update @csstools/selector-specificity (major)
June 4, 2022
@csstools/selector-specificity (major)Add tentative support for @layer. The actual behavior is poorly defined and may change in the future. Use with caution.
May 20, 2022
@layer. The actual behavior is poorly defined and may change in the future. Use with caution.Fix selector order with :before and other pseudo elements.
May 17, 2022
:before and other pseudo elements.Use @csstools/selector-specificity for specificity calculations.
May 11, 2022
@csstools/selector-specificity for specificity calculations.Improved : compound selector order with pseudo elements
April 4, 2022
Avoid creating duplicate selectors containing only comments.
March 4, 2022
.alpha {
/* loose comment */
& .beta {
order: 1;
}
}
/* becomes */
- .alpha {
- /* loose comment */
- }
+ /* loose comment */
.alpha .beta {
order: 1;
}
Improved : selector specificity calculation
January 12, 2022
Removed Sourcemaps from package tarball.
January 2, 2022
Added: noIsPseudoSelector plugin option.
December 22, 2021
noIsPseudoSelector plugin option.:is() pseudo is now avoided as much as possible by default.more info on noIsPseudoSelector
postcssNesting({
noIsPseudoSelector: true
})
_December 13, 2021_ - Updated: documentation
December 13, 2021
Fixed: Support for Deno. Ensuring we pack mod.js so it can be accessible by CDNs.
November 18, 2021
mod.js so it can be accessible by CDNs.Removed: Support for allowDeclarationsAfterNestedRules.
November 17, 2021
allowDeclarationsAfterNestedRules.We've realised that enforcing this rule from the spec was going to be problematic in the long run given how plugins work and the whole ecosystem around mixins and other features. Treating this as a patch given that this was introduced in the previous version and was starting to break projects that were using other features.
Added: Support for allowDeclarationsAfterNestedRules to deviate from spec.
November 16, 2021
Added: Support for allowDeclarationsAfterNestedRules to deviate from spec.
Added: .npmrc file.
Updated: Aligning completely with the spec updates.
Updated: esbuild to 0.13.12 (minor)
Removed: Support for PostCSS 7
Fixed: Issue with PostCSS 8 compatibility using the RuleExit listener
October 27, 2021
Fixed: Compatibility issue with CommonJS.
May 1, 2021
Updated: Support for PostCSS 8+.
April 26, 2021
@container at-rule.Fixed: Non-breaking issue with rules being unnecessarily split
July 29, 2018
Since the specification has yet to be added to the official CSSWG repository, nested at-rule deprecation is further delayed.
September 17, 2018
In a comment, a CSSWG member expressed interest in handling nested @media
while handling selector nesting. Since the specification has yet to be added
to the official CSSWG repository, nested at-rule deprecation is further delayed.
Deprecated: Nested at-rules like @media will no longer work in 7.0.0
June 9, 2018
@media will no longer work in 7.0.0Refactored code to use Imports babel-transformed for Node v4 compatibility
March 24, 2018
Updated: Exposing the transform function as its own for postcss-extend
September 19, 2017
Added: Reduced splitting of rules
September 18, 2017
Added: Mutation-safe walk method
August 19, 2017
Improved: Selector validity testing
May 22, 2017
Changed: Transform only compliant nesting
May 20, 2017
_May 8, 2017_ - Added: Node 4.x support - Added: PostCSS 6 support - Added: Preserved ordering - Removed: Node 0.12 support
May 8, 2017
Updated: Allow any direct nesting that follows the syntactic constraints
March 16, 2016
Updated: JavaScript formatting, linting, tests, and documentation
February 20, 2016
Updated: Direct nesting order maintains order
January 30, 2016
_January 3, 2016_ - Updated: Project conventions
January 3, 2016
Fixed: Issue with new PostCSS rules
October 15, 2015
Updated: Nested rules source map to the parent rule
October 12, 2015
_September 23, 2015_ - Updated: Map source raws
September 23, 2015
Your coding agent can read these notes before it upgrades. Set up the MCP server →