💅 Biome linter conflicts with TypeScript when key prop is provided via spread operator #5215
Open
1 task done
Labels
S-Needs triage
Status: this issue needs to be triaged
Environment information
Rule name
lint/correctness/useJsxKeyInIterable
Playground link
https://biomejs.dev/playground/?code=CgBjAG8AbgBzAHQAIABTAGkAbQBwAGwAZQBFAHgAYQBtAHAAbABlADoAIABSAGUAYQBjAHQALgBGAEMAIAA9ACAAKAApACAAPQA%2BACAAewAKACAAIABjAG8AbgBzAHQAIABpAHQAZQBtAHMAIAA9ACAAWwAnAGEAJwAsACAAJwBiACcALAAgACcAYwAnAF0AOwAKACAAIAAKACAAIAAvAC8AIABGAHUAbgBjAHQAaQBvAG4AIAB0AGgAYQB0ACAAcgBlAHQAdQByAG4AcwAgAGEAbgAgAG8AYgBqAGUAYwB0ACAAYwBvAG4AdABhAGkAbgBpAG4AZwAgAGEAIABrAGUAeQAgAHAAcgBvAHAACgAgACAAYwBvAG4AcwB0ACAAZwBlAHQAUAByAG8AcABzACAAPQAgACgAaQB0AGUAbQA6ACAAcwB0AHIAaQBuAGcAKQAgAD0APgAgACgAewAKACAAIAAgACAAawBlAHkAOgAgAGkAdABlAG0ALAAKACAAIAAgACAAJwBkAGEAdABhAC0AaQB0AGUAbQAnADoAIABpAHQAZQBtAAoAIAAgAH0AKQA7AAoACgAgACAAcgBlAHQAdQByAG4AIAAoAAoAIAAgACAAIAA8AGQAaQB2AD4ACgAgACAAIAAgACAAIAB7AGkAdABlAG0AcwAuAG0AYQBwACgAaQB0AGUAbQAgAD0APgAgACgACgAgACAAIAAgACAAIAAgACAALwAvACAAQgBpAG8AbQBlACAAYwBvAG0AcABsAGEAaQBuAHMAIABhAGIAbwB1AHQAIABtAGkAcwBzAGkAbgBnACAAawBlAHkAIABoAGUAcgBlAAoAIAAgACAAIAAgACAAIAAgADwAZABpAHYAIAB7AC4ALgAuAGcAZQB0AFAAcgBvAHAAcwAoAGkAdABlAG0AKQB9AD4ACgAgACAAIAAgACAAIAAgACAAIAAgAHsAaQB0AGUAbQB9AAoAIAAgACAAIAAgACAAIAAgADwALwBkAGkAdgA%2BAAoAIAAgACAAIAAgACAAKQApAH0ACgAgACAAIAAgADwALwBkAGkAdgA%2BAAoAIAAgACkAOwAKAH0AOwA%3D
Expected result
Biome triggers the lint/correctness/useJsxKeyInIterable rule and reports "Missing key property for this element in iterable"
However, if I add an explicit key to fix this:
TypeScript then reports: "'key' is specified more than once, so this usage will be overwritten. ts (2783)"
This creates a situation where I cannot satisfy both linters simultaneously.
Expected Behavior
Biome should be able to detect that a key property is being provided through spread props, similar to how TypeScript's analysis can detect this.
Additional Context
This issue is particularly common when working with libraries like react-table/tanstack-table where methods like getHeaderProps() return objects that include a key property.
The current workaround is to add a Biome ignore comment, but it would be better if Biome could properly analyze spread properties for keys, especially since TypeScript is able to detect them.
Code of Conduct
The text was updated successfully, but these errors were encountered: