rc-slider vs react-slider vs react-input-slider
React Slider Libraries Comparison
1 Year
rc-sliderreact-sliderreact-input-sliderSimilar Packages:
What's React Slider Libraries?

React slider libraries provide components that allow users to select a value or range of values from a continuum, typically represented visually as a horizontal or vertical bar. These libraries enhance user experience by offering interactive controls for selecting numeric values, which can be crucial in forms, settings, and data visualization. Each library has its own unique features, design principles, and use cases that cater to different development needs and preferences.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
rc-slider2,169,9113,060173 kB2742 months agoMIT
react-slider208,549896269 kB402 years agoMIT
react-input-slider11,820142-164 years agoMIT
Feature Comparison: rc-slider vs react-slider vs react-input-slider

Customization

  • rc-slider:

    rc-slider offers extensive customization options, allowing developers to modify styles, handle events, and create custom marks and tooltips. It supports vertical and horizontal orientations, making it versatile for different UI designs.

  • react-slider:

    react-slider allows for moderate customization with props for styling and behavior. It supports both single and range sliders, providing a balance between customization and ease of use, suitable for most applications.

  • react-input-slider:

    react-input-slider provides basic customization through props but is less flexible than rc-slider. It allows for some styling adjustments but is primarily focused on simplicity and ease of use, making it less suitable for complex designs.

Ease of Use

  • rc-slider:

    rc-slider has a steeper learning curve due to its extensive features and customization options. Developers may need to invest time in understanding its API and capabilities, but it rewards with flexibility for complex applications.

  • react-slider:

    react-slider strikes a balance between ease of use and flexibility. It is relatively easy to integrate into applications while providing enough options for customization, making it suitable for a wide range of projects.

  • react-input-slider:

    react-input-slider is designed for simplicity, making it easy to implement and use. Its straightforward API allows developers to quickly add a slider to their forms without much overhead, ideal for beginners or simple projects.

Performance

  • rc-slider:

    rc-slider is optimized for performance, but its extensive features may introduce overhead in very complex scenarios. It is generally efficient for standard use cases, but developers should be mindful of performance in highly interactive applications.

  • react-slider:

    react-slider is designed for good performance with minimal overhead. It efficiently handles updates and re-renders, making it suitable for applications that require smooth interactions and quick response times.

  • react-input-slider:

    react-input-slider is lightweight and performs well in most scenarios. Its simplicity contributes to fast rendering and responsiveness, making it a good choice for applications where performance is critical.

Accessibility

  • rc-slider:

    rc-slider includes accessibility features, but developers need to ensure proper implementation for full compliance. It provides keyboard navigation and ARIA attributes, but additional effort may be required for optimal accessibility.

  • react-slider:

    react-slider offers good accessibility features, including keyboard navigation and ARIA support. It is designed to be usable by a wide range of users, making it a solid choice for applications that prioritize accessibility.

  • react-input-slider:

    react-input-slider has basic accessibility support, making it usable with screen readers and keyboard navigation. However, developers should verify that it meets specific accessibility standards for their applications.

Community and Support

  • rc-slider:

    rc-slider has a strong community and is well-documented, making it easier for developers to find support and resources. Its popularity ensures that issues are often addressed quickly, and there are many examples available.

  • react-slider:

    react-slider benefits from a moderate community presence, providing a decent amount of documentation and examples. While not as extensive as rc-slider, it is still sufficient for most developers to find help when needed.

  • react-input-slider:

    react-input-slider has a smaller community compared to rc-slider, which may result in fewer resources and examples. However, its simplicity means that most common issues can be resolved easily with the available documentation.

How to Choose: rc-slider vs react-slider vs react-input-slider
  • rc-slider:

    Choose rc-slider if you need a highly customizable slider component with extensive features like range selection, vertical orientation, and custom marks. It is suitable for complex use cases where detailed control over the slider's behavior and appearance is required.

  • react-slider:

    Opt for react-slider if you want a flexible and responsive slider that supports both single and range values. It is particularly useful for applications that require a straightforward implementation with good performance and accessibility.

  • react-input-slider:

    Select react-input-slider for a simple and lightweight solution that offers a straightforward API and is easy to integrate into forms. It is ideal for projects where you need a quick and efficient slider without extensive customization options.

README for rc-slider

rc-slider

Slider UI component for React

NPM version npm download build status Codecov bundle size dumi

Install

rc-slider

Example

npm start and then go to http://localhost:8000

Online examples: https://slider.react-component.now.sh/

Usage

Slider

import Slider from 'rc-slider';
import 'rc-slider/assets/index.css';

export default () => (
  <>
    <Slider />
  </>
);

Range

Please refer to #825 for information regarding usage of Range. An example:

import Slider, { Range } from 'rc-slider';
import 'rc-slider/assets/index.css';

export default () => (
  <>
    <Slider range />
  </>
);

Compatibility

| IE / Edge
IE / Edge | Firefox
Firefox | Chrome
Chrome | Safari
Safari | Electron
Electron | | --- | --- | --- | --- | --- | | IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions |

API

createSliderWithTooltip(Slider | Range) => React.Component

An extension to make Slider or Range support Tooltip on handle.

