interior[.]dev

Software feels cheap in the half-second after a click.

The fade a beat too slow. The spinner outliving the request. The row that jumps as it loads.

Free, open-source React micro-interactions, argued out to the frame. The behaviour is finished; the style is yours.

Library of the Month on 21st.dev

Small things. Finished.

Animated React components, shown in motion.

All 54 components

Loading Button

The label changes. The button stays put.

Hold to Confirm

A moment to change your mind.

Slider Detents

Stops you can feel.

Segmented Control

The selection travels. Nothing jumps.

Like Burst

Even a second tap is considered.

One file. Yours.

Add a component. Keep the source. Change everything you want.

React, Tailwind CSS, and Motion.
TypeScript throughout. MIT licensed.

Meet the copy button
terminal
npx shadcn@latest add https://www.interior.dev/r/copy-button.json
your-component.tsx
import { CopyButton } from "@/components/interior/copy-button";

<CopyButton value="hello@interior.dev" />

A few words back.

From the launch conversation on X.

Read the conversation
  • tbh this pure gold!
  • Such a clean design it is.
  • time to bookmark
  • beaut.
  • Feels smooth!
  • This is gonna be good
  • thank you, clear and beautifully work!
  • Crazy work keep going!🔥
  • Amazing work!
  • nice, you just got a follow!
  • looks good
  • This looks really nice.
  • Good stuff
  • Looks nice.

Finish the small things.

54 components. The style is still yours.

Explore the components