New
Introducing React Bench, see how different models perform on React code

jsx-a11y/tabindex-no-positive

Disallow positive tabIndex values, which override the natural tab order and make focus jump unpredictably.

Validate the diagnostic

Confirm the reported code matches this rule before you edit it.

Fires when a tabIndex prop is a positive integer (1, 2, 3, ...) as a literal or string — tabIndex={0} (focusable in DOM order) and tabIndex={-1} (programmatically focusable only) are allowed. Positive values override the natural tab order and cause focus to jump unpredictably. False positive: an intentional full-document tabindex map for a complex form — but even then, reordering DOM is preferred.

How to fix

Follow the rule guidance while preserving unrelated behavior.

Copyable fix prompt

Copy this self-contained prompt into your coding agent after you confirm the diagnostic.

Replace positive tabIndex values with tabIndex={0} or tabIndex={-1}, then reorder the underlying DOM so the natural tab sequence matches the visual and logical flow of the page. CSS like flex-direction: row-reverse can reorder visuals without breaking focus order. Mixing positive tabIndex with default values almost always skips elements unpredictably. See https://oxc.rs/docs/guide/usage/linter/rules/jsx_a11y/tabindex-no-positive

More Accessibility rules from the rules reference: