logoPlumeria

Plumeria 19.12

refirst11
refirst11Plumeria Core
Anionix
AnionixPlumeria Core

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:

KindExamples
SpeechvoiceFamily, pause, cue, speechRate
Dropped draftswrapFlow, flowInto, animationTriggerRange, textDecorationSkipBox
Old prefixesWebkitMarquee, WebkitGridColumns, MozImageRegion, msAnimation
Internet ExplorerscrollbarFaceColor, 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-properties checks names against MDN data instead of known-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 cornerShape complete and keywords follow each property's syntax
  • The CSS types keep the obsolete properties browsers still apply, such as gridGap and fontStretch, and drop names no browser runs, such as voiceFamily
  • MsOverflowStyle in the CSS types is now msOverflowStyle
  • A number for lineClamp, WebkitLineClamp, readingOrder and the other unitless properties is written without px
  • plumeria-lint keeps a compile cache, so it starts faster from the second run