Skip to content

thinkcompany/react-a11y-announcer

Repository files navigation

react-a11y-announcer

Maintainability Test Coverage

react-a11y-announcer is a React a11y component created by Think Company that helps ensure announcements are accessible and properly announced by screen readers.

Building and running the demo

We included an example that shows you how the component will behave when added to a page. To run the demo:

  • Clone this repo locally
  • cd into the examples directory
  • run npm install
  • run npm start

This will start a server. Open a browser window and navigate to the localhost url displayed in the console output (usually http://localhost:8080/.

Press the "Trigger new announcement" button to add the announcement to the page.

Using the Announcer

Install from npm

npm install react-a11y-announcer --save

Import Announcer

import Announcer from 'react-a11y-announcer';

Create a state to pass to the announcer's props

  this.state = {
    announcement: ''
  }

Add the announcer to your template

  <div className="App">
    <Announcer text={this.state.announcement} />
    <div className="App-header">
      <h2>Basic Announcer Example</h2>
      <button type="button" onClick={this.handleClick}>Trigger new announcement</button>
    </div>
  </div>

Update the state you passed to the text prop

  handleClick() {
    this.setState(prevState => ({
      announcement: 'Here\'s a new announcement!'
    }));
  }

Whenever a user with a screenreader clicks on that button, they should hear the announcement.

Browser Testing

React Announcer was tested and works as expected in the latest versions of:

  • iOS VoiceOver w/ Safari
  • macOS VoiceOver w/ Safari
  • Android TalkBack w/ Chrome
  • NVDA w/ Firefox
  • JAWS w/ IE11

How we Tested

Desktop screen reader:

  • With screen reader turned on, navigate to URL (localhost:3000)
  • Ensure virtual cursor position at top of page (In Windows NVDA/JAWS, press CTRL+Home)
  • Arrow down until hearing "Trigger new announcement" button
  • Press ENTER key
  • You should hear, "Here's a new announcement!" through the screen reader when the text appears visually

Repeat steps but change ENTER key step to SPACE key, both should work.

Mobile screen reader (VO, TalkBack):

  • With screen reader turned on, navigate to URL (localhost:3000)
  • Quickly swipe right until "Trigger new announcement" button is in focus and announced to screen reader
  • Double tap to activate button
  • You should hear, "Here's a new announcement!" through screen reader when the text appears visually

Contributing to React Announcer

To contribute to this project, please review and follow the contributing guidelines.