Tier D1

RN-universal Textarea pilot

Scaffolded

Multi-line TextInput. Same API shape as RnInput (value/onChangeText/disabled/invalid). On web, RN Web renders a real <textarea> via multiline={true}; on native, TextInput auto-grows per rows.

Side-by-side: controlled

shadcn (native textarea)
RN (TextInput via RN Web)

Shared state — edits on either surface update both.

States

Semantics

AspectshadcnRNNotes
Element<textarea><TextInput multiline>RN Web renders a real <textarea> when multiline
Change handleronChange(e)onChangeText(text)RN hands back the string directly
Disableddisableddisabled (→ editable={false})Same semantics
Invalidaria-invalidinvalid prop → aria-invalidWeb forwarded
Row hintrows={n}rows={n}min-height and row hint both flow from rows