// the find
JedWatson/react-select
The Select Component for React.js
react-select is the de facto dropdown/combobox component for React apps that need more than a native <select> — multi-select, async loading, option groups, custom rendering. It's aimed at teams building forms with non-trivial selection UI who don't want to build accessibility and keyboard nav from scratch.
The Component Injection API is the real differentiator — you can swap out any internal piece (Option, Menu, Control, indicators) without forking the library, which is rare in component libraries this size. Accessibility is handled properly out of the box, with a dedicated LiveRegion and A11yText for screen reader announcements rather than bolted-on aria attributes. The v5 TypeScript rewrite gives real generic types tied to your option shape instead of the bolted-on @types package v4 relied on. Splitting Async/Creatable/Animated into separate entry points (async, creatable, animated packages) keeps the base bundle from paying for features you don't use.
Styling runs through emotion by default, so if your app uses a different CSS-in-JS solution or plain CSS modules, you're either pulling in a second styling runtime or fighting the style-object API to override things. There's no built-in list virtualization — render a couple thousand options and scroll performance degrades, so you end up wiring react-window yourself for large datasets. The props surface is huge (props.ts alone lists dozens), and getting non-trivial customization right usually means reading source, not just docs, since the interaction between controlled props and internal state manager isn't always obvious. It's a single-select-primitive library — no built-in support for hierarchical/tree data or virtualized async pagination, so more complex selection UIs still need a different tool.