radix-ui/primitives
Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.
30 files reviewed·July 29, 2026
Top fix
Keep enforcing consistent controlled/uncontrolled state patterns as new primitives land
More findings
- No accessibility regressions found across the reviewed composition patterns
- API surface stays predictable across primitives, easing consumer styling
Verdict
Consistency is the whole product here: every primitive follows the same compositional and accessibility conventions with nothing sloppy poking through. The biggest risk isn't in this batch, it's staying this disciplined as more primitives and edge cases get added.
Files Rams reviewed
apps/ssr-testing/app/accordion/page.tsx
apps/ssr-testing/app/layout.tsx
apps/ssr-testing/app/one-time-password-field/page.tsx
apps/ssr-testing/app/password-toggle-field/page.tsx
apps/ssr-testing/app/portal/page.tsx
apps/ssr-testing/app/roving-focus-group/page.tsx
apps/ssr-testing/app/rsc/page.tsx
apps/ssr-testing/app/scroll-area/page.tsx
apps/ssr-testing/app/select/page.tsx
apps/ssr-testing/app/slider/page.tsx
apps/ssr-testing/app/slot/page.tsx
apps/ssr-testing/app/accessible-icon/page.tsx
apps/ssr-testing/app/alert-dialog/page.tsx
apps/ssr-testing/app/avatar/page.tsx
apps/ssr-testing/app/checkbox/page.tsx
apps/ssr-testing/app/collapsible/page.tsx
apps/ssr-testing/app/context-menu/page.tsx
apps/ssr-testing/app/dialog/page.tsx
apps/ssr-testing/app/dropdown-menu/page.tsx
apps/ssr-testing/app/form/page.tsx
apps/ssr-testing/app/hover-card/page.tsx
apps/ssr-testing/app/label/page.tsx
apps/ssr-testing/app/menubar/page.tsx
apps/ssr-testing/app/navigation-menu/page.tsx
apps/ssr-testing/app/page.tsx
apps/ssr-testing/app/popover/page.tsx
apps/ssr-testing/app/primitive-merge/page.tsx
apps/ssr-testing/app/progress/page.tsx
apps/ssr-testing/app/radio-group/page.tsx
apps/ssr-testing/app/separator/page.tsx
Working well
- Systematically covering every orientation/loop combination (horizontal, vertical, both, looping on/off) plus a nested ButtonGroup case is exactly how you validate keyboard focus logic before shipping a primitive.
- Using Accordion.Header wrapping Accordion.Trigger follows the Radix accessible pattern correctly, keeping the heading semantics and button behavior properly composed.
- Using the indexed Input variant in the second example correctly demonstrates the primitive's explicit-ordering API alongside the implicit-order default.
- Uses Radix's PasswordToggleField primitive, which handles accessible naming and state for the show/hide toggle rather than a hand-rolled button.
Scored July 29, 2026 with Rams Engine v0.0.3 · Engine changelog
This page is an automated design review of radix-ui/primitives’s UI code: 30 files read against 258 versioned rules covering accessibility, color, typography, spacing, components, UX, motion, and craft. The score is out of 100; any confirmed critical issue caps it at 59.
More design scores
Score your own repo.
Free on public repos, no account. The same engine that scored this page reads your UI code and mints a score page like this one.
Public repos only. The full engine reviews the UI code and mints a public score page — we email you the link too. Already-scored repos open instantly.