On this page
Overview
Headless UI provides interaction behavior and accessibility for components such as dialogs, menus, listboxes, and comboboxes while leaving visual styling to the application. It ships React and Vue packages and is designed to work naturally with Tailwind CSS, while remaining usable with custom CSS and design systems.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Reuse dialog, menu, listbox, and other interactions without a fixed visual theme
Components provide behavior such as open/close state, selection, focus movement, and keyboard interaction without imposing a visual theme, so product-specific CSS or utility classes can be layered on top.
Build custom design systems on an accessibility-focused foundation
The project centers on fully accessible, unstyled components. Applications keep control of layout and appearance while delegating interaction semantics to the library.
Sources: [1]
Add the React package to Tailwind CSS or an existing frontend stack
@headlessui/react supports React 18 and 19 as peer dependencies. It is designed to integrate well with Tailwind CSS but does not require utility CSS as a runtime dependency.
Sources: [2]
Best fit
Fits frontend teams that own visual design but want reusable accessible behavior
It suits design systems where teams maintain their own tokens and styling and prefer composable interaction primitives over a pre-styled component theme.
Sources: [1]
Before adoption
Version 2.2.10 targets React and React DOM 18 or 19
Package metadata requires React and React DOM ^18 || ^19 || ^19.0.0-rc. Legacy React applications should verify runtime compatibility before upgrading.
Sources: [2]
Version 2.2.10 fixes Portal hydration and Fragment-prop errors
The patch avoids rendering Portal while hydrating and fixes a Fragment-props error involving Symbol(react.lazy). SSR and hydration users should pay attention to the patch level.
Sources: [3]
Official sources
- [1]Headless UI README(2026-10-05)
- [2]@headlessui/react 2.2.10 package metadata(2026-10-05)
- [3]@headlessui/react 2.2.10 release(2026-10-05)
- [4]Headless UI MIT license(2026-10-05)
Supplemental curator note
Headless UI is not a finished visual component kit. Style it in the application and validate focus, keyboard, ARIA, and hydration behavior in browser-level tests.
Try it in 3 steps
- 1
Install pinned Headless UI React 2.2.10
Create an isolated npm project with Headless UI React and exact peer dependencies.
demo=$(mktemp -d "${TMPDIR:-/tmp}/headlessui.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact @headlessui/react@2.2.10 react@19.2.0 react-dom@19.2.0 - 2
Verify the package version
Require the installed package metadata to match the reviewed version.
test "$(node -e "console.log(JSON.parse(require('fs').readFileSync('node_modules/@headlessui/react/package.json')).version)")" = '2.2.10' - 3
Check the main component exports
Verify Dialog, Menu, and Listbox exports without starting a browser. Test interaction and accessibility separately in a browser.
test "$(node --input-type=module -e "import * as H from '@headlessui/react'; console.log(['Dialog','Menu','Listbox'].every(k=>k in H))")" = 'true'
Growth
Growth trends · Last 30 days
28,767 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 0
- Open PRs
- 28
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- react
- headless-ui
- headlessui
- vue
- accessibility
- a11y
- tailwindcss
- components
- Stars
- 28,767
- Forks
- 1,208
- Watchers
- 163
- Open issues
- 87
- Contributors
- 74
- Owner type
- Organization
- Primary language
- TypeScript
- License
- MIT
- Repository last updated
- Apr 13, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- React Router56,590 Stars
3 shared tag(s) · 1 shared category(s) · Same language
multi-strategy routing for URLs, nested routes, navigation, and data flow in React applications
TypeScript - styled-components41,099 Stars
3 shared tag(s) · 1 shared category(s) · Same language
CSS-in-JS for React using tagged templates with scoped styles, theming, SSR, and React Native support
TypeScript - React Three Fiber32,733 Stars
3 shared tag(s) · 1 shared category(s) · Same language
React renderer that builds Three.js scenes declaratively with components and JSX
TypeScript - React Redux23,424 Stars
3 shared tag(s) · 1 shared category(s) · Same language
official bindings that subscribe React components to a Redux store and dispatch state updates
TypeScript - flatpickr16,464 Stars
3 shared tag(s) · 1 shared category(s) · Same language
pick dates, times, ranges, and multiple days with a dependency-free UI and configurable disabled dates and locales
TypeScript - Linaria12,350 Stars
3 shared tag(s) · 1 shared category(s) · Same language
keep CSS-in-JS authoring while extracting styles to static CSS at build time
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.