Skip to content

fix(linter/react/no-unknown-property): add missing fetchPriority prop#19525

Merged
connorshea merged 2 commits intooxc-project:mainfrom
jpedroschmitz:main
Feb 19, 2026
Merged

fix(linter/react/no-unknown-property): add missing fetchPriority prop#19525
connorshea merged 2 commits intooxc-project:mainfrom
jpedroschmitz:main

Conversation

@jpedroschmitz
Copy link
Contributor

I noticed fetchPriority was throwing an unknown property error on my codebase.

× eslint-plugin-react(no-unknown-property): Unknown property found
╭─[app/[language]/dispatch/(homepage)/_components/Delight/DelightPhone.tsx:45:11]
44 │           loading="lazy"
45 │           fetchPriority="low"
·           ─────────────
46 │           src="/img/teams/map.webp"
╰────
help: Remove unknown property

Since fetchPriority is a valid HTML attribute (WHATWG spec) supported on <img>, <link>, and <script> elements, I added it to the no_unknown_property file with the assistance from AI.

@github-actions github-actions bot added A-linter Area - Linter C-bug Category - Bug labels Feb 18, 2026
@jpedroschmitz jpedroschmitz marked this pull request as ready for review February 18, 2026 19:45
Copilot AI review requested due to automatic review settings February 18, 2026 19:45
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds support for the fetchPriority HTML attribute to the no_unknown_property React linter rule. The fetchPriority attribute is a valid HTML attribute per the WHATWG spec that controls resource fetch prioritization on <img>, <link>, and <script> elements.

Changes:

  • Added fetchPriority to the list of recognized camelCase DOM properties
  • Added lowercase-to-camelCase mapping (fetchpriority => fetchPriority)
  • Added test cases for valid usage on <img>, <link>, and <script> elements with different priority values (high, low, auto)

@jpedroschmitz jpedroschmitz marked this pull request as draft February 18, 2026 19:54
@jpedroschmitz jpedroschmitz marked this pull request as ready for review February 18, 2026 23:02
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@connorshea
Copy link
Member

Copy link
Member

@connorshea connorshea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had missed this when looking at the commit history of the rule upstream, thanks for catching it!

@codspeed-hq
Copy link

codspeed-hq bot commented Feb 19, 2026

Merging this PR will not alter performance

✅ 47 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing jpedroschmitz:main (9fcebe1) with main (8e93671)2

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on main (fb212d0) during the generation of this report, so 8e93671 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@connorshea connorshea merged commit fd11073 into oxc-project:main Feb 19, 2026
34 of 35 checks passed
@connorshea
Copy link
Member

I should also note that this PR is a minor divergence from the behavior of the ESLint rule, but the ESLint rule is wrong to allow this attribute on any element, so this is more correct anyway.

camc314 added a commit that referenced this pull request Feb 19, 2026
# Oxlint
### 💥 BREAKING CHANGES

- 4315594 oxlint: [**BREAKING**] Deprecate `"always"` and `"as-needed"`
options of the radix rule (#19408) (Sysix)
- d4c7af3 linter: [**BREAKING**] Remove
`allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing` option (#19451)
(camc314)

### 🚀 Features

- 82ca5c3 linter: Add typescript/dot-notation rule (#19442) (camc314)
- 6db0811 linter: Implement
eslint-plugin-vitest/no-importing-vitest-globals (#18694) (Said
Atrahouch)
- c7fe8ae linter: Implement eslint-plugin-vitest/prefer-import-in-mock
(#17966) (Said Atrahouch)
- 0abb39a linter: Implement
eslint-vitest-jest-plugin/prefer-mock-return-shorthand (#18002) (Said
Atrahouch)
- 2b95537 linter: Implement `n/no-path-concat` rule (#19502) (Mikhail
Baev)
- 735d0e4 linter: Implement typescript/no-useless-default-assignment
(#19488) (camc314)
- 31c3a93 linter: Add typescript/no-unnecessary-type-parameters rule
(#19450) (camc314)
- c948090 linter: Add typescript/consistent-return rule (#19449)
(camc314)
- 9f87df0 linter: Add typescript/prefer-string-starts-ends-with rule
(#19448) (camc314)
- 04536be linter: Add typescript/prefer-regexp-exec rule (#19447)
(camc314)
- 56a7feb linter: Add typescript/prefer-readonly rule (#19446) (camc314)
- a1cea63 linter: Add typescript/no-unnecessary-qualifier rule (#19445)
(camc314)
- e3144d2 linter: Add typescript/prefer-find rule (#19444) (camc314)
- 13c7408 linter: Add typescript/prefer-readonly-parameter-types rule
(#19443) (camc314)
- 9b17d44 linter: Add typescript/strict-void-return rule (#19441)
(camc314)
- ed821b4 linter: Add typescript/consistent-type-exports rule (#19440)
(camc314)

### 🐛 Bug Fixes

- daad7bc linter/array-callback-return: Check `allowVoid` option
(#19506) (Said Atrahouch)
- 638cf94 linter: Add help text to eslint rule diagnostics (#19508)
(Kyle Tse)
- 79fc6d7 linter: Move no-use-before-define to eslint plugin (#19438)
(camc314)
- c832a9f linter: Add `onScrollEnd` and `onScrollEndCapture` to
`react/no-unknown-property`. (#19536) (connorshea)
- 999a0db linter: Add help text to `symbol-description` diagnostics
(#19538) (Anthony Amaro)
- f064482 linter: Add help text to eslint rule diagnostics (#19539)
(Anthony Amaro)
- fd11073 linter/react/no-unknown-property: Add missing `fetchPriority`
prop (#19525) (João Pedro Schmitz)
- a9bb604 linter/no-shadow: Align initializer shadow handling with
typescript-eslint (#19462) (camc314)
- 32e6eb9 linter: Handle typed arrays/array buffers in `prefer-spread`
rule. (#19478) (connorshea)
- e309f84 linter: Handle additional cases in
`typescript/consistent-generic-constructors` rule. (#19477) (connorshea)
- 71db91a linter/array-callback-return: Check `fromAsync`, update test
cases (#19483) (Said Atrahouch)
- 2a12d74 linter: Handle optional chaining in
`no-array-method-this-argument` rule. (#19476) (connorshea)
- f65310b linter: Handle optional chaining in
`prefer-object-from-entries` rule. (#19475) (connorshea)
- 840acf4 linter: Handle optional chain in
`no-unnecessary-array-flat-depth` rule. (#19471) (connorshea)
- 85a19e9 linter: Skip string literal imports in `consistent-assert`
rule. (#19474) (connorshea)

### ⚡ Performance

- 6155ac4 linter/constructor-super: Use node_id over nodes loop (#19489)
(camc314)
- a02496d linter/consistent-index-object-style: Resolve circular type
refs semantically (#19490) (camc314)
# Oxfmt
### 🚀 Features

- 652c346 oxfmt/lsp: Support `untitled://` schema (#19287) (Sysix)

### 🐛 Bug Fixes

- 6c61b70 oxfmt: Fix outdated `sortImports.groups` doc comments (#19513)
(leaysgur)

Co-authored-by: camc314 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-linter Area - Linter C-bug Category - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments