NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3216 most downloaded on npm
Use Custom Selectors in CSS
Last release 2 days ago
02 Oct 2026
Release timing varies
gaps range from 8 days to 8 months
Nearly every release is documented
notes for 45 of 45 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
45 releases · first in 2014
Bound the total number of generated selectors to prevent an exponential blowup from nested custom selectors.
October 2, 2026
Updated `@csstools/css-parser-algorithms` to `4.0.2` (patch)
October 1, 2026
@csstools/css-parser-algorithms to 4.0.2 (patch)@csstools/cascade-layer-name-parser to 3.0.2 (patch)One column per quarter.
Fix exponential growth of cascade layer names for deeply nested @layer rules
September 25, 2026
@layer rules@layer nesting exceeds a safe depth@csstools/css-tokenizer to 4.0.1 (patch)@csstools/css-tokenizer to 4.0.2 (patch)@csstools/css-parser-algorithms to 4.0.1 (patch)@csstools/cascade-layer-name-parser to 3.0.1 (patch)Fix importance of custom media in anonymous cascade layers.
February 21, 2026
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/css-tokenizer to 4.0.0 (major)@csstools/css-parser-algorithms to 4.0.0 (major)@csstools/cascade-layer-name-parser to 3.0.0 (major)Updated `@csstools/css-tokenizer` to `3.0.4` (patch)
May 27, 2025
@csstools/css-tokenizer to 3.0.4 (patch)@csstools/css-parser-algorithms to 3.0.5 (patch)@csstools/cascade-layer-name-parser to 2.0.5 (patch)Updated `@csstools/css-tokenizer` to `3.0.3` (patch)
November 1, 2024
@csstools/css-tokenizer to 3.0.3 (patch)@csstools/css-parser-algorithms to 3.0.4 (patch)@csstools/cascade-layer-name-parser to 2.0.4 (patch)Updated: postcss-selector-parser
October 23, 2024
postcss-selector-parser@csstools/css-parser-algorithms to 3.0.3 (patch)@csstools/cascade-layer-name-parser to 2.0.3 (patch)Updated `@csstools/css-tokenizer` to `3.0.2` (patch)
October 10, 2024
@csstools/css-tokenizer to 3.0.2 (patch)@csstools/css-parser-algorithms to 3.0.2 (patch)@csstools/cascade-layer-name-parser to 2.0.2 (patch)Updated `@csstools/css-tokenizer` to `3.0.1` (patch)
August 18, 2024
@csstools/css-tokenizer to 3.0.1 (patch)@csstools/css-parser-algorithms to 3.0.1 (patch)@csstools/cascade-layer-name-parser to 2.0.1 (patch)Updated: Support for Node v18+ (major).
August 3, 2024
@csstools/css-tokenizer to 3.0.0 (major)@csstools/css-parser-algorithms to 3.0.0 (major)@csstools/cascade-layer-name-parser to 2.0.0 (major)Updated `@csstools/css-tokenizer` to `2.4.1` (patch)
July 6, 2024
@csstools/css-tokenizer to 2.4.1 (patch)@csstools/css-parser-algorithms to 2.7.1 (patch)@csstools/cascade-layer-name-parser to 1.0.13 (patch)Updated `@csstools/css-tokenizer` to `2.3.2` (patch)
June 29, 2024
@csstools/css-tokenizer to 2.3.2 (patch)@csstools/css-parser-algorithms to 2.7.0 (minor)@csstools/cascade-layer-name-parser to 1.0.12 (patch)Updated `@csstools/css-tokenizer` to `2.3.1` (patch)
May 4, 2024
@csstools/css-tokenizer to 2.3.1 (patch)@csstools/css-parser-algorithms to 2.6.3 (patch)@csstools/cascade-layer-name-parser to 1.0.11 (patch)Updated `@csstools/css-tokenizer` to `2.3.0` (minor)
May 4, 2024
@csstools/css-tokenizer to 2.3.0 (minor)@csstools/css-parser-algorithms to 2.6.2 (patch)@csstools/cascade-layer-name-parser to 1.0.10 (patch)Updated `@csstools/css-tokenizer` to `2.2.4` (patch)
March 13, 2024
@csstools/css-tokenizer to 2.2.4 (patch)@csstools/css-parser-algorithms to 2.6.1 (patch)@csstools/cascade-layer-name-parser to 1.0.9 (patch)Updated `@csstools/cascade-layer-name-parser` to `1.0.8` (patch)
February 19, 2024
@csstools/cascade-layer-name-parser to 1.0.8 (patch)@csstools/css-parser-algorithms to 2.6.0 (minor)@csstools/css-tokenizer to 2.2.3 (patch)Updated `@csstools/css-tokenizer` to `2.2.1` (patch)
October 9, 2023
@csstools/css-tokenizer to 2.2.1 (patch)@csstools/css-parser-algorithms to 2.3.2 (patch)@csstools/cascade-layer-name-parser to 1.0.5 (patch)Updated `@csstools/css-tokenizer` to `2.2.0` (minor)
September 18, 2023
@csstools/css-tokenizer to 2.2.0 (minor)@csstools/css-parser-algorithms to 2.3.1 (patch)@csstools/cascade-layer-name-parser to 1.0.4 (patch)Updated `@csstools/css-parser-algorithms` to `2.3.0` (minor)
July 3, 2023
@csstools/css-parser-algorithms to 2.3.0 (minor)@csstools/cascade-layer-name-parser to 1.0.3 (patch)Updated @csstools/css-tokenizer to 2.1.1 (patch)
April 10, 2023
@csstools/css-tokenizer to 2.1.1 (patch)@csstools/css-parser-algorithms to 2.1.1 (patch)@csstools/cascade-layer-name-parser to 1.0.2 (patch)Reduce the amount of duplicate fallback CSS.
February 8, 2023
Improve types declaration in package.json
January 28, 2023
types declaration in package.jsonAdded: Support for Cascade Layers.
January 24, 2023
Updated: Support for Node v14+ (major).
November 14, 2022
importFrom feature (breaking).exportTo feature (breaking).:is() in transformed selectors (breaking).@scope and @container as parent rules of @custom-selector.@custom-selector :--heading h1, h2, h3;
article :--heading + p {
margin-top: 0;
}
/* becomes */
- article h1 + p,article h2 + p,article h3 + p {
+ article :is(h1, h2, h3) + p {
margin-top: 0;
}
Fixed: allow any valid ident in custom selectors (@custom-selector :--🧑🏾🎤 .singer)
June 4, 2022
@custom-selector :--🧑🏾🎤 .singer)Fixed: prevent duplicate rules when custom selectors are not defined
June 3, 2022
_June 3, 2022_ - Fixed: invalid whitespace
June 3, 2022
Fixed: importing from multiple sources
January 12, 2021
Fixed: Do not break on an empty importFrom object
September 20, 2018
importFrom objectFixed: Selectors like .foo:--h1 become h1.foo instead of .fooh1
September 18, 2018
.foo:--h1 become h1.foo instead of .fooh1Added: New exportTo function to specify where to export custom selectors
September 12, 2018
exportTo function to specify where to export custom selectorsimportFrom option to support passing it a functionAdded: New preserve option to preserve custom selectors and rules using them
September 7, 2018
preserve option to preserve custom selectors and rules using themimportFrom option to specify where to import custom selectors_May 15, 2017_ - Fixed: incorrect export
May 15, 2017
Added: compatibility with postcss v6.x
May 12, 2017
Removed: compatibility with postcss v4.x
August 25, 2015
Fixed: Nested/mixed selectors now works correctly
July 14, 2015
transformMatches option to limit transformation to :matches()
replacements.Fixed: No more useless warnings for undefined non custom selectors
June 30, 2015
Fixed: the lineBreak option keeping the selectors indent
June 30, 2015
Changed: use PostCSS 4.1 plugin API
June 4, 2015
Fixed: (foo, bar) conversion error exists in the selector
June 3, 2015
(foo, bar) conversion error exists in the selectorRemoved: no longer support :: or -- to defined a custom selectors, you must use the syntax :-- to define it.
May 29, 2015
:: or -- to defined a custom selectors,
you must use the syntax :-- to define it.
(https://github.com/postcss/postcss-custom-selectors/issues/6)undefined
(https://github.com/postcss/postcss-custom-selectors/issues/14)Fixed: add support for multilines definition
April 6, 2015
_December 6, 2014_ * Added: "lineBreak" option
December 6, 2014
_December 6, 2014_ * First release
December 6, 2014
Your coding agent can read these notes before it upgrades. Set up the MCP server →