-
-
Notifications
You must be signed in to change notification settings - Fork 33
Description
Rule details
Enforce Baseline Browser Support
What type of rule is this?
Warns about a potential problem
Example code
{
"baselineWidelyAvailable": true,
"baselineNewlyAvailable": false,
"rules": {
"css/no-invalid-properties": [
"error",
{
"allowed-properties": [
"text-wrap: pretty",
"::view-transition"
]
}
]
}
}Additional comments
I’m not entirely sure how ESLint works under the hood, and while I’d love to contribute, I don’t feel quite ready to tackle that just yet. I hope this issue doesn’t overcomplicate your vision, and if it’s not quite right, feel free to disregard it. I just thought it would be worth sharing because it’s exactly what I need in a CSS linter.
Scenario: Maintainers Setting Boundaries
User Story
As a maintainer, I want contributors to use a consistent subset of CSS features supported across major browsers. This helps keep the project manageable, onboard new contributors efficiently, and maintain evolving CSS best practices.
Background/Description
Maintainers want to ensure their CSS only uses features supported by "Baseline Widely Available" (web.dev/baseline)—a concept for consistent browser support across major platforms. While browsersl.ist doesn’t yet support this natively, the following configuration can define an approximate range:
{
"browserslist": [
"Chrome > 0 and last 2.5 years",
"Edge > 0 and last 2.5 years",
"Firefox > 0 and last 2.5 years",
"Safari > 0 and last 2.5 years"
]
}
This range ensures features work consistently across all four core browsers while considering features widely available over the past 2.5 years.
Baseline Widely Available
With baselineWidelyAvailable set to true, the linter will flag unsupported CSS. For example, if a developer uses a property like -ms-high-contrast-adjust or a new feature only supported in Chrome, the linter will identify it as out of scope. This ensures that contributors stick to CSS features widely supported across major browsers.
“baselineWidelyAvailable”: true
Baseline Newly Available
If a maintainer trusts their contributors to use progressive enhancements—CSS features that gracefully degrade in unsupported browsers—they can set baselineNewlyAvailable to true. This allows contributors to use newer CSS properties as long as they are supported by all four major browsers, even if not yet "widely available."
“baselineNewlyAvailable”: true
Allowed Properties
For maintainers who need some flexibility, rules can be defined. The "allowed-properties" list allows specific CSS properties to be used, even if they are not widely supported.
{
"baselineWidelyAvailable": true,
"baselineNewlyAvailable": false,
"rules": {
"css/no-invalid-properties": [
"error",
{
"allowed-properties": [
"text-wrap: pretty",
"::view-transition"
]
}
]
}
}
Conclusion
What I like about using Baseline, or at least browsersl.ist, is that it helps contributors understand the target audience better, know where to focus cross-browser troubleshooting, and automate parts of development to reduce manual work.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status