NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4804 most downloaded on npm
🏎 A set of primitives to build simple, flexible, WAI-ARIA compliant React autocomplete, combobox or select dropdown components.
Last release 2 months ago
30 Jun 2026
Release timing varies
gaps range from 9 days to 7 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
26 versions withdrawn
withdrawn after publishing
9 years old
380 releases · first in 2017
Call super with only props instead of ...args
dont make unnecessary calls to updateStatus in RN
One column per quarter.
TS: add touchStart to stateChangeTypes
release: manually release a patch version (a96168d), closes #505
Replace autoComplete=off wth autoComplete=nope
types: Restored resetIdCounter TS type
portal: Prevent reset on touch inside portal
handle toggle button keyboard events properly
allow custom toString methods on objects
## 2.0.7 (2018-06-21) ### Bug Fixes * memory leak warning
TS: add stateAndHelpers as input type to onOuterClick
TS: [index.d.ts] allow passing null to control props
peerDependencies: to be compatible with 'prop-types' package
deps: use prop-types as a dependency
TS: remove ignored 'render' prop from TS API
Improved TypeScript Definitions
getMenuProps is recommended for accessibility purposes.labelId, inputId, menuId, and getItemId which simplifies the internal implementation as well as resolving confusing accessibility issues. (These props are not required).getButtonProps was renamed to getToggleButtonPropsgetMenuProps()).render (<Downshift render={() => {}} />) and children (<Downshift>={() => {}}</Downshift>). Now we only support the children prop.-<Downshift render={yourRenderFn} />
+<Downshift>{yourRenderFn}</Downshift>
breakingChanges prop has been removed and the resetInputOnSelection option is now the default behavior. It only applies for use cases where the selectedItem is controlled. Learn more about this in #243.-const Downshift = require('downshift')
+const Downshift = require('downshift').default
resetIdCounter, that's now exported separate from Downshift:-import Downshift from 'downshift'
-Downshift.resetIdCounter()
+import Downshift, {resetIdCounter} from 'downshift'
+resetIdCounter()
All of the project contributors have been awesome. Thank you all. Here are a few specific people who helped in this release:
@kentcdodds, @stereobooster, @franklixuefei, @dovidweisz, @Antontelesh, @tansongyang, @Andarist, @cycomachead, @mperrotti, @SiTaggart, and @1Copenut
Nothing published for this version
Nothing published for this version
blur event wrongfully triggered in Safari on iOS when pressing the toggle button and it's already focused
TS: add breakingChanges prop to prop interface
disabled items should not be selectable
don't fun button_handleClick in a setTimeout for testing (#439) (bdfe5e0), closes #437
inputValue: initialize inputValue correctly when falsy
## 1.31.11 (2018-04-21) ### Bug Fixes * resolve iOS touch blur issue
TS: add typings for onOuterClick
## 1.31.9 (2018-04-19) ### Bug Fixes * resolve ios focus/blur issue
internalSetState: dont change references inside setState updater
add null check for activeElement
replace String method not supported in IE11
add IE & Edge preact keydown fix to button handler
keyboard events for IE and Edge in preact
TypeScript: add resetIdCounter to typings
correctly returns getButtonProps in getStateAndHelpers
getToggleButtonProps: rename (and alias) getButtonProps to getToggleButtonProps (62d3c6d), closes #386
mouseup: do not reset when active element is in downshift (#383) (8559b79), closes #356
add null-check for this._rootNode (#382) (809303a), closes #366
expand react peer dependency range to include 0.14.
blur: don't reset when tabbing between the input and button
getItemProps: add optional disabled prop (#362) (68499b4), closes #357
TypeScript: return type for itemToString under Actions interface
handlers: prevent default behavior with preventDownshiftDefault (07b0d95), closes #330 #353
typings: added typings for stateReducer and Downshift.stateChangeTypes properties
set type Downshift.stateChangeTypes.clickItem on item click
input: incorrect input reset on mouseup when input is focused (#354) (7ba6870), closes #350
generateId: fix initial idCounter and use single unique id for a Downshift instance
itemToString: warning at the wrong time
experimental: add *experimental* support for React Native as a target (#265) (6f9a306), closes /github.com/facebook/react-native/blob/70c359000a2df091
<a name="1.28.0"></a>
cleanup: removed some leftover unused internal method
focus now never leaves on item mousedown (#323) (118a872), closes #2
This is a really handy new feature! I definitely recommend checking out the docs for stateReducer and seeing if you can use that rather than control p
<a name="1.27.0"></a>
This is a really handy new feature! I definitely recommend checking out the docs for stateReducer and seeing if you can use that rather than control props + onStateChange. If you're not using control props and onStateChange, then don't bother. That said, this is a great new API to reach for if downshift is not behaving the way you want it to.
getButtonProps: add button type (#316) (1334fda), closes #315
add onBlur event handler to ButtonProps
add resetIdCounter for SSR support
change the query selector for getting the input by its ID
focus: add focus back to input after mouse click
refkey check on react development version
mouse was interrupting keyboard navigation #240
TypeScript: add StateChangeOptions.type
Your coding agent can read these notes before it upgrades. Set up the MCP server →