Ruixen UI is an open-source component library where every interaction is driven by spring physics, not CSS timers. Components have mass, momentum, and friction. They overshoot when they arrive. They settle. They respond differently depending on distance and velocity.
This is design engineering — the discipline of making interfaces that behave like physical objects instead of state machines.
Why this exists
Most component libraries ship markup with a transition attached. A 300ms ease-in-out that plays the same way every time regardless of context. That works. But it doesn't feel like anything.
Ruixen UI replaces that layer entirely:
- Spring dynamics over CSS transitions — Every animation uses
motion/reactsprings with stiffness, damping, and mass. A short move snaps. A long move carries momentum and settles. The same config produces different motion depending on distance — because that's how real objects behave. - Audio on every state change — A 3ms noise burst via Web Audio API plays on interactive events. Shaped with a quartic decay envelope at 6% gain. It sounds mechanical, not digital. Disable it with
sound={false}. - Single-file, zero dependencies — Each component is one file with inline styles and CSS variables. No theme provider. No global CSS. Drop it into any React project and it works.
- Four registry variants — Every component ships in Tailwind v4, Tailwind v3, Radix primitives, and Base UI primitives. One codebase, four outputs.
What design engineering means here
Design engineering is the work that happens between a design mockup and production code — where you decide how something moves, how it sounds, how it responds to input. It's the difference between a button that changes color and a button that clicks.
We don't generate components with AI and ship them. Every component is hand-engineered — the spring configs are tuned by hand, the audio envelopes are shaped intentionally, the interaction patterns are tested across input methods. The output should feel authored, not generated.
If that distinction matters to you, follow the process on Twitter and read the thinking behind it on our blog.
Request a component
Tell us what you need. We'll build it with spring physics and ship it within 48 hours. Free. Open source. Yours to keep.
DM us on Twitter or open a GitHub issue and we'll get it into the registry.

