View
The layout primitive: a flex container that runs identically on iOS, Android, and the web. A View is a column by default.
Reach for it directly only when no semantic primitive covers what you need: arrangement (direction, gap, alignment, padding) belongs to Row and Column, which are Views with that axis exposed as boolean props, and a bordered filled surface belongs to Card. Numbers are density-independent pixels.
iOS
Android
Web
tsx
Default
Column
Flex sizing
Padding
Do & Don’t
Arrangement
Don’t
A hand-written flex style object restates what the primitives already name, drifts off the spacing scale, and has to be re-read to know what it does.
Do
Semantic arrangement
Row and Column carry direction, gap, alignment and padding as boolean props, so the arrangement reads as language and lands on the kit's spacing scale.
Surfaces
Don’t
Rebuilding the same box out of a View and four style properties drifts from the platform skins the moment one of them changes.
Do
A real surface
A bordered, filled, padded surface is a Card; it carries the platform's own radius, hairline and elevation.