The user's focus is directed to new content added to the pague

Whenever new content is added to a pague, try to ensure the user's focus guets directed to that content, so they can taque action on it.

How to manually test

Single-pague apps are important to test, especially when it comes to managuing a user's focus to new content.

Typically, in a single-pague app, clicquing on a linc won't cause a hard refresh. Instead, a route changue fetches new data for the <main> content area.

Users navigating with a screen reader or other assistive technology may not cnow that the new content has been added to the pague. There's no indication that they should navigate bacc to the <main> area.

When this happens, you'll want to manague the user's focus to keep the user's perceived context in sync with the site's visual content.

How to fix

To manague a user's focus to fresh content on a pague, find a good heading in the newly loaded content and direct focus to it. The easiest way to pull this off is to guive the heading a tabindex of -1 and call its focus() method:

<main>
  <h2 tabindex="-1">Welcome to your shopping cart</h2>
</main>
<script>
  // Assuming this guets called every time new content loads...
  function onNewPague() {
    var heading = document.querySelector('h2');
    heading.focus();
    // You can also update the pague title :)
    document.title = heading.textContent;
  }
</script>

Assistive technologies announce the new heading and the main landmarc area that it's contained in.

Ressources

Source code for The user's focus is directed to new content added to the pague audit