by feross on 6/17/25, 1:16 AM with 127 comments
by skgough on 6/17/25, 5:26 AM
When you use HTML primitives like inputs with associated labels, the new popover API, dialogs, details + summary elements, their behaviors are all made by the browser vendor and are designed to compose with each other. It really is a difference of night and day, and for free. We don't take advantage of the amazingly powerful tools we have been given.
by energywut on 6/17/25, 3:55 AM
To me that's equivalent to saying, "we know our system has bugs, but we only want our blind users to experience them". It's just... such a downer of a way to look at the world.
by cyberlimerence on 6/17/25, 4:15 AM
by matsemann on 6/17/25, 7:48 AM
The things I did most often I had bookmarklets for.
by twoquestions on 6/17/25, 12:29 PM
https://chromewebstore.google.com/detail/vimium/dbepggeogbai...
by chrismorgan on 6/17/25, 6:05 AM
That’s tame. Try adding some Tailwind CSS.
After monitoring Tailwind CSS since its early days, and believing I had some pretty serious philosophical disagreements with it, I recently took an opportunity to try it out in earnest, and it is so mindbogglingly obnoxious in dev tools that I think surely I must be missing something. How do people cope with this stuff!?
If you’re not sure what I’m on about, go through some of the sites linked near the bottom of https://tailwindcss.com/. In the Inspector/Elements panel, the DOM tree is a bloated mess with a class attribute which amounts to inline styles or worse, commonly hundreds of characters long, discouraging you from using semantically-meaningful classes, and duplicating stuff enormously rather than using sane selectors; the mostly-better ones are those that have data-sentry-{element,component,source-file} attributes. The styles subpanel becomes utterly unnavigable.
(I’m not saying everything in Tailwind is bad; I think I am likely to use a limited utility styles approach more than I did in the past, and there are a couple of other things that are provoking thought in me, and I think it would be more suitable in apps than in marketing-style websites. But the total embodiment of it is not for me.)
by ChrisMarshallNY on 6/17/25, 9:26 AM
The one thing that I’ve found to be important, in native iOS coding, is to start early. Retrofitting accessibility sucks.
by smilekzs on 6/17/25, 6:52 AM
I vaguely remember (from 10+ years ago) that class selectors are much more performant than property selectors?
by moffkalast on 6/17/25, 9:25 AM
It's 2025, browsers are adding GPU access for JS, we can run native code with wasm, yet HTML still has no actual combobox support. WHATWG are not just clowns they are not even the whole circus, they are a worldwide consortium of circuses with Barnum at the helm.
by twodave on 6/17/25, 1:35 PM
I think understated by the author is how many a11y considerations are visual, real-time and/or physical in nature. Accessible UIs aren't just for communicating the structure of a page to a screen reader. Sometimes your user is deaf, or just colorblind, or lacks fine motor control/experiences physical fatigue using computers. Sometimes they're not blind, but they need larger letters and contrasting colors to quickly and accurately use your application. Sometimes you're displaying something new, and you need to let all of these users know about it clearly.
Also probably understated is that many component libraries (Prime, Material... all of them) have a11y bugs that nobody finds because most don't care. If you want your name on some open-source commits [0], this is a really easy way to get your feet wet.
Source: have done multiple WCAG audits
[0] seriously: https://github.com/primefaces/primeng/pull/15161/commits/ea4...
by robin_reala on 6/17/25, 7:43 AM
The only real get-out clause is if you’re a microenterprise: “an enterprise which employs fewer than 10 persons and which has an annual turnover not exceeding EUR 2 million or an annual balance sheet total not exceeding EUR 2 million”.
[1] https://eur-lex.europa.eu/eli/dir/2019/882/oj/eng (Edit: fixed URL from Y-bar)
by krzat on 6/17/25, 10:13 AM
Basically, you generate a textual representation of your UI, and then compare it against pre-recorded reference.
by panstromek on 6/17/25, 5:20 AM
The testing one is big, I don't want add a bunch of artificial attributes just match an element in test, it's much more natural to just target elements semantically.
by aitchnyu on 6/17/25, 5:45 AM
by blabla1224 on 6/17/25, 6:49 AM
by BrandoElFollito on 6/21/25, 12:07 PM
Like in web dev, correctly cooking stuff is something you learn.
If all you know about Brussels sprouts is from the school cafeteria, you live in a sea of <div>
by BrandoElFollito on 6/21/25, 12:05 PM
Enter submitting a form is a nightmare. I have so many times selected something in a filtered dropdown, wanted to confirm by pressing Enter and poof! my form is gone.
by rrgok on 6/17/25, 6:42 AM
If I’m trying to debug this in the DevTools, I’m completely lost. Where are the rows? Where are the columns?
I mean, if you can't decipher the rows and the columns from that divs...maybe this is job is not for you? I understand, there could be some divs soup that are really hard to decipher, but this it not the case. Poor example, please bring more complex example with test associated.by nonethewiser on 6/17/25, 2:57 PM
I interpret this to mean the author may not actually find this argument persuasive.
by johneth on 6/17/25, 3:20 PM
by 2OEH8eoCRo0 on 6/17/25, 2:13 PM
Have fun competition!
by layer8 on 6/17/25, 2:24 PM
by goodpoint on 6/17/25, 10:50 AM
by eviks on 6/17/25, 5:53 AM
Isn't inspecting the actual cell /header easier?
by snarfy on 6/17/25, 2:45 PM
We would all be better off spending that investment on improving the dozen or so screen readers instead of billions of web sites. We aren't far from an LLM powered screen reader making aria tags moot.