Skip to content
aiarabicdev

Search

Search every tool...

UI component libraries
FreeMITTypeScriptSelf hostable

Radix Primitives

Unstyled, accessible behaviour for the components that are hard to get right

Radix Primitives implements the interaction and accessibility layer for dialogs, menus, popovers, tooltips, selects and the rest of the genuinely difficult components, with no styling at all. It is the layer most polished React libraries, including shadcn/ui, are built on.

Best for when

  • you have your own visual language and need the behaviour underneath it
  • accessibility is a requirement rather than an aspiration
  • you are building a component library other teams will use

Watch out for

  • the composition API is verbose, and that never stops being true
  • nothing is styled, so evaluating it means doing the styling work first
  • React only, with no story for other frameworks

Install

Install

pnpm add radix-ui

What you are buying

Focus management, keyboard navigation, screen reader semantics, portal and layering behaviour, and the dozens of edge cases in each. These are the parts that take weeks to discover and are almost never finished in a hand rolled component.

Everything ships unstyled, which is the point. You keep every visual decision and give up only the decisions you should not be making.

Where the friction is

The composition style is verbose. A dialog is five or six nested components before you have written any of your own markup, which is correct and still feels heavy the first several times.

Because it owns behaviour and not appearance, an unstyled Radix app looks broken until you style it. Budget for that in an evaluation rather than judging the first render.

Last checked: .md