Skip to content

Slider

Slider for choosing one value or a range between two bounds.

Browsers
Chrome 123+Firefox 121+Safari 17.5+
Tier
0
Bundle compressed
465 B
Forced layout budget
0 ms
Axe budget
0
SSR compatible
Yes
Published contract
Test harness

Playground

Slider

Default slider

Controlled slider

Marked slider

Range slider

Vertical slider

Disabled slider

API

Slider

PropTypeDefaultDescription
valuenumber—Current value, making the slider controlled.
defaultValuenumber—Starting value for the uncontrolled slider, which the native range input then owns.
onValueChange(value: number) => void—Called with the new number whenever the slider moves.
minnumber0Lowest selectable value.
maxnumber100Highest selectable value.
stepnumber1Increment between selectable values.
disabledbooleanfalseDisables the native input and sets the data-disabled attribute.
renderReactElement | ((props, state) => ReactElement)—Replace the rendered element while keeping behavior and accessibility wiring.

SliderClient

PropTypeDefaultDescription
valuenumber | readonly [number, number]—Controlled value; a tuple renders a lower and upper thumb.
defaultValuenumber | readonly [number, number]—Initial value for the native range input or two-thumb range.
onValueChange(value: number | readonly [number, number]) => void—Called when the selected value or ordered range changes.
minnumber0Lowest selectable value.
maxnumber100Highest selectable value.
stepnumber | null1Numeric step keeps native stepping before hydration; null restricts values to min, max, and marks after hydration.
marksreadonly { value: number; label?: ReactNode }[]—Tick labels and snap stops when step is null.
orientation"horizontal" | "vertical""horizontal"Layout direction for the control and its marks.
thumbLabelsreadonly [string, string]—Accessible names for the lower and upper range thumbs.
disabledbooleanfalseDisables all native range inputs.
renderReactElement | ((props, state) => ReactElement)—Replace the rendered element while keeping behavior and accessibility wiring.

Keyboard

KeyAction
Arrow keysAdjust the focused native range input by one step or stop
Home / EndMove the focused thumb to the minimum or maximum
TabMove between the lower and upper range thumbs

Accessibility

Slider renders a native range input that works before hydration and with JavaScript disabled. SliderClient also server-renders native range inputs, then controls them after hydration for range values, labeled marks, and nonuniform snapping. Numeric step keeps native stepping before hydration; step={null} mark snapping starts after hydration. Give a single slider an aria-label or aria-labelledby; give both range thumbs thumbLabels.

Styling hooks

data-uiify-sliderdata-uiify-slider-clientdata-part="root"data-part="track"data-part="range"data-part="mark"data-part="thumb"data-orientationdata-disableddata-enhanced--uiify-slider-start--uiify-slider-end--uiify-slider-position