@commercetools-uikit/async-select-input vs downshift vs react-autosuggest vs react-select vs react-select-search
Building Select and Autocomplete Components in React
@commercetools-uikit/async-select-inputdownshiftreact-autosuggestreact-selectreact-select-searchSimilar Packages:

Building Select and Autocomplete Components in React

These five packages help developers build select dropdowns, autocomplete inputs, and searchable comboboxes in React applications. react-select is the most feature-complete solution with built-in styling and async support. downshift provides low-level primitives for building custom accessible components from scratch. react-autosuggest focuses specifically on suggestion boxes with flexible rendering. react-select-search offers a lightweight alternative to react-select with simpler customization. @commercetools-uikit/async-select-input is a specialized component from the Commercetools UI kit designed for their design system with async loading built in.

Npm Package Weekly Downloads Trend

3 Years

Github Stars Ranking

Stat Detail

Package
Downloads
Stars
Size
Issues
Publish
License
@commercetools-uikit/async-select-input015388.9 kB4521 days agoMIT
downshift012,2993.01 MB622 months agoMIT
react-autosuggest05,946-2605 years agoMIT
react-select028,044726 kB4869 months agoMIT
react-select-search0693260 kB646 months agoMIT

Building Select and Autocomplete Components in React: A Technical Deep-Dive

Select dropdowns and autocomplete inputs are everywhere in modern web applications. But building them well is harder than it looks โ€” you need to handle keyboard navigation, accessibility, async data loading, and custom styling. The five packages we're comparing (@commercetools-uikit/async-select-input, downshift, react-autosuggest, react-select, react-select-search) each take different approaches to solving these problems. Let's break down how they work and when to use each one.

๐ŸŽฏ Core Philosophy: Building Blocks vs Ready-Made Components

The biggest difference between these packages is how much they give you out of the box.

react-select is a complete, styled component. You import it and get a working select with minimal code.

import Select from 'react-select';

function MyComponent() {
  const options = [
    { value: 'chocolate', label: 'Chocolate' },
    { value: 'strawberry', label: 'Strawberry' }
  ];

  return <Select options={options} />;
}

downshift gives you hooks and utilities to build your own component. You control every part of the UI.

import { useSelect } from 'downshift';

function MySelect({ items }) {
  const {
    isOpen,
    getToggleButtonProps,
    getMenuProps,
    getItemProps,
    selectedItem
  } = useSelect({ items });

  return (
    <div>
      <button {...getToggleButtonProps()}>
        {selectedItem?.label || 'Select an item'}
      </button>
      <ul {...getMenuProps()}>
        {isOpen && items.map((item, index) => (
          <li key={item.id} {...getItemProps({ item, index })}>
            {item.label}
          </li>
        ))}
      </ul>
    </div>
  );
}

react-autosuggest focuses on suggestion boxes where users type to get recommendations.

import Autosuggest from 'react-autosuggest';

function MyAutosuggest({ suggestions }) {
  const [value, setValue] = useState('');
  const [suggestionsState, setSuggestions] = useState([]);

  const onSuggestionsFetchRequested = ({ value }) => {
    setSuggestions(getSuggestions(value));
  };

  return (
    <Autosuggest
      suggestions={suggestionsState}
      onSuggestionsFetchRequested={onSuggestionsFetchRequested}
      getSuggestionValue={suggestion => suggestion.name}
      renderSuggestion={suggestion => <div>{suggestion.name}</div>}
      inputProps={{ value, onChange: (e, { newValue }) => setValue(newValue) }}
    />
  );
}

react-select-search sits between react-select and downshift โ€” pre-built but simpler.

import { ReactSelectSearch } from 'react-select-search';

function MyComponent() {
  const options = [
    { name: 'Chocolate', value: 'chocolate' },
    { name: 'Strawberry', value: 'strawberry' }
  ];

  return <ReactSelectSearch options={options} />;
}

@commercetools-uikit/async-select-input is designed for the Commercetools design system with async loading built in.

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

function MyComponent() {
  const loadOptions = async (inputValue) => {
    const response = await fetch(`/api/options?q=${inputValue}`);
    return response.json();
  };

  return <AsyncSelectInput loadOptions={loadOptions} />;
}

๐Ÿ” Async Data Loading: Built-In vs Manual

Loading options from an API is a common requirement. Here's how each package handles it.

react-select has built-in async support with AsyncSelect component.

import AsyncSelect from 'react-select/async';

const loadOptions = async (inputValue) => {
  const response = await fetch(`/api/options?q=${inputValue}`);
  const data = await response.json();
  return data.options;
};

function MyComponent() {
  return <AsyncSelect loadOptions={loadOptions} />;
}

downshift requires you to manage async state yourself.

import { useCombobox } from 'downshift';

function AsyncCombobox() {
  const [items, setItems] = useState([]);
  const [isLoading, setIsLoading] = useState(false);

  const handleInputChange = async (inputValue) => {
    setIsLoading(true);
    const response = await fetch(`/api/options?q=${inputValue}`);
    const data = await response.json();
    setItems(data.options);
    setIsLoading(false);
  };

  const { getInputProps, getMenuProps, getItemProps } = useCombobox({
    items,
    onInputValueChange: ({ inputValue }) => handleInputChange(inputValue)
  });

  return (
    <div>
      <input {...getInputProps()} />
      <ul {...getMenuProps()}>
        {items.map((item, index) => (
          <li key={item.id} {...getItemProps({ item, index })}>
            {item.label}
          </li>
        ))}
      </ul>
    </div>
  );
}

react-autosuggest uses callback-based fetching.

import Autosuggest from 'react-autosuggest';

const onSuggestionsFetchRequested = async ({ value }) => {
  const response = await fetch(`/api/options?q=${value}`);
  const data = await response.json();
  setSuggestions(data.options);
};

function MyComponent() {
  return (
    <Autosuggest
      suggestions={suggestions}
      onSuggestionsFetchRequested={onSuggestionsFetchRequested}
      getSuggestionValue={suggestion => suggestion.label}
      renderSuggestion={suggestion => <div>{suggestion.label}</div>}
      inputProps={{ value, onChange }}
    />
  );
}

react-select-search supports async through custom props.

import { ReactSelectSearch } from 'react-select-search';

function MyComponent() {
  const [options, setOptions] = useState([]);

  const handleSearch = async (searchTerm) => {
    const response = await fetch(`/api/options?q=${searchTerm}`);
    const data = await response.json();
    setOptions(data.options);
  };

  return <ReactSelectSearch options={options} onSearch={handleSearch} />;
}

@commercetools-uikit/async-select-input has async loading as its primary feature.

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

function MyComponent() {
  const loadOptions = async (inputValue) => {
    const response = await fetch(`/api/options?q=${inputValue}`);
    return response.json();
  };

  return (
    <AsyncSelectInput
      loadOptions={loadOptions}
      loadingPlaceholder="Loading..."
    />
  );
}

โ™ฟ Accessibility: Handled for You vs Build It Yourself

Accessibility is critical for select components. Keyboard navigation, ARIA attributes, and screen reader support all matter.

react-select handles accessibility out of the box with proper ARIA labels and keyboard support.

import Select from 'react-select';

// Built-in accessibility - no extra code needed
<Select
  options={options}
  aria-label="Choose a flavor"
  inputId="flavor-select"
/>

downshift provides the tools but you must apply them correctly.

import { useSelect } from 'downshift';

function AccessibleSelect({ items, label }) {
  const {
    isOpen,
    getToggleButtonProps,
    getMenuProps,
    getItemProps,
    selectedItem,
    highlightedIndex
  } = useSelect({ items });

  return (
    <div>
      <label id="select-label">{label}</label>
      <button
        {...getToggleButtonProps({
          'aria-labelledby': 'select-label',
          'aria-haspopup': 'listbox'
        })}
      >
        {selectedItem?.label || 'Select'}
      </button>
      <ul {...getMenuProps({ 'aria-labelledby': 'select-label' })}>
        {isOpen && items.map((item, index) => (
          <li
            key={item.id}
            {...getItemProps({
              item,
              index,
              role: 'option',
              'aria-selected': highlightedIndex === index
            })}
          >
            {item.label}
          </li>
        ))}
      </ul>
    </div>
  );
}

react-autosuggest includes accessibility features but requires proper configuration.

import Autosuggest from 'react-autosuggest';

