Words of Affirmation
Error messages that apologize. Empty states that cheer. Tooltips that whisper instead of shout. Copy is the first hug your product gives.
software people genuinely love
Lovability is not a vibe. It is a measurable engineering practice — five rituals that turn shipping software into an act of warmth.
Error messages that apologize. Empty states that cheer. Tooltips that whisper instead of shout. Copy is the first hug your product gives.
Remember the form. Restore the draft. Pre-fill the obvious. Every keystroke saved is a small love letter to the user’s afternoon.
60fps interactions. 200ms responses. The unbroken flow of a conversation that never makes you wait awkwardly for the next sentence.
The unexpected confetti on first success. The hidden keyboard shortcut. Easter eggs that signal: someone here was thinking about delight.
The satisfying click of a real toggle. The gentle bounce of a card receiving focus. Haptics that feel like agreement. Software you can almost feel under your thumb.
export function LovableButton({ children, onPress }) {
const [hugged, setHugged] = useState(false);
return (
<button
className="blob blob--coral"
onMouseDown={() => setHugged(true)}
onMouseUp={() => { setHugged(false); onPress?.(); }}
style={{ transform: hugged ? 'scale(0.96)' : 'scale(1)' }}
>
{children} /* a small hug */
</button>
);
}
A button that squeezes back. Lovability begins where the spec ends.
We track L-Score — a composite of return-without-prompt rate, unsolicited praise volume, and the slope of the third-week retention curve. Lovability is an SLO.
Default to warmth. The cold path is always more code than you think.
If a user has to apologize to your software, your software should apologize first.
Curves over corners. The brain reads a rounded shape as safe.
Animate state, never decorate stillness. Motion is meaning.
Empty states are the loudest screen in your product. Whisper kindly.
Latency is rudeness wearing a lab coat. Hide it with grace, not spinners.
Make the success path delightful and the failure path dignified.
The product is a relationship. Maintain it like one.
A weekly cadence used by teams shipping things people stick around for.
The whole team. Tone of voice changes everything you think you knew about a complaint.
Every blank screen, freshly logged-in, with no data. Note the lonely ones.
Pick the one you see most. Round its edges. Slow it 80ms. Re-deploy.
Out of capital letters. Out of blame. Into a sentence a friend would say.
Pick a user who wrote in. Write back. Not as support — as a person who made the thing.
“I opened it on a tuesday morning and it felt like the app was happy to see me. I’m not even sure what to do with that information.”
“every other dashboard feels like a parking lot now.”
“the loading states are weirdly comforting? like they know I’m busy.”
“my team uses other tools. I keep this one open in a tab because I miss it when it’s gone.”