Skip to content

Bug Report: Grouped severities ignore domains and become uncontrollable after customizing a single rule #7945

@ByteElegance

Description

@ByteElegance

Linked Discussion

This was first investigated in a discussion and initially suspected to be caused by a transitive Solid dependency. After further debugging, it was confirmed that the issue is not dependency-related but caused by a domain + grouped-severity interaction.

Original discussion:

#7939


Summary

When using Biome with React and setting grouped severities (e.g., "performance": "warn"), Solid rules become active, even though:

  • Only the React domain is enabled
  • No Solid dependency exists in package.json
  • The project is strictly React

This triggers warnings such as:

Array.prototype.map will cause DOM elements to be recreated, it is not recommended to use it in Solid here.
biome[lint/performance/useSolidForComponent]

Root Cause (observed)

Grouped severities appear to behave like:

  • "Enable all rules in this category," rather than
  • "Enable rules in this category only for active domains."

So this:

"rules": {
  "performance": "warn"
}

activates Solid’s useSolidForComponent, despite:

"domains": { "react": "all" }

This reproduces in a clean Biome template (npx @biomejs/create-biome-reproduction) with a minimal React component.


Expected Behavior

Domain isolation should be respected:

  • domains.react = "all"Only React rules run
  • Grouped severities should not implicitly activate rules from other domains

Current Behavior

  • Adding a grouped severity (style, performance, etc.) triggers Solid rules
  • Removing the grouped severity prevents Solid rules
  • Workaround: explicitly disable Solid domain:
"domains": {
  "react": "all",
  "solid": "none"
}

Key Usability Problem

As soon as I customize any single rule inside a group (switching the group from scalar to object form), I lose blanket severity control for the entire group.

Modifying one rule prevents applying a single severity value to the whole group unless every rule is explicitly listed.

This makes common configs like
“warn for all performance rules except one”
impractical.


Suggestions

✅ Domain-respecting grouped severities

Grouped severities should apply only to rules from active domains.

✅ Allow default severity in object form

Suggest supporting:

"rules": {
  "performance": {
    "level": "warn",                 // default for the group
    "useSolidForComponent": "off"    // override specific rule
  }
}

This preserves blanket severity control and allows exclusions.

✅ Docs improvement

Until behavior changes, document that:

  • Switching a group to object form removes global severity control for that group
  • Grouped severities can currently activate cross-domain rules

Reproduction

Minimal reproduction repo:
https://github.com/ByteElegance/biome-react-solid-domain-bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    S-Bug-confirmedStatus: report has been confirmed as a valid bug

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions