Skip to content

Accessibility: field errors and descriptions are not programmatically associated with the input #18636

Open

Description

@graiparrot

Payload version: 3.90.2 (Next.js 16.3.3, @payloadcms/db-postgres, admin language German)

Field error messages and field descriptions are rendered next to the input but are not linked to it, and invalid inputs get no aria-invalid (WCAG 1.3.1, 3.3.1). The error is rendered as an aside, so it additionally appears as a complementary landmark.

Steps to reproduce: create a document with a required text field that has admin.description, submit it empty, inspect the input in the accessibility tree.

Actual: the input has no accessible description and no invalid state; screen reader users are not told what is wrong.

Expected: aria-describedby on the input pointing at the error and description ids, aria-invalid="true" while the field has an error, and no landmark role on the error.

This touches the shared field components, so we'd like to agree on the approach first.

How we found it: axe-core (tags wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa) via @axe-core/playwright plus keyboard-only tests of the admin. Our current workaround is a client provider (admin.components.providers) that patches the missing attributes into the DOM.

Happy to help with a PR if the direction is agreed.

Activity

  1. JessRynkar commented on Oct 9, 2026

    @JessRynkar
    Member

    Thanks for reporting. Leaving the same comment as I did here:

    We’re currently working through an internal accessibility audit, and these reports overlap with findings we already have tracked and underway. I’ll keep these issues open until that work is complete so we can cross-reference your reports and make sure nothing was missed.

  2. self-assigned this
    on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions