
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
react-responsive-select
Advanced tools
A React customisable, touchable, single-select / multi-select form component. Built with keyboard and screen reader accessibility in mind.
A customisable, touchable, React single-select / multi-select form control.
Built with keyboard and screen reader accessibility in mind.
https://benbowes.github.io/react-responsive-select/demo/

Install the dependency - https://www.npmjs.com/package/react-responsive-select
npm install react-responsive-select -D
Add ReactResponsiveSelect.js
And include the CSS file in your project via an import, or by copy/pasting the CSS from: ../node_modules/react-responsive-select/dist/ReactResponsiveSelect.css
Example usage:
import React from 'react';
import ReactResponsiveSelect from 'react-responsive-select';
const reportChange = (newValue) => console.log(newValue);
const Form = () => (
<form ref={r => this.form = r}>
<ReactResponsiveSelect
name="make"
options={[
{ text: 'Any', value: 'null' },
{ text: 'Oldsmobile', value: 'oldsmobile', markup: <span>Oldsmobile</span> },
{ text: 'Ford', value: 'ford', markup: <span>Ford</span> }
]}
prefix="Make:"
selectedValue="mazda"
onSubmit={() => { this.form.submit(); }}
onChange={reportChange}
caretIcon={<span>+</span>}
/>
</form>
);
A more detailed usage example can be found here: https://github.com/benbowes/react-responsive-select/blob/master/demo/src/index.js
The CSS in ./dist/ReactResponsiveSelect.css is plain css. Include it in your project via an import or copy paste it's contents into your stylesheet.
Customisations can be done via overriding the styles or rewriting the classes.
The class names themselves are not configurable.
To aid in styling the hover/selected states in the options list, I would suggest overriding the class that hides the options temporarily e.g.
.rrs__button + .rrs__options {
/* height: 0;
visibility: hidden; */
height: auto;
visibility: visible;
}
You can hook into the onChange function via the customLabelRenderer function prop. This allows you to render a custom label. See the API table for what the selectedOption object has in it.
<ReactResponsiveSelect
name="make2"
options={options}
onSubmit={() => { this.form.submit(); }}
// (Optional) format your own label text like this
customLabelRenderer={selectedOption => `Selected make is ${selectedOption.text} :)`}
/>
| prop | type | description |
| name (required) | String | The name to send with the selected option value(s) on form submit |
| options (required) | Array of objects |
Note: |
| onSubmit | Function | Some function that submits your form |
| onChange | Function | Listen for changes on selected option change returns Note: |
| caretIcon | JSX | Add a dropdown icon by using JSX markup |
| selectedValue | String | Pre-select an option with this value - should match an existing option.value, or if omitted the first item will be selected |
| prefix | String | Prefix for the select label |
| disabled | Boolean | Disables the select control |
| customLabelRenderer | Function | Allows you to format your own select label The customLabelRenderer function returns an option object e.g. To use this feature you need to return some JSX; using values from the above object to create your own custom label. See the example in the [singleselect demo](https://github.com/benbowes/react-responsive-select/blob/master/demo/src/index.js#L144). |
Same as Single Select API but with the following amendments
| multiselect | Boolean | Makes the select control handle multiple selections. Check the implementation example here: https://benbowes.github.io/react-responsive-select/demo/ |
| selectedValues | Array of String values | Pre-select several options with this value - should match against an existing option.value, or if omitted, the first item will be selected.
e.g. selectedValues={['mazda','ford']}
|
| customLabelRenderer | Function | Allows you to format your own select label The customLabelRenderer function returns an array option objects e.g. To use this feature you need to return some JSX; using values from the above object to create your own custom label. See the example in the [multiselect demo](https://github.com/benbowes/react-responsive-select/blob/master/demo/src/index.js#L589-L591). |
JS: https://unpkg.com/react-responsive-select@latest/dist/ReactResponsiveSelect.js
CSS: https://unpkg.com/react-responsive-select@latest/dist/ReactResponsiveSelect.css
The Codepen examples are consuming react-responsive-select via CDN if you'd like a guide.
{
"chrome": "62",
"android": "4.2",
"edge": "13",
"firefox": "56",
"ie": "11",
"ios": "10",
"safari": "10"
}
See: https://github.com/benbowes/react-responsive-select/releases/tag/3.0.0
Upgraded from React 15.x to React 16.x
For information about how this select control works on desktop and mobile see the Interaction tests readme README_INTERACTION_TESTS.md
FAQs
A customisable, touchable, React single-select / multi-select form control.
The npm package react-responsive-select receives a total of 856 weekly downloads. As such, react-responsive-select popularity was classified as not popular.
We found that react-responsive-select demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.