Two solid paths for React UI — different jobs. One is a CSS-first glass system with optional React; the other is a copy-paste component registry built on Radix primitives. Pick for fit, not fashion.
shadcn/ui is not a classic npm UI kit you import as a black box. You CLI-add components into your repo, usually with Tailwind and Radix under the hood. You own the source. That is excellent when you want a React-first design system you can fork hard and ship accessible React components with a huge ecosystem.
Caustica Design (caustica-design) ships as a package:
CSS (and tokens) define the look; caustica-design/core adds typed React
wrappers when you need portals, keyboard behavior, and props. The visual north star is
light through glass — OKLCH tokens, translucent panels, calm light/dark — shaping
softer interfaces people feel.
| Topic | Caustica Design | shadcn/ui |
|---|---|---|
| Delivery | npm package: CSS + optional React core | Copy into your repo via CLI / registry |
| Styling | CSS-first classes and OKLCH custom properties | Typically Tailwind utilities + CSS variables |
| React | Optional — HTML/CSS works alone | React-first by design |
| Look | Glass / soft-light system out of the box | Neutral defaults you restyle heavily |
| Primitives | First-party CSS + React behavior | Radix (and similar) under many components |
| Ownership | Upgrade via package; override tokens/classes | Full file ownership after copy |
Choose Caustica Design when you want:
data-themeChoose shadcn/ui when you want:
Both can ship accessible React components. Neither replaces careful keyboard and screen-reader testing in your product. Caustica documents focus, labels, and patterns in component docs; shadcn inherits much of that from Radix plus your own edits.