| Consider that those layers of abstraction exist for a reason? Let’s say you can’t see very well. This is what I hear when I enable VoiceOver on macOS and open Discord (either the web app or the desktop app): 1. “Discord, friends - Discord window, direct messages, selected cell” 2. “You are currently on a cell inside of a table. To navigate the cells within a table, press…” 3. (when navigating with the keyboard) “1 mention, $SERVER_NAME, cell” “$SERVER_NAME, cell” etc And here’s when I do the same with a random Dear ImGui app I have installed: 1. “$APP_NAME, $APP_NAME window, $APP_NAME window” 2. “You are currently in a window” 3. (when navigating with the keyboard) [silence; no additional instructions] So that Dear ImGui app is entirely unusable for anyone who needs a screen reader. This is something every React app — really every web app, period — gets basically for free. And it’s not just screen readers, right? It’s different viewport sizes and alternate character sets and right-to-left text and user-defined fonts and searching through text on a page and the zillion-and-one other things that you either take for granted or don’t need at all but are crucial for millions of people. Yes, if you could make a good UI by just filling a frame buffer with pixels, web browsers and React would all be hideously over-engineered. But we don’t live in that world. |
All in all, I don't think "there is a reason things are the way they are" quite means "the way things are is actually the best they possibly could be".