Interaction personality
Unique microinteractions, easter eggs, contextual feedback, sound. Personality lives in how the product responds, not how it looks.
Raw markdown On GitHubreferences/components/interaction-personality.md
Taught in
Two products with identical visual design can feel completely different based on how they respond to the user. Personality lives in interactions, not in static screens.
What "interaction personality" means
- A hover state that does something specific to this product, not a generic 1px shift.
- A success state that celebrates, even briefly, not a silent "Saved.".
- An error state that explains in a voice (see forms-validation copy).
- A button that has a tiny physical response (slight squish, subtle haptic on touch).
- A loading state that informs ("Fetching your last 30 days…") instead of spinning anonymously.
- An empty state that suggests a next step in the product's voice, not "No data."
- Easter eggs — hidden, never-prompted small delights for users who explore.
The total is what users mean when they say "the product feels alive."
Easter eggs — when they're earned
Easter eggs work when they:
- Reward exploration without depending on it (no user must find them).
- Match the product's tone (a financial app's easter egg should still be on-brand).
- Are cheap to maintain (don't ship a complex hidden feature that breaks silently).
- Appear at moments of natural curiosity (404 page, settings deep-dive, long-press, secret keyboard combo).
Classic spots:
- 404 page — the most-explored "broken" page in any product. Most companies put a generic robot there. Put something specific.
- Long-press on logo — credits, a thank-you, a small animation.
- Settings → About — version number that flips on click, a hidden joke, a contributors list.
- Konami-code-style sequences — for the truly curious.
- First-of-its-kind moments — first project created, first 100th visit, etc.
What easter eggs are NOT for:
- Surprising users in the middle of a critical flow (signup, payment).
- Adding personality the product otherwise lacks (you can't easter-egg your way out of bad core UX).
Imperfect timing — varied micro-delays
Generic animation has uniform timing — every button responds the same way, every hover state has the same duration. Products with personality often vary timing slightly:
- Hover delays of 80ms on one component, 120ms on another, deliberately.
- A "Save" button that responds at 100ms; a "Delete" button that responds at 200ms (the 100ms extra reads as deliberation, which is right for destructive actions).
- A "Done" success state that holds for 800ms before fading; a "Continue" state that exits at 200ms.
This is the opposite of design-tokens-make-everything-consistent. Tokens are right for visual properties. Timing has more room for narrative pacing.
Contextual feedback
Error messages, success states, and confirmations should reflect the user's specific action.
| Generic | Contextual |
|---|---|
| "Saved." | "Saved your 3 changes." |
| "Item deleted." | "Deleted project Atlas." |
| "Network error." | "Couldn't reach our server. Trying again in 4s…" |
| "Success!" | "Sent to 47 recipients." |
Specificity costs you almost nothing and signals attention. The agent doing the action knows what was done — surface it.
Sound design (use sparingly)
Sound is a personality lever most products skip entirely. When done well:
- Tied to specific interactions, not generic events. A send-message ping is fine; a beep on every button click is grating.
- Designed by someone, not pulled from a stock library. Stock UI sounds are tells.
- Off by default with a clear toggle. Most users will keep it off, but the ones who keep it on become attached.
- Synced precisely to the visual animation. The sound and the motion are one event.
Examples done well: Linear's command palette open sound, Apple's "swoosh" on Mail send (in earlier versions), Honk's bespoke sound design tied to each interaction.
Examples done poorly: Microsoft Office's pre-2007 default sounds. Discord's default ping (lovable, but obviously stock).
The sound cluster goes deeper: sound-decision-framework for whether, sound-palette for the family, sound-motion-sync for timing.
When to apply
- Consumer products where personality is a competitive advantage.
- Brand-led products (financial apps with attitude, music apps, social apps).
- Products with a strong founding voice that the team wants to preserve at scale.
- Onboarding flows specifically — every first impression is a personality opportunity.
When NOT to apply
- B2B power-user productivity tools where consistency and predictability win. Adding personality to an analyst's dashboard slows them down.
- Healthcare, finance, or other contexts where users want the product to be calm and reliable, not playful.
- Anywhere the personality would conflict with the brand's primary value (a "professional" service shouldn't easter-egg about pizza).
Gotcha
Personality lives in restraint. A product with one well-placed easter egg and one specific success message feels alive. A product with ten easter eggs and animated success states everywhere feels exhausting.
The Benji rule: "A lifeless product feels like a dead product, and a dead product feels uncared for." Add personality where it matters most, not everywhere.
Sources
- Benji Taylor — Honkish, benji.org/honkish.
- guidelines.sh — Interaction Personality category (unique microinteractions, easter eggs, imperfect timing, contextual feedback, sound design).
- Related: feeling-right, delight-impact-curve, forms-validation, states-are-the-work.
componentsinteractionpersonalityeaster-eggssound