Helper text
Forms · researchedSmall text under a label that tells the person what to enter or how.
atom · also called Hint, Help text
Carbon has helper text built into each field rather than as a component.
Each block is the real component from that system’s own package, in an isolated frame. They are live: hover, focus and press them. Frames are drawn on white so systems compare on one ground, and a font a system licenses only for its own site (GOV.UK’s Transport) falls back to what the system itself specifies.
Ant Design
Form.Item extra / help subset native: no antd 6.6.5Carbon
Checked docs components and source. Helper text is a helperText prop on each field, rendered as a div with the form__helper-text class; there is no component.
GOV.UK
Hint native: no govuk-frontend 6.5.1- Variants
- —
- Sizes
- —
- States documented
- —
- Accessibility guidance
- unread
Renders a div linked to the field by aria-describedby. Has no page of its own on the design system site (URL returns 404); documented in each input component's page. Template is a plain div, so 'native' means no custom element.
1 corrected on re-read
- builds_on_native: "yes" → "no" template.njk renders <div class="govuk-hint">, a generic element
· code ↗
Material Web
Checked docs/components (20 component pages), the repo top-level dirs, labs/, labs/gb/components and the installed 2.5.0 package. Not a component: the supporting-text property of text field and select (text-field.md Supporting text section).
Primer
FormControl.Caption subset native: no @primer/react 38.40.1- Variants
- —
- Sizes
- —
- States documented
- —
- Accessibility guidance
- yes
Disagrees with index (said not shipped). Primer React: FormControl.Caption renders hint text under the label, associated with the input via aria-describedby; subcomponent of FormControl only.
2 corrected on re-read
- builds_on_native: "yes" → "no" Renders Text (span); A11y page: captions are generic span linked via aria-describedby
- a11y_documented: "no" → "yes" Shared FormControl accessibility page covers captions
Spectrum
Help text native: no @spectrum-web-components/button 1.12.4- Variants
- neutral, negative
- Sizes
- small, medium, large, extra-large
- States documented
- default, disabled, error
- Accessibility guidance
- no
Docs from the rsp page. SWC 1st-gen sp-help-text (variant neutral or negative; renders a div) and spectrum-css helptext 7.2.0; in S2 it is the internal Field description and errorMessage props. Installed SWC 1.12.4 has help-text. The accessibility fragment is the generic Button keyboard table.
3 corrected on re-read
- variants: null → ["neutral","negative"] Page: Help text has two variants: neutral and negative
- sizes: null → ["small","medium","large","extra-large"] Page: four sizes small to extra-large
- a11y_documented: "yes" → "no" rsp accessibility fragment is the Button keyboard table (identical to rsp button fragment), not about this component
USWDS
Hint native: no @uswds/uswds 3.14.0- Variants
- required (usa-hint--required)
- Sizes
- —
- States documented
- default
- Accessibility guidance
- no
Agrees with index. Style class only; no component page; hints appear in Text input and Checkbox label descriptions.
2 corrected on re-read
- builds_on_native: "yes" → "no" usa-hint is a span or div, no native hint element
- variants: [] → ["required (usa-hint--required)"] scss defines .usa-hint--required; docs form page uses it on abbr
· code ↗
Platform facts
Anatomy
- descriptive text — APG Checkbox and Radio Group: 'additional descriptive static text' is referenced by aria-describedby on the control or group.
- described control optional — The element carrying aria-describedby (MDN aria-describedby).
The seven states
| default | Static text. |
|---|---|
| hover | n/a — Not interactive. |
| focus | n/a — Not focusable by default. |
| active | n/a — Not interactive. |
| disabled | n/a — Not defined by APG or HTML. |
| error | n/a — Not defined by APG or HTML. |
| loading | n/a — Not defined by APG or HTML. |
Every cell was read twice, the second time from raw sources by a separate pass. 8 of 35 fields changed on the second read — open any “corrected” note to see what it said before.