Handling Page Titles in React

For developers who want to:

  • Understand the importance of the page title to users of assistive technology
  • Manage page titles throughout your React application
  • Decide what your page titles should be

Why is the page title important?

The short answer to this is that the page title is immediately available to a user without entering or navigating your page content. To get a feel for the accessibility implication of this, try turning on your screen reader now. You should find that the title of this page is immediately announced to you, along with any other relevant browser information. If you have other tabs open, try tabbing or clicking through them and see how useful the titles are in understanding whether that tab contains the content you are looking for.

It’s clear that a concise, descriptive page title can be vital in surfacing your content to screen reader users.

How to title your pages

W3C has some excellent tips on page titles, which are summarised below.

The title of each web page should:

  • Identify the subject of the web page
  • Make sense when read out of context, for example by a screen reader, in a site map or list of search results
  • Be short

It may also be helpful for the title to:

  • Identify the site or other resource to which the web page belongs
  • Be unique within the site or other resource to which the web page belongs

It’s also usually preferred that the most important/specific information comes first, e.g.

Handling Page Titles: Up Your A11y

Rather than:

Up Your A11y: Handling Page Titles

Setting the title in React

Given that React produces single page applications, the page title never changes unless it is specifically managed. This leaves your users with few clues to the page that they’re currently viewing without entering and reading your content. The great news though is that managing the page title can be done with minimal effort via the React Document Title component.

For each page in your app, wrap the rendered components in the DocumentTitle component, and pass in the page title, e.g.

...waiting for Gist...

You can even tie the page title to a property in your component’s state if need be, e.g. if you need to load the page title from an API or elsewhere when the component mounts.

...waiting for Gist...

This solution will help a whole range of users browse your apps, as well as giving your pages a professional look and feel.