Every accessibility checklist mentions focus management, and then moves on — as if it were one item. It isn't. It's a discipline, and it's the single thing that most often separates an app that technically passes an audit from one a keyboard user can actually get through.
Here's the mental model that fixed it for me: focus is a cursor, and there is only ever one of it. For someone using a keyboard or a screen reader, focus is where they are in your app. Sighted mouse users don't think about it because their eyes and pointer move independently. Everyone else has exactly one position, and every time your UI changes what's on screen, you owe them an answer to one question:
Where does focus go now?
Get that answer wrong and the user is teleported somewhere useless — usually the top of the page, or worse, , from which they have to Tab through your entire chrome to get back. And no automated tool will tell you, because "where focus went after a state change" isn't in a DOM snapshot. Let's go through the four places Angular apps get it wrong.
Route changes: the SPA focus black hole








