Small, stable parts.
Composed into systems you own.

LatticeUI is a design system built against the failure modes of MUI, AntD, and Chakra: 28 accessible components, zero-runtime styling, a framework-agnostic core, versioned anatomy contracts, and an eject command that keeps an upgrade path.

Get started in 3 steps →

import "latticeui-tokens/tokens.css";
import "latticeui-styles/index.css";
import { Button } from "latticeui-react";

What existing libraries get wrong

The customization cliff

MUI/AntD make the first 80% easy and the last 20% brutal: specificity wars, undocumented class names, !important.

Runtime CSS-in-JS tax

Emotion-style runtimes bloat bundles, slow hydration, and break under React Server Components.

No ownership middle ground

npm packages lock you out of internals; copy-paste kits cut you off from upstream fixes forever.

AI hallucinates your UI

LLMs generate outdated component APIs because libraries ship no machine-readable contracts.

The LatticeUI answer

Override anything without a fight

Every LatticeUI rule lives inside @layer latticeui and targets stable anatomy attributes. This is the entire override story - no !important, no class-name spelunking, guaranteed stable across upgrades:

/* your plain app css - always wins, because LatticeUI's CSS is layered */
[data-scope="button"][data-part="root"] {
  --button-bg: rebeccapurple;
  border-radius: 0;
}