Skip to content

Topic

Web Accessibility

Practice of designing digital products so people with disabilities can perceive, navigate, and use them, often via screen readers and other assistive tech.

Current stories

buildOne report1 publisher

Dev.to crawl finds 43% of Shopify product pages ship a first-loaded image without width or height

A dev.to analysis of 199 Shopify stores found 43% of product pages have a first-loaded image with no width or height. Image format is mostly settled at 94% WebP or AVIF, but 19.5% of pages have a first image with no alt attribute.

Publishers:dev.to

Reality

Evidence62
Adoption
Not scored
Hype gap−10
Incentives35
Confidence60
buildOne report1 publisher

Safari Technology Preview 254 fixes four accessibility bugs and two broken animations

Safari Technology Preview 254 fixes four accessibility bugs and two animation bugs, among them VoiceOver announcing every focused ARIA menu item as selected. Teams carrying workarounds for any of them now have a build to test their removal against.

Publishers:webkit.org

Reality

Evidence75
Adoption
Not scored
Hype gap0
Incentives
Not scored
Confidence70
buildOne report1 publisher

CogniPrep's 320px audit found nearly every real defect at the bottom of the screen

Six CogniPrep auditors checked every new screen of a 28-provider test release at 320px before merge and found nearly all real defects at screen bottoms. Their four recurring shapes were all invisible at 1280 pixels, so a desktop-only review would have merged them.

Publishers:dev.to

Reality

Evidence45
Adoption
Not scored
Hype gap+5
Incentives25
Confidence50
buildOne report1 publisher

Screen-reader testing found a second list of OneFindMe bugs after axe-core reported zero

OneFindMe's developer took axe-core to zero findings, then a keyboard and VoiceOver pass turned up six kinds of failure the scanner never flagged. One site and one blind iPhone user make a strong case for a screen reader in the release test plan.

Publishers:dev.to

Reality

Evidence45
Adoption8
Hype gap+5
Incentives25
Confidence55
buildConfirmed2 publishers

Safari Technology Preview 252 fixes two accessible-name bugs

Two accessibility name calculation bugs and six animation timeline bugs are resolved in WebKit's latest preview build, including scroll-timeline-name matching across shadow boundaries and a removal of three margin-trim values.

Publishers:dev.to webkit.org

Reality

Evidence88
Adoption
Not scored
Hype gap0
Incentives
Not scored
Confidence82
buildOne report1 publisher

Reusing one live-region node on retry glued a cancelled chat answer to the new one

Writing a retry into the same live-region node made a screen reader read the cancelled chat fragment and the new answer as one paragraph, a dev.to repro found. The author traces it to node identity and argues each retry needs its own announcement and an immediate rename of the Stop button.

Publishers:dev.to

Reality

Evidence40
Adoption
Not scored
Hype gap+10
Incentives
Not scored
Confidence45
buildOne report1 publisher

A client-side route change in Next.js drops keyboard focus back to <body>

The App Router's built-in announcer writes the new page name into an aria-live region on every client-side navigation. Focus stays where the unmounted link was, so the next Tab press starts again at the site header.

Publishers:dev.to

Reality

Evidence62
Adoption
Not scored
Hype gap+8
Incentives22
Confidence58
buildOne report1 publisher

Calling .focus() on a tabindex="-1" option takes keyboard input away from the listbox

Browsers keep exactly one focused element in the DOM. A dev.to walkthrough of custom dropdown bugs shows what happens to keyboard and screen reader users when a widget moves real focus into the list and sets aria-activedescendant as well.

Publishers:dev.to

Reality

Evidence45
Adoption
Not scored
Hype gap+12
Incentives20
Confidence55
buildOne report1 publisher

Generated flex rows need min-w-0 before Tailwind's truncate will clip a long username

A dev.to post collects four ways generated Tailwind markup passes the compiler and then breaks on a phone, along with the browser defaults behind each one. Its claim about how often this happens rests on hand-written examples.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap+30
Incentives
Not scored
Confidence50
buildOne report1 publisher

