Velvet UI is a headless React library for sheets and toasts that feel at home on every device. Browser-native WAAPI animations and custom physics power fluid dragging, scrolling, snapping, touch gestures, trackpad swipes, mouse-wheel input, and interruptible motion. It is accessible, deeply customizable, tree-shakeable, and dependency-free beyond React. Use it with your own styles or with Base UI, Radix UI, and React Aria.
Hello Product Hunt! 👋
I built Velvet UI because many web sheets look polished but still do not feel native once you start interacting with them. Dragging can lag behind your finger, scrolling can fight the sheet, and animations often cannot be interrupted naturally.
Velvet UI focuses on those interaction details. It combines the browser’s Web Animations API with a custom physics engine to support fluid dragging, snapping, scrolling, swipe-to-dismiss, touch and trackpad gestures, mouse-wheel input, and interruptible motion.
It is headless, accessible, tiny, tree-shakeable, and has no runtime dependencies beyond React. You can bring your own CSS or use it alongside Base UI, Radix UI, React Aria, or another component system.
Install it with:
npm install @velvetui/react
Velvet UI is free for personal, open-source, and other non-commercial projects. Commercial and enterprise licenses help support the substantial engineering and ongoing maintenance behind the library.
I would love to hear what you build with it—and especially how the interactions feel on your devices. Your feedback will help shape what comes next. ❤️