HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
downshift-js
downshift
JavaScript2017–2021
downshift-js / downshift

downshift

🏎 A set of primitives to build simple, flexible, WAI-ARIA compliant React autocomplete, combobox or select dropdown components.

7Distinct people
7Mentions
0Explicit recommenders
12.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

🏎 A set of primitives to build simple, flexible, WAI-ARIA compliant React autocomplete, combobox or select dropdown components.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year7 dated mentions

Observed mentions: 2017-09-05 23:28:35 UTC to 2021-02-05 19:25:33 UTC.

0122017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

What Hacker News says

7 sources
This is really good feedback. 1. We are going to remove Mobx. It will also reduce the learning curve for our customers. This change won't affect our API and will be fully backward compatible. We are considering Valtio as an alternative [0]. 2. As much as we can help it, we are not going to embed iframes. We'd love to deliver a native, and lean experience. 3. We already provide a network layer library [1] and want to offer more headless components. Can you give us some feedback on what you'd like to see? We are very inspired by Downshift's approach [2]. [0] https://github.com/pmndrs/valtio [1] https://www.npmjs.com/package/@magicbell/core [2] https://github.com/downshift-js/downshift
In Launch HN: MagicBell (YC W21) – embedded notification system for your product
I'm a fan. It's so refreshing to have all the HTML and CSS in your own codebase, under your control, instead of reading through a list of 50 sparsely-documented props only to realize that none of them quite do what you need. Another example of this pattern is `downshift`, which is a headless autocomplete library: https://github.com/downshift-js/downshift I would love to see a datepicker component that used this design. I have some choice words for the various datepicker libs I've used over my career and none of them are friendly.
In React Table is a “headless” UI library
Note that the above mostly applies to company/product specific component libraries where maintaining design/brand consistency is of great importance. For components meant for public consumption, I personally would only use libraries that yield _all_ rendering decisions to the user: not just styling, but the components being rendered as well as the way in which those components are composed. Usually that means providing state & handlers through a render prop API, so users can compose their own styled components in arbitrary arrangements that wouldn't be possible with an interface that only exposes specific component overrides inside of a rigid structure. See downshift as an example of a library that does this really well (https://github.com/downshift-js/downshift), and contrast that to something like react-select that only offers the abili
Read the rest
ty to provide overrides for specific components in its own predefined render tree (https://github.com/JedWatson/react-select). Perhaps on top of that you can also provide a reasonable styled default, but not offering low level control of rendering is usually a deal breaker in my book when picking third party components to work with.
In Base Web, Uber’s New Design System for Building Websites in React
When I saw this the other day, one of the first things I tried was Ctrl-N/P to navigate its auto-complete lists, but it didn't work, so I sent a pull request with the underlying library Downshift (https://github.com/paypal/downshift/pull/596). I think adding little touches like this helps to show that a library author pays attention to detail. I know that it's only programmers who would use that keyboard shortcut, but that still probably numbers in the tens of thousands of potential users.
In Evergreen: a React UI Framework built by Segment
So Dragtastic came out of my own difficulty finding a React drag and drop library that was both easy to setup and easily extensible. Dragula was one that I looked at during that process. I only briefly looked into Dragula, so I can't say that I have a full breadth of knowledge about the differences, but from what I can tell the overall paradigm is somewhat different. Where some DND libraries attempt to abstract most of the rendering away from you as the developer, dragtastic uses the "function-as-child" rendering method to allow the developer full control over the rendering of their components. It's similar in a way to how Kent Dodd's Downshift library operates https://github.com/paypal/downshift. Essentially Dragtastic manages all the events and state required for cross-browser drag and drop interactions, but instead of rendering your co
Read the rest
mponents for you, you provide a function in which Dragtastic injects all the state and events you need to hookup your own components. Hopefully that answers your question. Edit: I should mention as well that Dragula and other similar more-mature libraries have more complete APIs. I'm continually adding more features to Dragtastic, so for developers requiring a complete API may want to look elsewhere for now or consider contributing. ;)
In Show HN: React Dragtastic – Frustration-Free Drag and Drop for React JS
The app I'm mentioning was pre-Webpack days, like 4-5 years ago. Just using KnockoutJS...which has no dependencies. It made me realize that tools can dramatically impact my output as a developer. Dependencies can sometimes be a pain in the ass to manage...but they are a huge net positive for productivity. When the choice is between downloading a battle-tested autocomplete package written and maintained by someone like PayPal (https://github.com/paypal/downshift) and rolling your own thing...it's a no brainer. You use the battle tested lib unless you have a very good reason to roll your own thing. Some tools fade, some tools stand the test of time. AngularJS has been deprecated even by its own creators (who built a shiny new framework with the same name)...so that's a bad example.
In Choose boring employees

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.