Library / SDK
tailwindlabs/headlessui avatar
tailwindlabs/headlessui

Headless UI provides unstyled, accessible components for Tailwind CSS

Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

28,760 stars1,205 forksTypeScriptMIT

At a glance

What is it?
Headless UI is a set of completely unstyled, fully accessible UI components for React and Vue that integrate with Tailwind CSS, with stable and insiders builds and docs at headlessui.com.
Who is it for?
Headless UI is a small, focused library: a set of completely unstyled, fully accessible UI components built to work with Tailwind CSS. The README gives just enough to start, the install commands for React and Vue, the warning that the insiders build skips semantic versioning, the list of three packages, and links to GitHub Discussions and the contributing guide.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 169 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Headless UI ships unstyled, accessible components for Tailwind

Headless UI is described in its README as a set of completely unstyled, fully accessible UI components designed to integrate with Tailwind CSS. The phrase points to a specific approach in front end development: a component ships the behavior, keyboard handling, focus management, and accessibility wiring, but leaves the visual styling to the consumer. You write your own markup and classes, and the library supplies the logic that makes a menu, dialog, or listbox usable by keyboard and screen reader users.

For Tailwind CSS users this split is convenient, because the utility classes handle appearance while Headless UI handles the parts that are easy to get wrong. The README keeps the project description to one sentence and a link to headlessui.com for the full documentation. That one sentence is the only claim the repository makes about what the project is, so the rest of the component list and API lives on the documentation site rather than in the readme.

Installing the React and Vue packages

Installing Headless UI follows the usual npm pattern, and the README lists the exact commands for the two main frameworks. For React you run npm install @headlessui/react@latest, and for Vue you run npm install @headlessui/vue@latest. Both commands pull the most recent published release.

The README presents these as the supported way to add the library to a project. Because the components are meant to pair with Tailwind CSS, the install step is only the first half: you also need Tailwind set up in your build. The readme does not include a setup walkthrough, pointing instead to headlessui.com for full guidance. What the README does give is the precise package names and the @latest tag, so a reader knows exactly which package to install for each framework.

The insiders build tracks the main branch

Beyond the stable release, Headless UI offers an insiders build that tracks the main branch directly. The README shows the commands npm install @headlessui/react@insiders and npm install @headlessui/vue@insiders. The insiders tag resolves to whatever the latest commit on the main branch happens to be, giving early access to changes before they are published as a release.

The README adds an explicit warning about this channel. The insiders build does not follow semantic versioning, and it does not guarantee that the APIs will be the same once they are released. In practice that means code written against insiders can break without a version bump. The stable @latest line is the safe choice for applications, while insiders is aimed at people who want to test or preview work in progress.

Three published packages

Headless UI publishes three packages, and the README lists them in a table with version and download badges. The first is @headlessui/react for React applications, the second is @headlessui/vue for Vue applications, and the third is @headlessui/tailwindcss, a package that brings Headless UI helpers into the Tailwind CSS layer. Each row links to its npm page and shows the current version and download counts.

The presence of a React package and a Vue package reflects the project's stated design: the same accessible component logic is offered for the two frameworks. The tailwindcss package extends that relationship into the styling layer itself. The README keeps this section to the package table and the badges, so the exact contents of each package are described on the linked npm and documentation pages.

Community support through GitHub Discussions

For questions and discussion, Headless UI points to GitHub Discussions rather than a chat server. The README links the discussions page for help, conversation about best practices, and feature ideas. That single link is the project's stated community hub.

This choice puts support and planning in one public, searchable place. Someone stuck on a component can read past threads before posting, and feature requests surface where the maintainers can see them. The README does not list a Discord or Slack, which keeps the support surface small and easy to follow. For a library whose main surface is a set of components, a discussion board is a light way to handle questions without spreading answers across many channels.

Contributing and the scope of the README

The README closes with a short contributing note: anyone interested in contributing should read the contributing docs before opening a pull request. The link points to the project's CONTRIBUTING file in the repository. That is the only process note the readme includes.

Taken together, the Headless UI readme is a thin entry point. It states what the project is in one sentence, gives the install commands for React and Vue, explains the insiders channel, lists the three packages, and points to discussions and contributing docs. The real detail, the component API, examples, and accessibility notes, lives at headlessui.com. The readme's job is to get a new user to the right install command and then hand off to the documentation site.

Editorial conclusion

Headless UI is a small, focused library: a set of completely unstyled, fully accessible UI components built to work with Tailwind CSS. The README gives just enough to start, the install commands for React and Vue, the warning that the insiders build skips semantic versioning, the list of three packages, and links to GitHub Discussions and the contributing guide. The headless approach, behavior and accessibility handled by the library while you keep full control of styling, is the idea behind the project, and the documentation site carries the rest. For teams using Tailwind CSS who want accessible components without a preset look, the readme shows exactly where to install and where to read more.

Frequently asked questions

How does Headless UI work?

The README describes Headless UI as a set of completely unstyled, fully accessible UI components designed to integrate with Tailwind CSS. The library supplies the component behavior, keyboard handling, and accessibility logic, while you provide the markup and styling. Packages exist for React, Vue, and the Tailwind CSS layer.

Which frameworks does Headless UI support?

The README lists three packages: @headlessui/react for React, @headlessui/vue for Vue, and @headlessui/tailwindcss for the Tailwind CSS layer. The React and Vue packages carry the accessible component logic, and the tailwindcss package extends that relationship into styling.

What is the Headless UI insiders build?

The insiders build tracks the latest commit on the main branch. You install it with the @insiders tag for either the React or Vue package. The README warns that insiders does not follow semantic versioning and gives no guarantee that the APIs stay the same until a release.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. tailwindlabs/headlessui on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tailwindlabs-headlessui.svg)](https://hysenlabs.com/projects/tailwindlabs-headlessui)