biome
biome copied to clipboard
`useJsxKeyInIterable` reports a false-positive for objects using a `map` method which is not actually an iterable
Environment information
CLI:
Version: 1.7.3
Color support: true
Platform:
CPU Architecture: x86_64
OS: windows
Environment:
BIOME_LOG_DIR: unset
NO_COLOR: unset
TERM: "cygwin"
JS_RUNTIME_VERSION: "v20.10.0"
JS_RUNTIME_NAME: "node"
NODE_PACKAGE_MANAGER: "pnpm/8.15.5"
Biome Configuration:
Status: Loaded successfully
Formatter disabled: false
Linter disabled: false
Organize imports disabled: false
VCS disabled: true
Linter:
Recommended: true
All: false
Rules: a11y/all = true
complexity/all = true
complexity/noForEach = "off"
correctness/all = true
nursery/all = true
nursery/noUndeclaredDependencies = "off"
nursery/useImportRestrictions = "error"
nursery/useSortedClasses = "warn"
performance/all = true
performance/noBarrelFile = "off"
security/all = true
style/recommended = true
style/noNegationElse = "warn"
style/useSingleCaseStatement = "warn"
Workspace:
Open Documents: 0
Rule name
lint/correctness/useJsxKeyInIterable
Playground link
https://biomejs.dev/playground/?code=LwAvACAAVABoAGkAcwAgAGkAcwAgAGEAIABsAGkAdAB0AGwAZQAgAHMAdQBiAHMAZQB0ACAAbwBmACAAdABoAGUAIABpAG0AcABsAGUAbQBlAG4AdABhAHQAaQBvAG4AIABvAGYAIABhACAAYwB1AHMAdABvAG0AIAByAGUAcwB1AGwAdAAgAHcAcgBhAHAAcABlAHIACgBjAGwAYQBzAHMAIABSAGUAcwB1AGwAdAA8AFQALAAgAEUAPgAgAHsACgAgACAAYwBvAG4AcwB0AHIAdQBjAHQAbwByACgAcgBlAGEAZABvAG4AbAB5ACAAdgBhAGwAdQBlADoAIAB7ACAAZABhAHQAYQA6ACAAVAAgAH0AIAB8ACAAewAgAGUAcgByAG8AcgA6ACAARQAgAH0AKQAgAHsAfQAKAAoAIAAgAHAAdQBiAGwAaQBjACAAbQBhAHAAPABVAD4AKABmAG4AOgAgACgAZABhAHQAYQA6ACAAVAApACAAPQA%2BACAAVQApADoAIABSAGUAcwB1AGwAdAA8AFUALAAgAEUAPgAgAHsACgAgACAAIAAgAHIAZQB0AHUAcgBuACAAIgBkAGEAdABhACIAIABpAG4AIAB0AGgAaQBzAC4AdgBhAGwAdQBlAAoAIAAgACAAIAAgACAAPwAgAG4AZQB3ACAAUgBlAHMAdQBsAHQAKAB7ACAAZABhAHQAYQA6ACAAZgBuACgAdABoAGkAcwAuAHYAYQBsAHUAZQAuAGQAYQB0AGEAKQAgAH0AKQAKACAAIAAgACAAIAAgADoAIAAoAHQAaABpAHMAIABhAHMAIAB1AG4AawBuAG8AdwBuACAAYQBzACAAUgBlAHMAdQBsAHQAPABVACwAIABFAD4AKQA7AAoAIAAgAH0ACgAKACAAIABwAHUAYgBsAGkAYwAgAG0AYQBwAHAAZQBkACAAPQAgAG0AYQBwAAoAIAAgAAoAIAAgAHAAdQBiAGwAaQBjACAAbwBrACgAKQA6ACAAVAAgAHwAIABuAHUAbABsACAAewAKACAAIAAgACAAcgBlAHQAdQByAG4AIAAiAGQAYQB0AGEAIgAgAGkAbgAgAHQAaABpAHMALgB2AGEAbAB1AGUAIAA%2FACAAdABoAGkAcwAuAHYAYQBsAHUAZQAuAGQAYQB0AGEAIAA6ACAAbgB1AGwAbAA7AAoAIAAgAH0ACgB9AAoACgBjAG8AbgBzAHQAIAByAGUAcwB1AGwAdAAgAD0AIABuAGUAdwAgAFIAZQBzAHUAbAB0ACgAewAgAGQAYQB0AGEAOgAgACIAaABlAGwAbABvACIAIAB9ACkAOwAKAAoALwAvACAAQgBpAG8AbQBlACAAcgBlAHAAbwByAHQAcwAgAGEAIABmAGEAbABzAGUAIABwAG8AcwBpAHQAaQB2AGUAIABiAGUAYwBhAHUAcwBlACAAbwBmACAAdABoAGUAIAB1AHMAZQAgAG8AZgAgAGAAbQBhAHAAYAAgAGEAcwAgAGEAIABtAGUAdABoAG8AZAAgAG4AYQBtAGUACgBjAG8AbgBzAHQAIABDAG8AbQBwAG8AbgBlAG4AdAAxACAAPQAgACgAKQAgAD0APgAgAHIAZQBzAHUAbAB0AC4AbQBhAHAAKAAoAGQAYQB0AGEAKQAgAD0APgAgADwAcAA%2BAHsAZABhAHQAYQB9ADwALwBwAD4AKQAuAG8AawAoACkAOwAKAGMAbwBuAHMAdAAgAEMAbwBtAHAAbwBuAGUAbgB0ADIAIAA9ACAAKAApACAAPQA%2BACAAcgBlAHMAdQBsAHQALgBtAGEAcABwAGUAZAAoACgAZABhAHQAYQApACAAPQA%2BACAAPABwAD4AewBkAGEAdABhAH0APAAvAHAAPgApAC4AbwBrACgAKQA7AAoA
Expected result
Implementing a map
function for an object triggers a false positive for useJsxKeyInIterable
when rendering in a JSX, even when the object is not an Iterable.
I've provided a concrete example in the playground link,
Code of Conduct
- [x] I agree to follow Biome's Code of Conduct
This is known limitation. Since we currently lack a reliable method to determine whether the type of a variable is an Array or not, all method that might possibly be called on an Array object are considered, including map
, filter
, ...
Came here for this. The flag also fails with react table, where (...getRowProps()) returns a key prop. This rule should not have been added with these obvious false positives and no options to configure it.
@Igosuki Sorry for your poor experience with this rule. Could you describe in detail what false positives you are encountering with react table?
We plan to demote the rule to nursery
in the next minor, we discussed this internally: https://biomejs.dev/internals/versioning/#minor-release
Removal of a non-nursery rule or demoting a rule to the nursery group.