I've heard this one a few times, usually in combination with the framework excuse from last week. It comes in a few variations, but the gist of it is the same.
You have a "modern single page app" that's dynamic and meant to look and feel like a "desktop app." Your "app" relies on a fancy framework, has built-in state management and a fancy router that makes it accessible at one URL. It all looks dynamic because the router swaps part of your page content around, so you don't feel a page reload.
I won't get into the usefulness of these single page apps (SPA). I will say that semantic HTML is not reserved for blogs. Your garden variety of "web apps" still need to comply.
That's because your SPA is still a webpage. It's built on HTML, not magic. And when your framework vomits out a div
monstrosity instead of proper structure, you're not "innovating" anything.
Screen readers don't give a shit about your framework. They read HTML. If your "app" is a nest of div
s, congrats to you! You built a maze with no exits.
Just because your content loads asynchronously doesn't mean you get to skip headings, lists or buttons. Can keyboard users navigate it? No? Then it's half-built, half BS. Dynamic doesn't mean broken.
The web is inherently semantic. Browsers, assistive tech and search engines rely on structure.
If your "web app" can't handle basic semantics, it's not an app. It's a liability. Stop hiding behind frameworks and learn the damn platform. I don't care if you're creating a "desktop app."
Your "desktop app" still needs to be accessible. That's because desktop apps need to be accessible as well. So there goes your excuse!