ARIA, Anti-Patterns, and You

birdculture1 pts0 comments

ARIA, anti-patterns, and you – David Bushell – Web Dev (UK)

ARIA, anti-patterns, and you

Subscribe

Blog RSS feed

Notes RSS feed<br>or

Combined RSS feed<br>and follow

Mastodon

Bluesky

Friday

26 Jun<br>2026

.Prose" hidden>Play Synthesised Audio

Please take a minute to understand what ARIA is and is not. ARIA and especially the ARIA Authoring Practices Guide (APG) are commonly misunderstood.<br>I read an article the other day that had this facepalm moment:<br>And with modern LLM agents, turning a spec into working code is surprisingly fast. Point the agent at the APG pattern, describe your component’s markup, and get a solid first draft you can refine and test.

This is worrying, and the use of “LLM agents” isn’t the worst part!<br>The APG is not a how-to guide of ‘best practices’ for building accessible websites. It exists to demonstrate how the ARIA specification should work in theory — regardless of support and regardless of whether more accessible, non-ARIA patterns exist (they do).<br>As Eric Bailey notes —<br>The guide was originally authored to help demonstrate ARIA’s capabilities. As a result, its code examples near-exclusively, overwhelmingly, and disproportionately favor ARIA.<br>What I Wish Someone Told Me When I Was Getting Into ARIA - Eric Bailey

— which makes sense, because:<br>Browser and assistive technology developers can thus utilize code in this guide to help assess the quality of their support for ARIA 1.2.<br>Read Me First - ARIA Authoring Practices Guide (APG)

Even if ARIA was fully supported (it’s not) the APG still wouldn’t be a ‘best practice’ guide. ‘Best practice’ is not using ARIA at all.<br>If you can use a native HTML element or attribute with the semantics and behavior you require already built in , instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so .<br>2.1 First Rule of ARIA Use - Using ARIA, W3C

APG exists in a vacuum to show off the ARIA spec.<br>The button example includes this code, for crying out loud!<br>div tabindex="0"<br>role="button"<br>id="action"><br>Print Page<br>div>Copy CodeI’m unaware of any circumstance where should ever be used over a . Before you tell me you can’t edit your React component library, do the web a favour and delete your codebase.<br>In fairness, the button example has a “Read This First” disclosure — and guess what: they use a element and not the disclosure pattern because the APG isn’t best practice. It’s hard to blame developers for misusing ARIA and the APG. I’ve been confused myself. As W3C documentation goes, APG is rather sexy. It’s a useful resource if you understand why it exists.<br>Misuse of ARIA has made the web less accessible.<br>Increased ARIA usage on pages was associated with higher detected errors. The more ARIA attributes that were present, the more detected accessibility errors could be expected.<br>The WebAIM Million - WebAIM

TL;DR<br>Avoid ARIA where ever possible. Don’t point a freaking LLM at the APG! I can’t believe I’m saying this but use Google’s slop if you absolutely refuse to learn/code yourself. Apparently OpenAI is throwing ARIA at the web and seeing what sticks. Ahhh! I don’t know anymore, take some pride in your expertise?<br>P.S. name an assistive technology that isn’t a screen reader.<br>Ain’t easy, is it? So don’t be casually punctuating with the word “test” like it’s some get-out-of-jail-free card for your dubious practice and advice.<br>“Overview of Digital Accessibility Technologies” by Declan Chidlow is a great help if you want to win this game at parties.

Subscribe

Blog RSS feed

Notes RSS feed<br>or

Combined RSS feed<br>and follow

Mastodon

Bluesky

Written by human

All opinions are my own and not those of a large language model.<br>Everything I write is one hundred percent human. Because I care!

AI policy

Menu

Close menu

aria feed guide code patterns first

Related Articles