Stepper
Increment, decrement, or type a number in a bounded range. A − button, an editable numeric center field, and a + button, controlled by value and clamped to min / max by step. This is the ± numeric control (the iOS UIStepper idiom); for a multi-step progress indicator see Steps.
Pass label to title the control from above, and required to mark it: the label takes a decorative destructive star, and a screen reader hears the control as required, from aria-required on the web's numeric field and from its name ("Quantity, required") on iOS and Android.
iOS
Android
Web
tsx
Default
With label
With description
Sizes
With min / max
Stepped
Disabled
Props
Do & Don’t
Bounds
Don’t
Leaving the range unbounded lets the user push the count below zero or past what the form can accept.
Do
Quantity
Set min and max so the buttons disable at the edges and the value can never leave the valid range.
Step
Don’t
A step of 1 on a field that only takes round numbers makes the user tap many times to reach a usable value.
Do
Match step to the real increment, so each tap moves the value by an amount that makes sense for the field.