HeroUI

Accessible, Tailwind-native React components with a zero-boilerplate compound API.

Library
npm
v3.2.4
30,408stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
92/100Excellent
Development Activity100
Maintenance100
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
85/100Excellent
Architecture90
Code Quality68
Innovation92
Learning Curve88

HeroUI (formerly NextUI) is a production-ready React component library that pairs the accessibility rigor of React Aria with the utility-first styling of Tailwind CSS v4. It ships a compound component API — Card.Header, Card.Content, Select.Item, and similar patterns — instead of deeply nested prop objects, and it requires no top-level <Provider> wrapper to start rendering. The library targets React 19 and Next.js out of the box, and bundles over 80 components spanning forms, overlays, navigation, and data display.

Beyond the component set, HeroUI leans into AI-assisted development: it ships an official MCP server, an llms.txt context file, and installable agent skills so tools like Claude Code and Cursor can generate correct usage without hallucinating props. Styling is handled by a dedicated @heroui/styles package built on tailwind-variants, keeping the component logic and the Tailwind class generation cleanly separated.

What You Get

  • Over 80 accessible React components (buttons, forms, overlays, tables, calendars, navigation) built on React Aria Components for WCAG-compliant keyboard and screen-reader behavior
  • A compound component API (Card.Header, Card.Content, Select.Item) that composes cleanly instead of relying on large flat prop objects
  • Tailwind CSS v4 styling via a separate @heroui/styles package powered by tailwind-variants, with no CSS-in-JS runtime and no required <Provider> wrapper
  • AI-assisted development tooling: an official MCP server (@heroui/react-mcp), a published llms.txt, and installable agent skills for Claude Code, Cursor, and Windsurf
  • Individually installable per-component packages (@heroui/button, @heroui/modal, etc.) for teams that want tree-shakeable, à-la-carte imports instead of the full @heroui/react bundle

Common Use Cases

  • Building SaaS application UI — forms, tables, overlays, and toast notifications with accessible defaults out of the box
  • Constructing dashboards and admin panels that need consistent design tokens across data-dense layouts
  • Shipping marketing sites and landing pages that want polished, accessible UI without a heavyweight CSS-in-JS runtime
  • Migrating off NextUI (HeroUI’s predecessor) or off a component library like MUI/Chakra where Tailwind-native styling and lighter bundle weight are priorities

Under The Hood

Architecture — HeroUI is a Turborepo-managed pnpm monorepo. packages/react is the public-facing bundle: its src/index.ts re-exports from components/ (87 component directories, one per primitive, e.g. button/button.tsx) and hooks/ (ten focused hooks like use-overlay-state and use-media-query), plus tv/cn helpers re-exported from tailwind-variants. Styling is deliberately decoupled into a sibling packages/styles package that owns the Tailwind plugin and per-component *Variants functions (e.g. buttonVariants); packages/react imports these variant functions and merges them with react-aria-components primitives (Button as ButtonPrimitive) via a composeTwRenderProps utility, so a component like button.tsx is essentially a thin adapter layer over React Aria plus a Tailwind class function. Compound components use React context (ButtonGroupContext) with an explicit escape hatch — direct props always take precedence over inherited group context — rather than the deep prop-drilling common in older component libraries.

Tech Stack — Built for React 19 and Tailwind CSS v4 specifically (both are hard peer dependencies, >=19.0.0 and >=4.0.0), with react-aria/react-aria-components (Adobe’s accessibility primitives) and tailwind-variants as the two foundational dependencies. The build pipeline uses Rollup for bundling, TypeScript throughout with strict typing on exported prop interfaces, and a shared @heroui/vitest config package for whichever packages do have test suites. Package publishing goes through a clean-package step that strips workspace-only fields before npm publish.

Code Quality — Code is consistently typed and formatted (ESLint + Prettier enforced via lint-staged/husky pre-commit hooks, commitlint for conventional commits), and naming is uniform across the 87 component modules (<name>.tsx root + supporting files in each directory). The notable gap: a shallow clone of the packages/react source tree turned up zero *.test.* files, despite the monorepo maintaining a dedicated @heroui/vitest shared-config package — test coverage for the component logic itself appears thin or lives outside the public package boundary. Partially offsetting this, 67 of the 87 components ship a corresponding *.stories.tsx Storybook file, giving strong manual/visual coverage even without automated assertions.

API Design — The developer experience is the standout: no <HeroUIProvider> wrapper is required just to render a component (a real friction point in Chakra UI and MUI), props are typed via ComponentPropsWithRef extension so IDE autocomplete surfaces the full underlying React Aria prop set, and the compound API (Card.Header/Card.Content) reads close to plain JSX nesting. The AI-tooling investment (MCP server, llms.txt, CLI-installable agent skills via npx heroui-cli agents-md) is unusual for a component library and specifically targets reducing prop-hallucination when code is written by an AI assistant rather than a human reading docs.

Used by 6 apps in this directory

TypeScript
92%
GPL 3.0

Blinko

Knowledge Management · Note Taking

10,880

A self-hosted, AI-powered card note-taking tool that lets you capture fleeting thoughts instantly and retrieve them with natural language search.

View details
83
Repo Health
69
Technical
65
Dependency
Built with
TypeScript92%
Updated 2 weeks ago
JavaScript
99%
Other

ChartBrew

Analytics · Databases

4,041

Open-source reporting platform to build live dashboards from SQL, NoSQL, APIs, and SaaS tools with an AI assistant that creates charts from natural language.

View details
90
Repo Health
83
Technical
65
Dependency
Built with
JavaScript99%
Updated 6 days ago
TypeScript
97%
Apache 2.0

Cline

AI Code Assistants

66,453

An open-source AI coding agent that lives in your editor and terminal — reads and edits your codebase, runs commands, browses the web, and requires human approval for every action by default.

View details
90
Repo Health
74
Technical
67
Dependency
Built with
TypeScript97%
Updated today
TypeScript
94%
Other

OpenHands

AI Code Assistants · AI Development

84,452

The self-hosted developer control center for running AI coding agents — locally, in Docker, on VMs, or across cloud backends — with automation workflows for GitHub, Slack, and more.

View details
91
Repo Health
82
Technical
71
Dependency
Built with
TypeScript94%
Updated today
Python
69%
Apache 2.0

otari

AI Development · Developer Tools

393

A self-hosted, OpenAI-compatible LLM gateway that puts one endpoint in front of 40+ providers, with virtual API keys, per-user budgets enforced before spend, and full usage tracking.

View details
77
Repo Health
88
Technical
78
Dependency
Built with
Python69%
TypeScript30%
Updated today
TypeScript
98%
Apache 2.0

rowboat

AI Assistants · AI Development

17,323

Build, test, and deploy multi-agent AI workflows with a visual editor, RAG data sources, MCP tool integration, and a production-ready REST API.

View details
85
Repo Health
72
Technical
65
Dependency
Built with
TypeScript98%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search