<Autosuggest
  suggestions={suggestions}
  onSuggestionsFetchRequested={onSuggestionsFetchRequested}
  getSuggestionValue={suggestion => suggestion.name}
  renderSuggestion={suggestion => <div>{suggestion.name}</div>}
  inputProps={{
    value,
    onChange,
    'aria-label': 'Search for options',
    id: 'autosuggest-input',
    role: 'combobox',
    'aria-autocomplete': 'list',
    'aria-controls': 'suggestions-list',
    'aria-expanded': suggestions.length > 0
  }}
  theme={{
    suggestionsContainerOpen: 'suggestions-container-open',
    suggestion: 'suggestion',
    suggestionHighlighted: 'suggestion-highlighted'
  }}
/>

react-select-search provides basic accessibility with proper ARIA attributes.

import { ReactSelectSearch } from 'react-select-search';

<ReactSelectSearch
  options={options}
  ariaLabel="Select an option"
  inputId="select-search-input"
  className="custom-select-search"
/>

@commercetools-uikit/async-select-input follows Commercetools accessibility standards.

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

<AsyncSelectInput
  loadOptions={loadOptions}
  label="Select option"
  name="option-select"
  aria-label="Choose an option from the list"
/>

๐ŸŽจ Styling and Customization: CSS-in-JS vs Class Names vs Headless

How you customize the look varies significantly between packages.

react-select uses CSS-in-JS with a styles prop for deep customization.

import Select from 'react-select';

const customStyles = {
  control: (base, state) => ({
    ...base,
    borderColor: state.isFocused ? '#0066cc' : base.borderColor,
    boxShadow: state.isFocused ? '0 0 0 1px #0066cc' : base.boxShadow
  }),
  option: (base, state) => ({
    ...base,
    backgroundColor: state.isSelected ? '#0066cc' : base.backgroundColor,
    color: state.isSelected ? 'white' : base.color
  })
};

<Select options={options} styles={customStyles} />;

downshift gives you plain HTML elements โ€” style them however you want.

import { useSelect } from 'downshift';

function StyledSelect({ items }) {
  const { isOpen, getToggleButtonProps, getMenuProps, getItemProps, selectedItem } = useSelect({ items });

  return (
    <div className="select-container">
      <button {...getToggleButtonProps()} className="select-button">
        {selectedItem?.label || 'Select'}
      </button>
      {isOpen && (
        <ul {...getMenuProps()} className="select-menu">
          {items.map((item, index) => (
            <li key={item.id} {...getItemProps({ item, index })} className="select-option">
              {item.label}
            </li>
          ))}
        </ul>
      )}
    </div>
  );
}

react-autosuggest uses a theme prop with class names.

import Autosuggest from 'react-autosuggest';

const theme = {
  container: 'autosuggest-container',
  input: 'autosuggest-input',
  suggestionsContainer: 'autosuggest-suggestions-container',
  suggestionsContainerOpen: 'autosuggest-suggestions-container-open',
  suggestion: 'autosuggest-suggestion',
  suggestionHighlighted: 'autosuggest-suggestion-highlighted'
};

<Autosuggest suggestions={suggestions} theme={theme} {...otherProps} />;

react-select-search uses className props for customization.

import { ReactSelectSearch } from 'react-select-search';

<ReactSelectSearch
  options={options}
  className="custom-select-search"
  optionClassName="custom-option"
  valueClassName="custom-value"
/>

@commercetools-uikit/async-select-input uses Commercetools design tokens.

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

<AsyncSelectInput
  loadOptions={loadOptions}
  className="custom-async-select"
  horizontalConstraint="scale"
/>

๐Ÿ“ฆ Multi-Select Support: Native vs Add-On

Some use cases require selecting multiple values. Here's how each package handles it.

react-select has built-in multi-select with the isMulti prop.

import Select from 'react-select';

<Select
  options={options}
  isMulti={true}
  placeholder="Select multiple flavors"
  onChange={(selected) => console.log(selected)}
/>

downshift requires manual implementation for multi-select.

import { useMultipleSelection } from 'downshift';

function MultiSelect({ items }) {
  const {
    selectedItems,
    addSelectedItem,
    removeSelectedItem,
    getDropdownProps
  } = useMultipleSelection();

  const {
    isOpen,
    getToggleButtonProps,
    getMenuProps,
    getItemProps
  } = useSelect({
    items,
    ...getDropdownProps()
  });

  return (
    <div>
      {selectedItems.map(item => (
        <span key={item.id}>
          {item.label}
          <button onClick={() => removeSelectedItem(item)}>ร—</button>
        </span>
      ))}
      <button {...getToggleButtonProps()}>Select</button>
      <ul {...getMenuProps()}>
        {isOpen && items.map((item, index) => (
          <li
            key={item.id}
            {...getItemProps({
              item,
              index,
              onClick: () => addSelectedItem(item)
            })}
          >
            {item.label}
          </li>
        ))}
      </ul>
    </div>
  );
}