const Slider = require('rc-slider');
const createSliderWithTooltip = Slider.createSliderWithTooltip;
const Range = createSliderWithTooltip(Slider.Range);

Online demo

After Range or Slider was wrapped by createSliderWithTooltip, it will have the following props:

| Name | Type | Default | Description | | ------------ | ------- | ------- | ----------- | | tipFormatter | (value: number): React.ReactNode | value => value | A function to format tooltip's overlay | | tipProps | Object | {
placement: 'top',
prefixCls: 'rc-slider-tooltip',
overlay: tipFormatter(value)
} | A function to format tooltip's overlay |

Common API

The following APIs are shared by Slider and Range.

| Name | Type | Default | Description | | ------------ | ------- | ------- | ----------- | | className | string | '' | Additional CSS class for the root DOM node | | min | number | 0 | The minimum value of the slider | | max | number | 100 | The maximum value of the slider | | id | string | '' | Unique identifier for the component, used for accessibility | | marks | {number: ReactNode} or{number: { style, label }} | {} | Marks on the slider. The key determines the position, and the value determines what will show. If you want to set the style of a specific mark point, the value should be an object which contains style and label properties. | | step | number or null | 1 | Value to be added or subtracted on each step the slider makes. Must be greater than zero, and max - min should be evenly divisible by the step value.
When marks is not an empty object, step can be set to null, to make marks as steps. | | vertical | boolean | false | If vertical is true, the slider will be vertical. | | handle | (props) => React.ReactNode | | A handle generator which could be used to customized handle. | | included | boolean | true | If the value is true, it means a continuous value interval, otherwise, it is a independent value. | | reverse | boolean | false | If the value is true, it means the component is rendered reverse. | | disabled | boolean | false | If true, handles can't be moved. | | keyboard | boolean | true | Support using keyboard to move handlers. | | dots | boolean | false | When the step value is greater than 1, you can set the dots to true if you want to render the slider with dots. | | onBeforeChange | Function | NOOP | onBeforeChange will be triggered when ontouchstart or onmousedown is triggered. | | onChange | Function | NOOP | onChange will be triggered while the value of Slider changing. | | onChangeComplete | Function | NOOP | onChangeComplete will be triggered when ontouchend or onmouseup is triggered. | | minimumTrackStyle | Object | | please use trackStyle instead. (only used for slider, just for compatibility , will be deprecate at rc-slider@9.x ) | | maximumTrackStyle | Object | | please use railStyle instead (only used for slider, just for compatibility , will be deprecate at rc-slider@9.x) | | handleStyle | Array[Object] | Object | [{}] | The style used for handle. (both for slider(Object) and range(Array of Object), the array will be used for multi handle following element order) | | trackStyle | Array[Object] | Object | [{}] | The style used for track. (both for slider(Object) and range(Array of Object), the array will be used for multi track following element order)| | railStyle | Object | {} | The style used for the track base color. | | dotStyle | Object | (dotValue) => Object | {} | The style used for the dots. | | activeDotStyle | Object | (dotValue) => Object | {} | The style used for the active dots. |

Slider

| Name | Type | Default | Description | | ------------ | ------- | ------- | ----------- | | defaultValue | number | 0 | Set initial value of slider. | | value | number | - | Set current value of slider. | | startPoint | number | undefined | Track starts from this value. If undefined, min is used. | | tabIndex | number | 0 | Set the tabIndex of the slider handle. | | ariaLabelForHandle | string | - | Set the aria-label attribute on the slider handle. | | ariaLabelledByForHandle | string | - | Set the aria-labelledby attribute on the slider handle. | | ariaRequired | boolean | - | Set the aria-required attribute on the slider handle. | | ariaValueTextFormatterForHandle | (value) => string | - | A function to set the aria-valuetext attribute on the slider handle. It receives the current value of the slider and returns a formatted string describing the value. See WAI-ARIA Authoring Practices 1.1 for more information. |

Range

| Name | Type | Default | Description | | ------------ | ------- | ------- | ----------- | | defaultValue | number[] | [0, 0] | Set initial positions of handles. | | value | number[] | | Set current positions of handles. | | tabIndex | number[] | [0, 0] | Set the tabIndex of each handle. | | ariaLabelGroupForHandles | Array[string] | - | Set the aria-label attribute on each handle. | | ariaLabelledByGroupForHandles | Array[string] | - | Set the aria-labelledby attribute on each handle. | | ariaValueTextFormatterGroupForHandles | Array[(value) => string] | - | A function to set the aria-valuetext attribute on each handle. It receives the current value of the slider and returns a formatted string describing the value. See WAI-ARIA Authoring Practices 1.1 for more information. | | count | number | 1 | Determine how many ranges to render, and multiple handles will be rendered (number + 1). | | allowCross | boolean | true | allowCross could be set as true to allow those handles to cross. | | pushable | boolean or number | false | pushable could be set as true to allow pushing of surrounding handles when moving a handle. When set to a number, the number will be the minimum ensured distance between handles. Example: | | draggableTrack | boolean | false | Open the track drag. open after click on the track will be invalid. |

SliderTooltip

The Tooltip Component that keep following with content.

Development

npm install
npm start

Test Case

npm run test

Coverage

npm run coverage

License

rc-slider is released under the MIT license.