Tier C

RN-universal Switch pilot

Scaffolded

Pressable track + translating thumb. Controlled and uncontrolled modes. accessibilityRole='switch' + accessibilityState.{checked,disabled} — emits role='switch' + aria-checked on RN Web.

Side-by-side: controlled

shadcn (Radix Switch)
RN (Pressable via RN Web)
Notifications

Shared state: toggle either surface and both update.

Uncontrolled

Analytics tracking (on by default)

Disabled

Disabled, off
Disabled, on

Settings form

Reduce motion
Daily digest email
Beta features

Semantics

AspectshadcnRNNotes
Element<button role="switch"><Pressable accessibilityRole="switch">Role parity
Checked statedata-state="checked"accessibilityState.checkedEmits aria-checked on RN Web
Thumb motiontranslate-x utilitytransform translateX via styletransform array works on both web + native
Track colourdata-state descendant CSSchecked ? bg-primary : bg-switch-bgBranch at the className level