unstale

npm / axe-core

axe-core

What changed in axe-core 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.

7 breaking2 deprecations16 new APIs and options1 performance29 behavior and defaults31 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

axe-core 486 changes

Breaking changes 7

  • The rule now reports case-sensitive ARIA attributes with non-lowercase values.

    4.14.0release notes

  • Empty low-contrast text inputs are now reported as incomplete.

    4.14.0release notes

  • The rule is now enabled by default, which can increase issue totals after upgrading.

    4.14.0release notes

  • Value-text roles are now marked incomplete.

    4.14.0release notes

  • Restricts br and wbr elements to aria-hidden only.

    4.11.3release notesrelease notes

  • Now shows an error message when aria-busy is used with unallowed children.

    4.11.2release notesrelease notes

  • 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.1release notes

Deprecations 2

  • This misspelled function is deprecated in favor of the correct spelling.

    4.13.0release notes

  • Deprecates the rule because ARIA no longer requires complementary landmarks to be top-level.

    4.12.0release notes

New APIs and options 16

  • An Azerbaijani locale is available for localized axe-core output.

    4.14.0release notes

  • A new function retrieves ARIA values from a node.

    4.13.0release notes

  • A new function checks whether a node has an ARIA value.

    4.13.0release notes

  • ARIA attribute standards data now has a caseInsensitive property.

    4.13.0release notes

  • A new function retrieves resolved virtual nodes for idrefs.

    4.13.0release notes

  • A new match is available for checking whether an element has a child.

    4.13.0release notes

  • A new match is available for identifying sectioning content.

    4.13.0release notes

  • A new match is available for identifying a summary associated with details.

    4.13.0release notes

  • The sectionfooter ARIA role is now supported.

    4.13.0release notes

  • The sectionheader ARIA role is now supported.

    4.13.0release notes

  • A Swedish locale is now available.

    4.13.0release notes

  • Adds a rule that checks whether role="tab" elements have an accessible name.

    4.12.0release notes

  • Adds a public API for setting elementInternal data.

    4.12.0release notes

  • Adds a method to restore the default locale.

    4.12.0release notes

  • Adds an external script as part of preparations for Element Internal support.

    4.12.0release notes

  • Exposes normalizeRunOptions for use by developers.

    4.12.0release notes

Performance 1

  • Performance improvements should speed runs by 20%–40% on most pages; especially large pages showed a 15x improvement.

    4.14.0release notes

Behavior and default changes 29

  • Failure messages now suggest removing aria-hidden.

    4.14.0release notes

  • No-role messages now quote the element name.

    4.14.0release notes

  • The rule now allows caption in table, grid and treegrid.

    4.14.0release notes

  • Messages now explain presentational children that cannot be ignored.

    4.14.0release notes

  • Checks that can return undefined now provide incomplete messages.

    4.14.0release notes

  • Listitem failure messages are now actionable.

    4.14.0release notes

  • The rule now supports CJK word splitting when comparing labels and names.

    4.14.0release notes

  • Visible labels are compared to accessible names by word.

    4.14.0release notes

  • Parenthesised content is ignored during label and name comparison.

    4.14.0release notes

  • The default failure message now explains how to fix the issue.

    4.14.0release notes

  • Array values in processed messages are now separated with a comma and a space.

    4.14.0release notes

  • Scrollable content with negative tabindex now needs review instead of failing outright.

    4.14.0release notes

  • The rule now includes EN 301 549 v4 tags, allowing it to be targeted using those tags.

    4.14.0release notes

  • axe-core now allows aria-actions as an ARIA attribute.

    4.13.0release notes

  • Deprecated ARIA attributes are flagged as needs-review.

    4.13.0release notes

  • 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.0release notes

  • More elements may be named, while label and body may not; visible aria-labelledby requires review only.

    4.13.0release notes

  • ElementInternals support is enabled by default, including support for ARIA properties and form-associated labels.

    4.13.0release notes

  • Whitespace alt text is now allowed on presentational images.

    4.13.0release notes

  • axe-core treats role=image as equivalent to role=img.

    4.13.0release notes

  • The enabled property of RuleMetadata is now optional, so TypeScript users do not need to provide it.

    4.12.1release notes

  • Partially supports element internals roles when checking allowed and prohibited ARIA attributes.

    4.12.0release notes

  • Adds support for radio.

    4.12.0release notes

  • Partially supports element internals roles when checking required parent and child relationships.

    4.12.0release notes

  • Returned rule objects now include the rule's enabled state.

    4.12.0release notes

  • Supports element internals roles for list and listitem checks.

    4.12.0release notes

  • Ignores widgets that are inline with other inline elements.

    4.11.2release notes

  • axe.run contexts now allow shadow roots.

    4.11.1release notes

  • The mapping of aria-hidden-* and valid-lang was adjusted, changing which rules run and how they map to RGAA.

    4.11.1release notes

Fixes and other changes 31

  • Setting isDefault when adding a reporter now makes that reporter the default.

    4.14.0release notes

  • The rule now tests the text that gets spacing from the element.

    4.14.0release notes

  • Color parsing now handles "none" and exponents in color strings.

    4.14.0release notes

  • An @import URL is now resolved against the stylesheet that contains it.

    4.14.0release notes

  • Dialogs are treated as non-modal when elementsFromPoint is unsupported.

    4.14.0release notes

  • When a check has no incomplete message, axe-core now uses the fallback message.

    4.14.0release notes

  • CJK and full-width text is normalized before comparison.

    4.14.0release notes

  • The rule now ignores paragraphs with heading roles.

    4.14.0release notes

  • Overlapping links with the same destination are now ignored.

    4.14.0release notes

  • The ARIA standard data now identifies aria-details as an idref.

    4.13.0release notes

  • The ARIA standard data now identifies aria-errormessage as an idref.

    4.13.0release notes

  • Various stacking context bugs are fixed.

    4.13.0release notes

  • Attribute selectors now escape control characters.

    4.13.0release notes

  • Sections and forms with non-landmark roles are excluded from landmark matching.

    4.13.0release notes

  • The image role is now named in the rule metadata.

    4.13.0release notes

  • The image role is now named in the rule metadata.

    4.13.0release notes

  • Matches visible text with aria-label and excludes invisible text.

    4.12.0release notes

  • Corrects offset detection for inline targets and ignores offscreen fixed elements and widgets inline with other inline elements.

    4.12.0release notes

  • Node names are escaped in ancestry selectors.

    4.11.4release notes

  • Excludes natively hidden elements from accessible-name computation for aria-labelledby.

    4.11.4release notesrelease notes

  • Ignores position: fixed elements that are offscreen when the page is scrolled, addressing false positives.

    4.11.3release notes

  • Handles multiple aria-errormessage IDs.

    4.11.2release notesrelease notes

  • No longer fails scroll areas when all content is visible without scrolling.

    4.11.2release notesrelease notes

  • Clarifies that the issue addressed by the rule is in Safari.

    4.11.2release notes

  • Determines offset using clientRects when a target is display:inline.

    4.11.2release notes

  • The rule now handles oklch and oklab colors with none.

    4.11.1release notes

  • The rule no longer marks textarea as incomplete.

    4.11.1release notes

  • The luminance threshold constant changed from 0.03928 to 0.04045.

    4.11.1release notes

  • Rules that select html are no longer run on nested html elements.

    4.11.1release notes

  • Out-of-gamut oklch colors now match browser behavior.

    4.11.1release notes

  • The rule now recognizes newer language codes.

    4.11.1release notes