react-select

The flexible, accessible Select control for React with multi-select, async, and creatable options.

Library
npm
v5.10.2
28,020 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
56 /100 Fair
Development Activity 16
Maintenance 32
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
80 /100 Excellent
Architecture 85
Code Quality 82
Innovation 84
Learning Curve 70

React-Select is the de facto Select control for React, providing a powerful dropdown/combobox component that works out of the box while remaining deeply customizable. It supports single and multi-value selection, searchable filtering, option grouping, async data loading, and user-creatable options.

Built with a modular architecture and an Emotion-powered styling API, react-select lets you override any inner component, control state through props, and tailor look and behavior to your design system. It ships full TypeScript types and accessibility support, making rich select experiences straightforward to build.

What You Get

  • A single, drop-in Select component with searchable, keyboard-navigable options
  • Multi-select, option grouping, and clearable/searchable behavior via simple boolean props
  • Async and creatable variants (AsyncSelect, CreatableSelect) for loading and adding options on the fly
  • A component-injection API to replace or wrap any inner element (Control, Menu, Option, etc.)
  • An Emotion-based styling API plus a themeable default design and full TypeScript types

Common Use Cases

  • Building searchable dropdowns and comboboxes in forms and dashboards
  • Multi-select tag/chip inputs for filtering and categorization
  • Async-loaded pickers that fetch options from an API as the user types
  • Creatable inputs that let users add new options inline (tags, labels, emails)

Under The Hood

Architecture

The library is a Yarn-workspaces monorepo whose published react-select package centers on a single large controlled component in src/Select.tsx (~2,250 lines) that owns focus, keyboard navigation, filtering, and menu state. src/index.ts re-exports a stateManager-wrapped default plus AsyncSelect, CreatableSelect, hooks (useStateManager, useAsync, useCreatable), and a rich set of prop/type exports; inner UI lives in src/components/* (Control, Menu, Option, MultiValue, indicators) with accessibility helpers in src/internal and src/accessibility. Higher-level behaviors (async loading, creatable) are layered as composable wrappers over the base component rather than baked into it.

Tech Stack

Written in TypeScript and built with Preconstruct, react-select declares React/React-DOM 16.8–19 as peer dependencies and pulls in Emotion (@emotion/react, @emotion/cache) for styling, @floating-ui/dom for menu positioning, react-transition-group for animation, memoize-one for memoized computation, and use-isomorphic-layout-effect for SSR-safe effects. Tooling includes Babel, ESLint, Prettier, Jest, and Cypress, with Storybook and a docs site in the workspace.

Code Quality

The codebase is strongly typed with extensive generics (Option, IsMulti, Group extends GroupBase) threaded through the public API for precise inference. It carries a real test suite — Jest unit/snapshot tests under packages/react-select/src/__tests__ (Select, Async, AsyncCreatable, Creatable, StateManaged) plus Cypress end-to-end coverage — and separates concerns cleanly across small component and internal helper modules. The main Select.tsx is large, which concentrates complexity, but naming and module boundaries are consistent.

API Design The developer experience is a key strength: a single import Select from 'react-select' yields a working searchable dropdown, and common behaviors are toggled with intuitive boolean props (isMulti, isSearchable, isClearable). Power users get a component-injection API to override any inner element and a structured Emotion styles API for theming, so the library scales from trivial usage to deep customization. Comprehensive docs at react-select.com and full TypeScript types keep boilerplate minimal.

Used by 42 apps in this directory

TypeScript
77%
Other

Joplin

Note Taking

56,853

The privacy-first, open-source note-taking app with end-to-end encrypted sync, AI assistance, and a powerful plugin ecosystem across every platform.

View details
93
Repo Health
87
Technical
60
Dependency
Built with
TypeScript 77%
JavaScript 14%
Updated 6 days ago
TypeScript
98%
AGPL 3.0

Karakeep

Bookmarks Archiving

29,926

Self-hosted bookmark manager that captures links, notes, images, and PDFs with AI tagging, full-text search, and automatic archiving.

View details
88
Repo Health
76
Technical
66
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
Python
64%
Other

Keep

Automation · Devops · Monitoring

12,433

The open-source AIOps and alert management platform that unifies 130+ monitoring tools into a single pane of glass with AI-powered correlation, deduplication, and workflow automation.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
Python 64%
TypeScript 36%
Updated 1 weeks ago
JavaScript
42%
Other

LimeSurvey

Forms Surveys

3,778

The world's most flexible open-source survey platform with 900+ templates, conditional logic, 80+ languages, and full GDPR compliance for any scale.

View details
86
Repo Health
62
Technical
62
Dependency
Built with
JavaScript 42%
PHP 36%
CSS 12%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

20,195

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
90
Repo Health
72
Technical
66
Dependency
Built with
TypeScript 93%
Updated 5 days ago
Ruby
59%
AGPL 3.0

Mastodon

Social Media

50,441

Run your own federated social network on the open ActivityPub standard with no ads, no algorithms, and no corporate control over your community.

View details
95
Repo Health
81
Technical
70
Dependency
Built with
Ruby 59%
TypeScript 24%
Updated 5 days ago
TypeScript
51%
Other

Mattermost

Collaboration · Devops · Team Chat

39,418

Open core, self-hosted team collaboration with chat, AI agents, voice calling, and deep DevOps integrations — all under your control.

View details
96
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 51%
Go 40%
Updated 5 days ago
TypeScript
49%
MIT

Nginx Proxy Manager

Developer Tools · Networking · Security

34,517

Manage Nginx reverse proxies and free Let's Encrypt SSL through a beautiful web interface — no Nginx expertise required.

View details
92
Repo Health
77
Technical
72
Dependency
Built with
TypeScript 49%
JavaScript 47%
Updated 1 weeks ago
TypeScript
96%
Apache 2.0

OneUptime

Monitoring

7,751

The complete open-source observability platform that replaces PagerDuty, Datadog, Sentry, and StatusPage with a single self-hostable system.

View details
91
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 96%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers