Designing for one tap
A reaction should cost less than a reply. One tap, a small burst of joy, and back to reading. The bar keeps to its corner as the page scrolls, ready whenever the reader is.
Reactions let people respond to content with an emoji in one tap. They sit under a message or post as a row of pills, or float in a corner of the page.
Just shipped the reactions component. Picking one turns a click into a small celebration, which is the whole point.
The default: pills under the content, with the add button at the end.
A bar pinned to a corner of the page, for reacting to the page as a whole, such as the end of an article. It shows the total beside the add button, and the burst rises from the bar.
Designing for one tap
A reaction should cost less than a reply. One tap, a small burst of joy, and back to reading. The bar keeps to its corner as the page scrolls, ready whenever the reader is.
The usual home: a row under each message in a thread.
Just shipped the reactions component. Picking one turns a click into a small celebration, which is the whole point.
The row can report every change so your app saves it, and anything else on the page can read the same numbers.
9 reactions across 3 kinds
The row is a pill per reaction, each an emoji and a count, then an add button. Your own reactions are tinted.
The add button opens a picker of six common reactions, plus any already on the item. The ones you've picked are tinted here too.
locale, so the server and the browser render the same text.Just shipped the reactions component. Picking one turns a click into a small celebration, which is the whole point.
Just shipped the reactions component. Picking one turns a click into a small celebration, which is the whole point.
Every pill and the add button is a regular button, so the row works from the keyboard in tab order.
| Key | Does |
|---|---|
| Tab | DoesMoves between the pills and the add button |
| Space or ↵ | DoesAdds or takes back a reaction, or opens the picker |
| ←→ | DoesMoves through the choices in the picker |
| Home or End | DoesJumps to the first or last choice |
| Esc | DoesCloses the picker and puts focus back on the add button |
aria-pressed for whether you've reacted. The emoji itself is hidden from screen readers.triggerLabel and panelLabel when your product speaks another language.