Plumeria 19.12
Plumeria v19.12 moves no-unknown-css-properties and the CSS types onto MDN data, so a property that ships in a browser is known and completed without waiting for a dependency.
1. Property names from MDN
no-unknown-css-properties used to read its list from known-css-properties, which has not been updated since June 2025. The list is now generated from mdn-data and @mdn/browser-compat-data, the data behind MDN, and ships inside @plumeria/eslint-plugin. Neither is installed with the plugin.
The list takes every property MDN documents, and every prefixed or older name a browser shipped it under:
const styles = css.create({
card: {
cornerShape: 'squircle',
interestDelay: '0.5s',
msOverflowStyle: 'none',
WebkitOverflowScrolling: 'touch',
},
});A name only ever enters the list. When MDN drops a name a browser stopped supporting long ago, the list keeps it, so a project that passes the lint keeps passing it.
2. Names that are now reported
known-css-properties also listed names that MDN does not document, and they are now reported as unknown. Most come from drafts that never shipped or were renamed, and from engines that no longer exist:
| Kind | Examples |
|---|---|
| Speech | voiceFamily, pause, cue, speechRate |
| Dropped drafts | wrapFlow, flowInto, animationTriggerRange, textDecorationSkipBox |
| Old prefixes | WebkitMarquee, WebkitGridColumns, MozImageRegion, msAnimation |
| Internet Explorer | scrollbarFaceColor, layoutGrid, textKashida |
MDN documents none of these names. The prefixed names that still appear in real code, such as msFlexAlign, msGridColumn, msTextSizeAdjust and '-apple-pay-button-style', stay known.
3. CSS types from MDN
The types css.create completes from are now generated from mdn-data too, so they follow the same source as the lint. Properties such as cornerShape, fieldSizing, interestDelay and textBox now complete, and the keywords of every property follow its syntax on MDN:
type alignSelf =
| 'auto'
| 'normal'
| 'stretch'
| BaselinePosition
| SelfPosition
| `${'unsafe' | 'safe'} ${SelfPosition}`
| 'anchor-center';A property whose syntax lists only keywords takes only those keywords. A property that also takes a length or a number takes number, and one that takes any other value takes a string too. number is now offered only where a lone length or number is a valid value, so properties such as anchorName, containerName and viewTransitionName no longer suggest one.
Properties MDN marks as obsolete, such as gridGap, fontStretch and pageBreakAfter, stay in the types, since browsers still apply them. Properties a browser ships before mdn-data lists them, such as colorInterpolation, viewTransitionGroup and the gap decorations rowRule and ruleOverlap, are added from the CSS specifications through @webref/css. Names no browser runs today are no longer in the types: the speech properties such as voiceFamily and cue, the @font-face descriptors src and unicodeRange, and drafts that were renamed or dropped such as motionPath. A style that still writes one of them keeps compiling, but it can no longer be named as a key in type arguments such as StyleProps<K> and WithoutProperties<K>.
MsOverflowStyle never compiled to -ms-overflow-style, so it is now offered as msOverflowStyle, the spelling the compiler and the lint read.
4. A faster plumeria-lint
19.11 gave the build lint a compile cache. plumeria-lint now keeps the same cache in node_modules/.cache/plumeria-lint, so from the second run it loads oxlint and the Plumeria rules without compiling them again.
Release notes
19.12.0 (Oct 9, 2026)
no-unknown-css-propertieschecks names against MDN data instead ofknown-css-properties, and reports names MDN does not document, such as the speech properties- The CSS types are generated from MDN data, so newer properties such as
cornerShapecomplete and keywords follow each property's syntax - The CSS types keep the obsolete properties browsers still apply, such as
gridGapandfontStretch, and drop names no browser runs, such asvoiceFamily MsOverflowStylein the CSS types is nowmsOverflowStyle- A number for
lineClamp,WebkitLineClamp,readingOrderand the other unitless properties is written withoutpx plumeria-lintkeeps a compile cache, so it starts faster from the second run