react-autosuggest doesn't have built-in multi-select โ€” you manage selected values yourself.

import Autosuggest from 'react-autosuggest';

function MultiAutosuggest({ suggestions }) {
  const [selected, setSelected] = useState([]);
  const [value, setValue] = useState('');

  const onSuggestionSelected = (event, { suggestion }) => {
    setSelected([...selected, suggestion]);
    setValue('');
  };

  return (
    <div>
      {selected.map(item => <span key={item.id}>{item.name}</span>)}
      <Autosuggest
        suggestions={suggestions}
        onSuggestionSelected={onSuggestionSelected}
        inputProps={{ value, onChange }}
      />
    </div>
  );
}

react-select-search supports multi-select through configuration.

import { ReactSelectSearch } from 'react-select-search';

<ReactSelectSearch
  options={options}
  multi={true}
  onChange={(selected) => console.log(selected)}
/>

@commercetools-uikit/async-select-input focuses on single-select async scenarios.

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

// Single select only - multi-select requires different component
<AsyncSelectInput
  loadOptions={loadOptions}
  value={selectedValue}
  onChange={setSelectedValue}
/>

๐Ÿšจ Maintenance Status and Long-Term Viability

Before choosing any package, check its current maintenance status.

react-select is actively maintained with regular releases. It's the most popular choice for production select components and has strong community support.

downshift is actively maintained by the Kent C. Dodds team and widely used in design systems. It's stable and follows accessibility best practices.

react-autosuggest is mature and stable but receives fewer updates. It's well-suited for projects that need a reliable autocomplete without frequent changes.

react-select-search has slower release cycles but remains functional. Check the repository for recent activity before committing to it for large projects.

@commercetools-uikit/async-select-input is maintained as part of the Commercetools UI Kit. It's best suited for projects already using Commercetools products โ€” using it standalone may create dependency issues long-term.

๐Ÿ“Š Quick Comparison Table

Featurereact-selectdownshiftreact-autosuggestreact-select-search@commercetools-uikit
Ready-Made UIโœ… FullโŒ Headlessโœ… Focusedโœ… Simpleโœ… Design System
Async Loadingโœ… Built-inโš ๏ธ Manualโœ… Callbackโœ… Customโœ… Built-in
Multi-Selectโœ… Built-inโš ๏ธ Manualโš ๏ธ Manualโœ… ConfigโŒ Single Only
Accessibilityโœ… Automaticโš ๏ธ Your Responsibilityโœ… Configuredโœ… Basicโœ… Standards
StylingCSS-in-JSAny CSSClass NamesClass NamesDesign Tokens
Bundle SizeLargerSmallerMediumSmallerMedium
Learning CurveLowHighMediumLowLow (if using UI Kit)

๐Ÿ’ก Final Recommendations

Pick react-select when you need a production-ready component fast and don't mind the bundle size. It's the safest choice for most admin panels and dashboards.

Pick downshift when you're building a design system or need complete control over the UI. The extra code is worth it for custom designs.

Pick react-autosuggest when you specifically need a search-as-you-type suggestion box rather than a full select dropdown.

Pick react-select-search when react-select feels too heavy but you still need search functionality in a select.

Pick @commercetools-uikit/async-select-input only if you're already using the Commercetools UI Kit โ€” otherwise, the tight coupling to their design system creates unnecessary constraints.

๐ŸŽฏ The Bottom Line

All five packages solve the same core problem but with different trade-offs. react-select and react-select-search give you working components quickly. downshift gives you building blocks for custom solutions. react-autosuggest specializes in suggestion boxes. @commercetools-uikit/async-select-input fits into a specific ecosystem.

The right choice depends on your project's needs: speed to market, design flexibility, bundle size constraints, and existing technology stack. There's no single winner โ€” only the best fit for your specific situation.

