src/content/docs/linter/rules/no-aria-hidden-on-focusable.mdx
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs> <TabItem label="JSX and TSX" icon="seti:javascript"> ## Summary - Rule available since: `v1.4.0` - Diagnostic Category: [`lint/a11y/noAriaHiddenOnFocusable`](/reference/diagnostics#diagnostic-category) - This rule is **recommended**, meaning it is enabled by default. - This rule has an [**unsafe**](/linter/#unsafe-fixes) fix. - The default severity of this rule is [**error**](/reference/diagnostics#error). - Sources: - Same as [`jsx-a11y/no-aria-hidden-on-focusable`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-aria-hidden-on-focusable.md){
"linter": {
"rules": {
"a11y": {
"noAriaHiddenOnFocusable": "error"
}
}
}
}
Enforce that aria-hidden="true" is not set on focusable elements.
aria-hidden="true" can be used to hide purely decorative content from screen reader users.
A focusable element with aria-hidden="true" can be reached by keyboard.
This can lead to confusion or unexpected behavior for screen reader users.
<div aria-hidden="true" tabIndex="0" />
<a href="/" aria-hidden="true" />
<button aria-hidden="true" tabIndex="-1" />
<button aria-hidden="true" tabIndex={-1} />
<div aria-hidden="true"><a href="#"></a></div>