Accessibility
Every Accessibility rule svelte-vitals runs.
ARIA validity, landmark structure, accessible names, and semantic markup: what makes a site usable for everyone.
| Rule | Severity | Summary |
|---|---|---|
a11y/accessible-name |
🟡 warning | A button, link, image button, or iframe needs a way to compute its accessible name. |
a11y/aria-hidden-focus |
🟡 warning | A keyboard-focusable element must not be hidden from assistive technology with aria-hidden=“true”. |
a11y/disallowed-aria-props |
🟡 warning | An aria-* attribute the element’s role does not support is ignored; one the role prohibits, such as a name on a bare div, is a name that is not exposed. |
a11y/disallowed-element |
🟡 warning | Reports every occurrence of the elements a project declares it does not want, and nothing until something is declared. |
a11y/duplicate-landmark |
🟡 warning | A route should have at most one main, banner, and contentinfo landmark. |
a11y/id-duplication |
🟡 warning | Every id in a route should be unique. |
a11y/interactive-nesting |
🟡 warning | An interactive element should not sit inside another interactive element. |
a11y/invalid-aria-value |
🟡 warning | An aria-* attribute’s value should match the type the WAI-ARIA spec defines for it. |
a11y/invalid-role |
🟡 warning | A role attribute should name a concrete WAI-ARIA role, not a typo or an abstract role. |
a11y/label-has-control |
🟡 warning | A label needs a for attribute or a wrapped control to be associated with the field it names. |
a11y/no-accesskey |
🟡 warning | The accesskey attribute assigns a page-level shortcut key whose actual combination varies by browser and OS, is undiscoverable, and conflicts with assistive-technology bindings. |
a11y/no-autofocus |
🟡 warning | autofocus moves focus on page load without the user asking, so screen reader users lose the page context they were building and keyboard users are dropped mid-page. |
a11y/no-missing-id-ref |
🟡 warning | An id reference should point to an id that exists somewhere in the composed route. |
a11y/permitted-contents |
🟡 warning | Every element must be permitted content of its parent, per the HTML content models. |
a11y/placeholder-label-option |
🟡 warning | A required, single-selection select needs an empty first option so users can’t submit it unchanged. |
a11y/positive-tabindex |
🟡 warning | A tabindex above 0 puts the element ahead of every naturally-ordered element on the page, so a single tabindex=“1” reorders keyboard navigation globally. |
a11y/required-aria-props |
🟡 warning | A role that requires state or property attributes needs them present, unless native host semantics already supply them. |
a11y/required-element |
🟡 warning | Every route must contain the elements a project declares, judged on the composed route, so a layout’s <main> counts. |
a11y/top-level-landmark |
🟡 warning | A banner, main, complementary, or contentinfo landmark should not be nested inside another landmark. |
a11y/unknown-aria-attribute |
🟡 warning | An aria-* attribute should name a real WAI-ARIA attribute, not a typo. |
a11y/abbr-title |
🔵 info | An <abbr> without a title gives readers no expansion. Visual users get no tooltip and assistive technology has nothing to expand. |
a11y/deprecated-aria |
🔵 info | A role or aria-* attribute ARIA 1.3 has deprecated, globally or on the role it sits on, still works today and is no longer defined there. |
a11y/deprecated-attr |
🔵 info | An attribute the HTML spec data marks deprecated on this element has its behavior defined by legacy compatibility, not by the standard. |
a11y/deprecated-element |
🔵 info | An element in the HTML standard’s obsolete-features list is non-conforming and has a conforming replacement. |
a11y/doctype |
🔵 info | src/app.html should open with <!doctype html>. |
a11y/no-duplicate-dt |
🔵 info | Within a single dl element there should not be more than one dt element for each name; a duplicated term usually means two descriptions were meant to share one dt. |
a11y/pattern-title |
🔵 info | When an input has a pattern, the spec says authors should include a title describing the expected format; without it a failed submit tells the user only that the value is wrong. |
a11y/require-datetime |
🔵 info | A time element’s text should be machine-readable, or a datetime attribute should supply the machine-readable value. |
a11y/unverified-id-ref |
🔵 info | Opt-in: flags id references that cannot be verified on routes whose composition is not fully resolved. |
a11y/use-list |
🔵 info | A bullet character typed into plain text should be a real list element instead. |
See Configuration to change a rule’s severity or turn it off.