How to Choose: @commercetools-uikit/async-select-input vs downshift vs react-autosuggest vs react-select vs react-select-search

  • @commercetools-uikit/async-select-input:

    Choose this package if you're already using the Commercetools UI Kit and need a select component that matches their design system. It's purpose-built for async loading scenarios and integrates seamlessly with other Commercetools components. However, it's tightly coupled to their design tokens and may require significant customization if used outside their ecosystem. Best for projects already committed to the Commercetools platform.

  • downshift:

    Choose downshift if you need full control over the UI and want to build a custom select or autocomplete from scratch. It handles accessibility, keyboard navigation, and state management while leaving styling completely up to you. Ideal for design systems or when existing libraries don't match your visual requirements. Expect to write more code but gain maximum flexibility.

  • react-autosuggest:

    Choose react-autosuggest if you need a focused suggestion box component with flexible rendering and theming. It's well-suited for search inputs where users type to get recommendations. The library is mature and stable but less feature-rich than react-select for complex select scenarios. Best for autocomplete-specific use cases rather than full select dropdowns.

  • react-select:

    Choose react-select if you need a production-ready, feature-complete select component with minimal setup. It includes async loading, multi-select, grouping, and extensive customization options out of the box. The trade-off is larger bundle size and more complex styling overrides. Ideal for admin panels, dashboards, and applications where development speed matters more than bundle size.

  • react-select-search:

    Choose react-select-search if you want something lighter than react-select but still need search functionality within a select dropdown. It offers simpler customization and a smaller footprint while maintaining core select features. Good for projects that find react-select too heavy but need more than a basic native select element.

README for @commercetools-uikit/async-select-input

AsyncSelectInput

Description

An input component getting a selection from an asynchronously loaded list from the user.

Installation

yarn add @commercetools-uikit/async-select-input
npm --save install @commercetools-uikit/async-select-input

Additionally install the peer dependencies (if not present)

yarn add react react-dom react-intl
npm --save install react react-dom react-intl

Usage

import AsyncSelectInput from '@commercetools-uikit/async-select-input';

const Example = (props) => (
  <AsyncSelectInput
    value={{ value: 'ready', label: 'Ready' }}
    loadOptions={
      (/* inputValue */) => {
        // async fetch logic
      }
    }
    onChange={(event) => alert(event.target.value)}
  />
);

export default Example;

Properties

