Skip to content

Slider

A draggable range input for numeric values within a min–max range. Supports both continuous and stepped modes.

When to use: Volume, brightness, price range, playback position, zoom level — any scalar value the user adjusts by feel.

When not to use: Precise numeric entry — use Input with a numeric keyboard. Binary choices — use Switch. Discrete options — use Radio.

import { Slider } from '@/components';
<Slider
value={volume}
onValueChange={setVolume}
minimumValue={0}
maximumValue={100}
step={1}
accessibilityLabel="Volume"
/>
PropTypeDefaultDescription
valuenumberControlled value (required)
onValueChange(value: number) => voidChange handler (required)
accessibilityLabelstringScreen reader description (required)
minimumValuenumber0Minimum value
maximumValuenumber1Maximum value
stepnumber0 (continuous)Step increment
isDisabledbooleanfalsePrevents interaction
testIDstringFor testing
// Continuous — any value between 0 and 1
<Slider value={opacity} onValueChange={setOpacity} minimumValue={0} maximumValue={1} accessibilityLabel="Opacity" />
// Stepped — integer values only
<Slider value={rating} onValueChange={setRating} minimumValue={1} maximumValue={5} step={1} accessibilityLabel="Rating" />
  • accessibilityLabel is required — announces what the slider controls
  • Screen readers can increment/decrement the value using accessibility actions
  • Input — precise numeric entry
  • Switch — binary control