# What changed in axe-core

> 86 changes in axe-core 4 from its official release notes, upgrade guides and advisories: 7 breaking, 2 deprecations, 16 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/axe-core/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## axe-core 4

### Breaking changes

- The rule now reports case-sensitive ARIA attributes with non-lowercase values. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Empty low-contrast text inputs are now reported as incomplete. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule is now enabled by default, which can increase issue totals after upgrading. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Value-text roles are now marked incomplete. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Restricts br and wbr elements to aria-hidden only. (4.11.3) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0), [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.3)
- Now shows an error message when aria-busy is used with unallowed children. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0), [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- The rule no longer skips a page in certain edge cases, so pages that were not tested may now report color contrast issues. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)

### Deprecations

- This misspelled function is deprecated in favor of the correct spelling. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Deprecates the rule because ARIA no longer requires complementary landmarks to be top-level. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)

### New APIs and options

- An Azerbaijani locale is available for localized axe-core output. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- A new function retrieves ARIA values from a node. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A new function checks whether a node has an ARIA value. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- ARIA attribute standards data now has a caseInsensitive property. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A new function retrieves resolved virtual nodes for idrefs. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A new match is available for checking whether an element has a child. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A new match is available for identifying sectioning content. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A new match is available for identifying a summary associated with details. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The sectionfooter ARIA role is now supported. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The sectionheader ARIA role is now supported. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- A Swedish locale is now available. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Adds a rule that checks whether role="tab" elements have an accessible name. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Adds a public API for setting elementInternal data. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Adds a method to restore the default locale. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Adds an external script as part of preparations for Element Internal support. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Exposes normalizeRunOptions for use by developers. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)

### Performance

- Performance improvements should speed runs by 20%–40% on most pages; especially large pages showed a 15x improvement. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)

### Behavior and default changes

- Failure messages now suggest removing aria-hidden. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- No-role messages now quote the element name. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule now allows caption in table, grid and treegrid. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Messages now explain presentational children that cannot be ignored. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Checks that can return undefined now provide incomplete messages. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Listitem failure messages are now actionable. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule now supports CJK word splitting when comparing labels and names. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Visible labels are compared to accessible names by word. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Parenthesised content is ignored during label and name comparison. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The default failure message now explains how to fix the issue. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Array values in processed messages are now separated with a comma and a space. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Scrollable content with negative tabindex now needs review instead of failing outright. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule now includes EN 301 549 v4 tags, allowing it to be targeted using those tags. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- axe-core now allows aria-actions as an ARIA attribute. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Deprecated ARIA attributes are flagged as needs-review. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The rule now allows roles on a summary that is not part of details, and restricts figure roles when there is a child figcaption. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- More elements may be named, while label and body may not; visible aria-labelledby requires review only. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- ElementInternals support is enabled by default, including support for ARIA properties and form-associated labels. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Whitespace alt text is now allowed on presentational images. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- axe-core treats role=image as equivalent to role=img. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The enabled property of RuleMetadata is now optional, so TypeScript users do not need to provide it. (4.12.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.1)
- Partially supports element internals roles when checking allowed and prohibited ARIA attributes. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Adds support for radio. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Partially supports element internals roles when checking required parent and child relationships. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Returned rule objects now include the rule's enabled state. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Supports element internals roles for list and listitem checks. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Ignores widgets that are inline with other inline elements. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- axe.run contexts now allow shadow roots. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- The mapping of aria-hidden-* and valid-lang was adjusted, changing which rules run and how they map to RGAA. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)

### Fixes and other changes

- Setting isDefault when adding a reporter now makes that reporter the default. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule now tests the text that gets spacing from the element. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Color parsing now handles "none" and exponents in color strings. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- An @import URL is now resolved against the stylesheet that contains it. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Dialogs are treated as non-modal when elementsFromPoint is unsupported. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- When a check has no incomplete message, axe-core now uses the fallback message. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- CJK and full-width text is normalized before comparison. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The rule now ignores paragraphs with heading roles. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- Overlapping links with the same destination are now ignored. (4.14.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.14.0)
- The ARIA standard data now identifies aria-details as an idref. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The ARIA standard data now identifies aria-errormessage as an idref. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Various stacking context bugs are fixed. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Attribute selectors now escape control characters. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Sections and forms with non-landmark roles are excluded from landmark matching. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The image role is now named in the rule metadata. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- The image role is now named in the rule metadata. (4.13.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.13.0)
- Matches visible text with aria-label and excludes invisible text. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Corrects offset detection for inline targets and ignores offscreen fixed elements and widgets inline with other inline elements. (4.12.0) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0)
- Node names are escaped in ancestry selectors. (4.11.4) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.4)
- Excludes natively hidden elements from accessible-name computation for aria-labelledby. (4.11.4) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0), [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.4)
- Ignores position: fixed elements that are offscreen when the page is scrolled, addressing false positives. (4.11.3) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.3)
- Handles multiple aria-errormessage IDs. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0), [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- No longer fails scroll areas when all content is visible without scrolling. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.12.0), [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- Clarifies that the issue addressed by the rule is in Safari. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- Determines offset using clientRects when a target is display:inline. (4.11.2) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.2)
- The rule now handles oklch and oklab colors with none. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- The rule no longer marks textarea as incomplete. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- The luminance threshold constant changed from 0.03928 to 0.04045. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- Rules that select html are no longer run on nested html elements. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- Out-of-gamut oklch colors now match browser behavior. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
- The rule now recognizes newer language codes. (4.11.1) — [release notes](https://github.com/dequelabs/axe-core/releases/tag/v4.11.1)
