Radix UI

Unstyled, accessible React UI primitives for building your own design system.

Library
npm
v1.6.7
19,245stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
76/100Good
Development Activity84
Maintenance52
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
87/100Excellent
Architecture88
Code Quality85
Innovation90
Learning Curve85

radix-ui is the umbrella npm package for Radix Primitives, an open-source library of low-level, unstyled UI components for React — dialogs, popovers, dropdown menus, tooltips, tabs, accordions, and dozens more. Every primitive ships with correct WAI-ARIA behavior, keyboard navigation, and focus management built in, so teams can layer their own styling on top instead of reimplementing accessibility from scratch.

Rather than installing and importing dozens of individually-scoped @radix-ui/react-* packages, radix-ui re-exports the entire primitive set under namespaced imports (import { Dialog, Popover } from ‘radix-ui’), making it the fastest way to adopt the full library or incrementally add primitives to an existing design system.

What You Get

  • Namespaced access to every Radix primitive (Dialog, Popover, Tooltip, Select, and 40+ more) via a single radix-ui import
  • WAI-ARIA-compliant components with keyboard navigation, focus trapping, and screen-reader support built in
  • Fully unstyled primitives with a composable Root/Trigger/Content API that layers cleanly onto any CSS or design system
  • Controlled and uncontrolled component modes via a consistent useControllableState pattern across every primitive

Common Use Cases

  • Building a custom design system’s interactive components (modals, menus, tooltips) without hand-rolling accessibility
  • Adding accessible dropdown, dialog, or popover behavior to a Tailwind CSS or CSS-in-JS styled app
  • Powering shadcn/ui-style component libraries that wrap Radix primitives with pre-styled variants

Under The Hood

Architecture - Radix Primitives is a pnpm monorepo where each component (dialog, popover, tooltip, accordion, etc.) lives as its own package under packages/react/*, built on shared low-level primitives: react-primitive (a polymorphic Slot-based base), react-context (scoped context creation via createContextScope), react-dismissable-layer, react-focus-scope, react-portal, and react-presence (animation-aware mount/unmount). For example, packages/react/dialog/src/dialog.tsx composes DismissableLayer, FocusScope, Portal, Presence, RemoveScroll, and aria-hidden to implement a fully accessible modal. The radix-ui package (packages/react/radix-ui) is a thin umbrella that namespace re-exports every individual primitive package (export * as Dialog from ‘@radix-ui/react-dialog’) under one import surface.

Tech Stack - Written almost entirely in TypeScript (96% of the codebase), the repo uses pnpm workspaces with a custom @repo/builder for dual ESM/CJS output, Vitest for unit tests, Playwright plus axe-core for accessibility-focused end-to-end testing, Storybook as the component development environment, Changesets for versioned releases, and oxlint/oxfmt for linting and formatting. React 16.8 through 19 are all supported as peer dependencies.

Code Quality - Each primitive package follows an identical, predictable file layout (src/index.ts, src/<name>.tsx, <name>.test.tsx, README.md, CHANGELOG.md) with substantial paired test coverage — dialog.tsx runs 568 lines against a 318-line dialog.test.tsx. Naming is consistent throughout (SCREAMING_CASE internal constants, createContextScope for scoped state, <Name>Element type aliases), and every exported prop is strongly typed.

API Design - Every primitive follows the same Root/Trigger/Content/Portal composition pattern, so learning one primitive transfers directly to the next. Controlled and uncontrolled usage is handled uniformly via useControllableState, and the radix-ui umbrella package removes the friction of installing dozens of separately-scoped packages by exposing everything through namespaced imports (Dialog.Root, Popover.Trigger, etc.) backed by extensive per-primitive READMEs and a dedicated documentation site.

Used by 2155 apps in this directory

TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago
TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
30
Repo Health
70
Technical
63
Dependency
Built with
TypeScript76%
MDX18%
Updated 1 years ago

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