Slider
Drag (or tap) along a track to pick a value in a range; the keyboard and screen readers step it too. Controlled by value, bounded by min / max, and snapped to step.
Like the other input-like controls, a slider fills the parent it is given; a step of its own (xs, lg, …, with start to pin it to the leading edge) or a Container step sets its measure.
Pass ref to access the interactive adjustable track, including when a header is shown. Use useRef<ComponentRef<typeof Slider>>(null) from React, or useRef<View>(null) with React Native's View type. Object and callback refs are supported and detach on unmount. Calling ref.current?.focus() or .blur() delegates to the host without activating the control. Browser focus is supported; native focus depends on the platform and React Native version, and is separate from accessibility focus.
Name the setting with string children, or pass accessibilityLabel when the visible title is omitted or contains rich content.
iOS
Android
Web
tsx
Default
With label
With description
Small
Large
Stepped
Disabled
Measure
In glass mode the handle is a control-layer glass knob whose position is the authoritative value at every frame (a controlled value or a release can never lag behind the rail). Tapping the track puts the handle on the tapped value at once. The rail, the filled range, the value label and the hit target stay fixed. A disabled slider is inert; solid mode keeps the skin's own handle.
On iOS 26 the handle is a real Apple Liquid Glass control, with the material's edge-lensing and specular showing on a physical device. This is automatic from the glass surface, the platform default there, so there is no prop to set; under a solid surface, Reduce Transparency, or Increase Contrast the handle falls back to a solid knob. The Android and web handles keep their own native look.
Props
Do & Don’t
Range
Don’t
Cramming the slider into a tiny width leaves no travel, so the thumb can barely move and the value is hard to set.
Do
Volume
Give the track room to breathe so the thumb has a clear travel path and the value reads at a glance. Pass the label as children; the slider owns the title above the rail.
Bounds
Don’t
A slider with no readout and no visible label leaves users guessing what the value is and what it controls.
Do
Volume
48
Pair the slider with its current value so the number is explicit, not just inferred from the thumb position. showValue renders the live readout above the track.
State
Don’t
Don't fake a disabled slider with a faint inline track; the real disabled prop also blocks the gesture and sets accessibility state.
Do
Use the disabled state for values the user cannot change yet; it dims clearly so it does not look interactive.
Keyboard
Don’t
Leave the slider unnamed. It still takes focus and shows the ring, but a screen reader announces a bare number with nothing to say what it sets.
Do
Name the slider and let it take keyboard focus. Tab lands on it and its thumb wears the kit's 2 px focus ring in the theme's ring colour, over the glass knob too; the arrows, Page Up, Page Down, Home and End then set the value. A click shows no ring.