Form
Stitch your own fields inside it; Form adds the stacked or two-column rhythm, titled sections, the submit and cancel actions row, and Enter to submit.
iOS
Android
Web
tsx
Default
Two-column
Measure
Sections
Account details
Credit card
Credit card with errors
Address
Address with errors
Select and switch controls
On the web, Enter confirms an active Autocomplete suggestion before it can submit the form. A subsequent Enter submits after the list closes. Enter used to confirm an input-method candidate never submits, and holding Enter does not repeat submission. Multiline fields retain Enter for newlines. On native platforms, each field's onSubmitEditing owns the return-key action.
Form is a composition surface: you stitch the field atoms as children and keep their state; Form supplies the vertical rhythm, the actions row, and onSubmit, which fires from the submit button or from Enter in a single-line field on the web.
On the web a Form is a form landmark. Name it with accessibilityLabel, a brief statement of its purpose such as "Sign in", so a screen reader's landmark list can tell it apart; a page that holds more than one form needs a distinct name on each.
Props
FormSection
Form
Do & Don’t
Stacked
Don’t
Pairing an email and password side by side cramps a sign-in form and breaks the natural top-to-bottom reading order.
Do
Keep short forms one field per row so each label sits directly above its input and the eye flows straight down.
Two-column
Don’t
Putting a wide field next to a tiny one in the same two-column row leaves the short input awkwardly oversized.
Do
Compose mixed rows inside the stacked form: give a full-width field like the street its own line and pair the similar-width city and ZIP in a Row.
Sections
Don’t
Hand-rolled headings spliced between fields carry no grouping semantics, so assistive tech never hears which section a field belongs to.
Do
Group related fields in a FormSection so each cluster carries its heading, its supporting line, and group semantics a screen reader announces.
Inline form
Don’t
Stacking the field above its button breaks the single-decision rhythm and adds a row of dead space.
Do
Subscribe to updates
We'll send you a weekly digest of what changed.
Keep the input and its submit button on one row so the input + action reads as one step.