Tier A

RN-universal Label pilot

Scaffolded

Text 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

AspectshadcnRN (via RN Web)RN (native)
Element<label><span> with forwarded for<Text>
Click-to-focusnative <label> behaviornative <label> behaviorn/a — dispatch focus manually
Label associationhtmlFor="id"htmlFor="id"accessibilityLabel on input
Disabled peer patternpeer-disabled:*peer-disabled:*apply opacity manually