Eighteen CSS declarations build a badge component out of an undefined custom element

Custom-element markup that never reaches customElements.define() is still valid HTML a stylesheet can target. A dev.to write-up shows the CSS for a badge, including the display declaration the pattern cannot skip.

Publishers:dev.to

Reality

Evidence72
Adoption
Not scored
Hype gap+12
Incentives22
Confidence64
buildOne report1 publisher

Excluding WPML translation sets cut a duplicate-image scan from hundreds of groups to 29

WPML, Polylang and Bogo each give every language its own attachment pointing at one file on disk, so a content hash alone read a three-language image as three duplicates across a 3,099-image library.

Publishers:dev.to

Reality

Evidence48
Adoption20
Hype gap+8
Incentives55
Confidence45
buildOne report1 publisher

Omitting one spec div hands Product C's IP68 rating to Product B

A CSS grid places the children it is handed and counts nothing else, so a conditional that skips an unrated value slides the next product's number under the wrong header. The same omission in a real table row does the same thing.

Publishers:dev.to

Reality

Evidence60
Adoption
Not scored
Hype gap−5
Incentives15
Confidence65
buildOne report1 publisher

Three tickets in one quarter trace back to a spec row built from divs

An accessibility audit, an extraction pass and an AI shopping assistant each found a different symptom in the same product comparison table. The markup underneath paired values to headers by position only.

Publishers:dev.to

Reality

Evidence48
Adoption
Not scored
Hype gap+15
Incentives25
Confidence55
buildOne report1 publisher

matchMedia answers the 900px question in ten events instead of six hundred resize fires

A dev.to post traces a flickering sidebar to a resize listener comparing window.innerWidth against 900, where a scrollbar shifting that number by 15px is enough to flip the chart component at the boundary.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap+15
Incentives30
Confidence50
buildOne report1 publisher

A 2.4-second silence gap buys five words of audio description

In a dev.to walkthrough, FFmpeg's silencedetect finds the gaps, a word budget prices each one at 2.5 words a second, and any narration that renders longer than its gap is thrown out and generated again shorter.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+8
Incentives15
Confidence55
buildOne report1 publisher

Role-based locators tie test reliability to your button's accessible name

A dev.to post argues the DOM is an interface for screen readers, crawlers, extensions and browser agents. The load-bearing consequence is narrower: a Playwright query by role and name makes your visible label the contract.

Publishers:dev.to

Reality

Evidence42
Adoption
Not scored
Hype gap+25
Incentives15
Confidence55
buildOne report1 publisher

Coding agents learned markup from a web where 96% of homepages fail automated checks

WebAIM found accessibility problems on 96% of the top million homepages using automated tools alone. That corpus is what coding agents pattern-match against, and the remedy on offer is an instruction file the agent reads every session.

Publishers:dev.to

Reality

Evidence42
Adoption20
Hype gap+15
Incentives25
Confidence38
buildOne report1 publisher

An Official Journal citation due late 2026 turns WCAG 2.2 into an EAA obligation

The next EN 301 549 is finished, but nothing binds until the European Commission cites it. Until then V3.2.1 and WCAG 2.1 remain the text you are actually measured against, and the citation date has already moved.

Publishers:dev.to

Reality

Evidence46
Adoption
Not scored
Hype gap−10
Incentives40
Confidence45
buildOne report1 publisher

Seven semantic checkpoints catch the UI defects a visual review approves

A dev.to walkthrough collects the review items a screenshot cannot show: labels not linked to their inputs, icon buttons with no accessible name, and Cancel buttons that submit because HTML defaults them to submit.

Publishers:dev.to

Reality

Evidence66
Adoption
Not scored
Hype gap+5
Incentives18
Confidence58
buildOne report1 publisher

Hiding a tab panel with display:none strands the browser's own validation bubble

HTML5 constraint validation still blocks the submit event when a required field is empty, but if that field sits in a display:none panel there is nowhere to draw the error bubble, so the save button just looks dead.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap0
Incentives25
Confidence58

Earlier coverage