Launched this week

moodi
Your loading spinner, but it has feelings
3 followers
Your loading spinner, but it has feelings
3 followers
moodi is a tiny 3D buddy that lives in your UI and shows what's happening: thinking, loading, happy, error. One line of code for React or Web Component. Free & open source. No signup, no BS. Built by a solo dev.







Hey Product Hunt 👋 I’m Kornel, the solo dev behind moodi.
Every app has the same loading spinner. Every AI chat has the same three dots. I wanted my UI to actually feel something, so I built a tiny 3D buddy that reacts to what your app is doing. 👻
What it does
moodi shows your app’s state as a mood: thinking while your AI is working, loading while data comes in, happy when it’s done, error when things break, love when the user does something nice. 11 moods in total, and it follows your cursor too.
⚡ How easy it is
One line. React, Web Component or CDN. Change the mood prop and it morphs smoothly.
🎨 Make it yours
→ Pick a shape (ghost, pebble, blob, drop, bean, cube)
→ Any brand color
→ Optional cute sounds
🪶 Light by design
Tiny and fast, so it won't slow your site down.
One shared WebGL renderer for every instance, lazy loading, and a low-power fallback. It won’t kill your Lighthouse score.
🆓 Free & open source (MIT)
No signup, no paywall. Code is here: https://github.com/korneXD/moodi
Try the playground: https://www.getmoodi.dev
I’d love your feedback: which mood should be the 12th, and what shape should I add next? I read every comment 🙏
A question I expect: why not just use Lottie or Rive? 🤔
Fair question, they're great. The difference is that with Lottie or Rive you design and ship your own animation. moodi is a ready-made character that you just drop in. You don't draw anything, you set a mood prop (thinking, loading, happy, error…) and it morphs smoothly between states. It's real-time 3D, so it can also follow your cursor, and you can match it to your brand color.
So: Lottie/Rive if you want a custom animation, moodi if you want a friendly state indicator in one line.