packages/react-components/react-badge/stories/src/Badge/BadgeBestPractices.md
Badge content is exposed as text, and is treated by screen readers as if it were inline content of the control it is associated with. This should provide a reasonable default for most badges that contain plain text, such as the CounterBadge.
There are two actions authors should consider taking when using Badge to improve this experience:
aria-label, unless it is purely presentational:<Badge icon={<PasteIcon aria-label="paste" />} />
<button>
Inbox
<Badge>6<span class="visuallyHidden"> unread messages</span></Badge>
</button>
<button aria-label="Inbox, 6 unread messages">
Inbox
<Badge>6</Badge>
</button>
<Badge role="img" aria-label="Active" appearance="filled" color="brand" />} />