JedWatson / JedWatson/react-select

Better styling control for native <input> in Creatable + Multi mode

Open
#6,048 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

issue/bug-unconfirmed
Dominant language
TypeScript
Stars
28k
Forks
4.1k
PR merge metrics
No merged PRs in 30d

Description

We've been using react-select@5 with Creatable and isMulti, and are trying to style the native <input> used for entering new tags.


Problem

The native <input> element:

<input class="select__input" ... />

is styled via inline styles and cannot be fully targeted or overridden using:

  • classNames.input (applies to a parent div)
  • components.Input (wraps the input, doesn’t pass props to it)
  • styles.input

This limits full integration into modern utility-based styling systems like Tailwind.


✅ What we tried
  • opacity-0
  • full styles.input override
  • classNames.input and components.Input — do not reach native input

Suggestion

Could we expose a way to:

  • Pass a className or ref directly to the native <input>
  • OR provide a getInputProps() helper like downshift that lets us spread custom props on it

This would let developers:

  • Apply custom focus styles using ring-* classes
  • Control caret/text/placeholder rendering
  • Integrate seamlessly with CSS frameworks

Thanks again for this powerful and flexible component! Happy to recreate the issue in an isolated code sandbox if needed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how the native input is exposed through classNames.input, components.Input, and styles.input in a minimal Creatable + isMulti reproduction. Compare the proposed className/ref or getInputProps approaches and define which native props must be supported. Done means consumers can directly customize the native input without breaking tag creation or multi-value entry.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.