TrademarkTrademark
Docs
Ctrl k
Search docs...
Components

RangeSlider

Updated: October 11, 2026
View on GitHub
Soon
Not released yet. This is on main and is not in any published version yet. It will not install today.

RangeSlider selects a [start, end] range with two thumbs on one track. It looks like Slider and takes the same min, max, step, label, showValue and disabled; its value is a pair, start first.

Without value or defaultValue, the range starts as the whole track, [min, max].

Controlled

Pass value and onChange when something else owns the range, such as the filters of a product list. onChange gets the new pair, start never above end. formatValue sets how a value reads, in the readout and to a screen reader, and minDistance keeps the thumbs apart.

Disabled

Forms

Give the slider a name and a form submits both values under it, start first. Pass two names to submit each under its own, as a search form's query string wants:

Accessibility

The two thumbs sit in a group named by label (or aria-label). Each thumb is a slider of its own, named "Minimum" and "Maximum": pass thumbLabels to name them otherwise, or in another language. A thumb's bounds are the other thumb, so a screen reader announces how far each one can go and the thumbs can never cross.

Key
Does
Right / UpOne step higher. Left and Right swap in a right-to-left layout.
Left / DownOne step lower.
Page Up / Page DownA tenth of the range higher or lower.
Home / EndThe lowest or highest value the thumb can reach.

A press on the track moves the nearer thumb there, and either thumb can be dragged. When the two thumbs sit on the same value, the first move decides which one comes along, since only one of them can go each way.

API reference

Type
Default
value
The selected [start, end], when the host owns the state. Pair with onChange.
[number, number]—
defaultValue
The range selected first when RangeSlider keeps its own state. Defaults to [min, max].
[number, number]—
onChange
Called with the new [start, end].
(value: [number, number]) => void—
min
number0
max
number100
step
Every value lands on a multiple of step from min.
number1
minDistance
The smallest gap the thumbs keep between them.
number0
label
Visible label that names the pair of thumbs.
string—
showValue
Show the selected range beside the label.
booleanfalse
formatValue
How a value reads, in the readout and to a screen reader.
(value: number) => stringString
thumbLabels
The thumbs' accessible names, start first.
[string, string]["Minimum", "Maximum"]
name
Submit both values with a form: one name for both, or one for each.
string[string, string]
—
disabled
booleanfalse
…and every FlexProps propinherited—
Edit this page on GitHub
TrademarkTrademark
Built with curiosity by Lorant One and the Design Engineers Club