PropsTypeRequiredDefaultDescription
horizontalConstraintunion
Possible values:
, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto'
Horizontal size limit of the input fields.
hasErrorbooleanIndicates the input field has an error
hasWarningbooleanIndicates the input field has a warning
isReadOnlybooleanIndicates that the field is displaying read-only content
aria-labelAsyncProps['aria-label']Aria label (for assistive tech)
Props from React select was used
aria-labelledbyAsyncProps['aria-labelledby']HTML ID of an element that should be used as the label (for assistive tech)
Props from React select was used
aria-invalidAsyncProps['aria-invalid']Indicate if the value entered in the input is invalid.
Props from React select was used
aria-errormessageAsyncProps['aria-errormessage']HTML ID of an element containing an error message related to the input.
Props from React select was used
isAutofocussedbooleanFocus the control when it is mounted
backspaceRemovesValueAsyncProps['backspaceRemovesValue']Remove the currently focused option when the user presses backspace
Props from React select was used
componentsAsyncProps['components']Map of components to overwrite the default ones, see what components you can override
Props from React select was used
controlShouldRenderValueAsyncProps['controlShouldRenderValue']trueControl whether the selected values should be rendered in the control
Props from React select was used
filterOptionAsyncProps['filterOption']Custom method to filter whether an option should be displayed in the menu
Props from React select was used
hideSelectedOptionsAsyncProps['hideSelectedOptions']Custom method to determine whether selected options should be displayed in the menu
Props from React select was used
idAsyncProps['inputId']The id of the search input
Props from React select was used
inputValueAsyncProps['inputValue']The value of the search input
Props from React select was used
containerIdAsyncProps['id']The id to set on the SelectContainer component
Props from React select was used
isClearableAsyncProps['isClearable']Is the select value clearable
Props from React select was used
isCondensedbooleanUse this property to reduce the paddings of the component for a ui compact variant
isDisabledAsyncProps['isDisabled']Is the select disabled
Props from React select was used
isOptionDisabledAsyncProps['isOptionDisabled']Override the built-in logic to detect whether an option is disabled
Props from React select was used
isMultiAsyncProps['isMulti']Support multiple selected options
Props from React select was used
isSearchableAsyncProps['isSearchable']trueWhether to enable search functionality
Props from React select was used
menuIsOpenAsyncProps['menuIsOpen']Can be used to enforce the select input to be opened
Props from React select was used
maxMenuHeightAsyncProps['maxMenuHeight']Maximum height of the menu before scrolling
Props from React select was used
menuPortalTargetAsyncProps['menuPortalTarget']Dom element to portal the select menu to
Props from React select was used
menuPortalZIndexnumber1z-index value for the menu portal
Use in conjunction with menuPortalTarget
menuShouldBlockScrollAsyncProps['menuShouldBlockScroll']whether the menu should block scroll while open
Props from React select was used
closeMenuOnSelectAsyncProps['closeMenuOnSelect']Whether the menu should close after a value is selected. Defaults to true.
Props from React select was used
nameAsyncProps['name']Name of the HTML Input (optional - without this, no input will be rendered)
Props from React select was used
noOptionsMessageAsyncProps['noOptionsMessage']Can be used to render a custom value when there are no options (either because of no search results, or all options have been used, or there were none in the first place). Gets called with { inputValue: String }. inputValue will be an empty string when no search text is present.
Props from React select was used
onBlurFunction
See signature.
Handle blur events on the control
onChangeFunction
See signature.
Called with a fake event when value changes. The event's target.name will be the name supplied in props. The event's target.value will hold the value. The value will be the selected option, or an array of options in case isMulti is true.
onFocusAsyncProps['onFocus']Handle focus events on the control
Props from React select was used
onInputChangeAsyncProps['onInputChange']Handle change events on the input
Props from React select was used
placeholderAsyncProps['placeholder']Placeholder text for the select value
Props from React select was used
loadingMessageunion
Possible values:
string , (() => string)
loading message shown while the options are being loaded
tabIndexAsyncProps['tabIndex']Sets the tabIndex attribute on the input
Props from React select was used
tabSelectsValueAsyncProps['tabSelectsValue']Select the currently focused option when the user presses tab
Props from React select was used
valueAsyncProps['value']nullThe value of the select; reflected by the selected option
Props from React select was used
defaultOptionsunion
Possible values:
OptionsOrGroups<unknown, GroupBase<unknown>> , boolean
The default set of options to show before the user starts searching. When set to true, the results for loadOptions('') will be autoloaded.
Props from React select was used
loadOptionsAsyncProps['loadOptions']โœ…Function that returns a promise, which is the set of options to be used once the promise resolves.
cacheOptionsAsyncProps['cacheOptions']If cacheOptions is truthy, then the loaded data will be cached. The cache will remain until cacheOptions changes value.
showOptionGroupDividerbooleanDetermines if option groups will be separated by a divider
iconLeftReactNodeIcon to display on the left of the placeholder text and selected value. Has no effect when isMulti is enabled.
optionStyleunion
Possible values:
'list' , 'checkbox'
'list'defines how options are rendered
appearanceunion
Possible values:
'default' , 'filter'
'default'Indicates the appearance of the input. Filter appearance is meant to be used when the async-select is used as a filter.
countnumberAn additional value displayed on the select options menu. This value is only available in the checkbox option style when appearance is set to filter.

Signatures

Signature onBlur

(event: TCustomEvent) => void

Signature onChange

(event: TCustomEvent, info: ActionMeta<unknown>) => void

This input is built on top of react-select v2. It supports mostly same properties as react-select. Behavior for some props was changed, and support for others was dropped.

In case you need one of the currently excluded props, feel free to open a PR adding them.

Static Properties

isTouched(touched)

Returns truthy value for the Formik touched value of this input field.

Components

It is possible to customize AsyncSelectInput by passing the components property. AsyncSelectInput exports the default underlying components as static exports.

Components available as static exports are:

  • ClearIndicator
  • Control
  • CrossIcon
  • DownChevron
  • DropdownIndicator
  • Group
  • GroupHeading
  • IndicatorsContainer
  • IndicatorSeparator
  • Input
  • LoadingIndicator
  • LoadingMessage
  • Menu
  • MenuList
  • MenuPortal
  • MultiValue
  • MultiValueContainer
  • MultiValueLabel
  • MultiValueRemove
  • NoOptionsMessage
  • Option
  • Placeholder
  • SelectContainer
  • SingleValue
  • ValueContainer

See the official documentation for more information about the props they receive.