Radix UI
Radix UI is a low-level UI component library focused on accessibility and customization. It provides unstyled primitive components that give developers complete design freedom while ensuring WAI-ARIA compliant, accessible UIs. With over 30 components including Dialog, Dropdown, and Tooltip, each can be installed independently for incremental adoption.
accessibilityheadless-uiunstyledprimitivesdesign-system
๐ฎ Playground
Loading playground...
Use cases
- โขBuilding design systems with accessibility-guaranteed base component layers
- โขDeveloping fully customized UI libraries with Tailwind CSS or CSS-in-JS solutions
- โขIncrementally adding accessible Dialog, Dropdown, Popover components to existing projects
- โขEnterprise-grade web applications requiring complex interactions (modals, menus, tooltips)
- โขDeveloping government or financial websites where WCAG compliance is mandatory
Good for
- โFully WAI-ARIA compliant with built-in accessibility features like keyboard navigation and screen reader support
- โUnstyled headless components compatible with any styling solution including CSS-in-JS, Tailwind, and CSS Modules
- โIndividual package distribution enables bundle size optimization and incremental adoption
- โWritten in TypeScript with excellent type safety and flexible API supporting both controlled and uncontrolled patterns
- โBacked by WorkOS with active community ensuring continuous maintenance and updates
Not good for
- โNo built-in styling requires initial setup time, making it better suited for long-term projects than rapid prototyping
- โLow-level API has a learning curve requiring understanding of component composition and accessibility patterns
- โMultiple internal dependencies (@radix-ui/react-* packages) can result in a complex dependency tree
Installation
$npm install @radix-ui/react-dialog
Example
import * as Dialog from "@radix-ui/react-dialog"
export default function Demo() {
return (
<Dialog.Root>
<Dialog.Trigger>Open</Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay />
<Dialog.Content>
<Dialog.Title>Title</Dialog.Title>
<Dialog.Description>Description</Dialog.Description>
<Dialog.Close>Close</Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
)
}Comparison
"More accessible than Headless UI, more flexible than Chakra UI."
Trust Metrics
18.5K
GitHub Stars
18.8M
Weekly Downloads
Last Commit:Feb 13, 2026
Used by
LinearVercelCodesandbox