Button renders a React Native Pressable with a label, optional icons and the same variants and sizes as the web. Handle taps with onPress. See the web Button page for how each variant is meant to be used.
primary is the default. danger, success and warning are solid like primary. secondary, tertiary, quaternary, subtle, ghost and link are quieter.
size takes xs, s, m, l and xl, from 24 to 56 points tall. m is the default. A button is as wide as its label; fillWidth stretches it to its parent, and horizontal aligns the content inside it.
Small sizes still take taps from a 44 point area around them, without being drawn larger.
prefixIcon and suffixIcon take a built-in icon name, as on the web, or any element. The icon takes the label's colour.
loading swaps the prefix icon for a spinner and blocks presses. disabled greys the button out and blocks presses. Both are reported to screen readers.
- onPress. Button takes React Native's Pressable props, so taps go to onPress. There is no onClick.
- No href. A button does not render a link. Navigate in onPress, for example with your router.
- Pressed, not hover. Each variant shows its pressed colours while the finger is down.
- No arrowIcon. Use suffixIcon="arrowRight" for an arrow.
Button also takes every React Native Pressable prop except children and style, which it replaces.