Tier A
RN-universal Label pilot
ScaffoldedText element for form labels. On web via RN Web the htmlFor prop is forwarded to the DOM so clicking the label still focuses the input. On native, label-to-input association must go through accessibilityLabel / accessibilityLabelledBy.
Side-by-side: label + input pair
shadcn (Radix Label)
Email address
RN (Text via RN Web)
Email address
On native, use accessibilityLabel on the input — the visible label is presentational only.
Native guidance
On iOS / Android the htmlFor prop is a no-op. Set accessibilityLabel on the input itself, or use accessibilityLabelledBy with a node id when the visible label must stay separate from the input for visual hierarchy.
Semantics
| Aspect | shadcn | RN (via RN Web) | RN (native) |
|---|---|---|---|
| Element | <label> | <span> with forwarded for | <Text> |
| Click-to-focus | native <label> behavior | native <label> behavior | n/a — dispatch focus manually |
| Label association | htmlFor="id" | htmlFor="id" | accessibilityLabel on input |
| Disabled peer pattern | peer-disabled:* | peer-disabled:* | apply opacity manually |