Warmth Through Motion

Concept · refreshed Search related

User correction, 2026-06-20 (verbatim): "Let's go with 'warm.'

We should try to make it feel welcoming and interactive. We

can do this through the UI animations and how the user

interacts with the app, rather than focusing on the text

components."

Source: user's design-direction correction to the Hydrolyze

emotional design plan (Hydrolyze Emotional Design Implementation Plan,

Slice 1 originally proposed as "coach voice microcopy pass").

The principle

Voice in product design is multi-channel. A product's "voice" or "feel" can be expressed through any of:

The instinct when given a "feel" directive (warm, playful, professional, etc.) is to reach for the text channel first — change the copy, soften the language, add warmth to the labels. This is the LLM default and often the wrong answer.

The right channel depends on the product's reading mode.

When to use which channel

Product reading modeBest channelWhy
Read-by-word (news, blogs, documentation)TextThe user IS reading the words. Voice through text is direct.
Read-by-glance (timing tools, dashboards, status displays)Motion + InteractionThe user isn't reading the labels; they're scanning the surface. Motion tells them "this app is alive and responsive."
Read-by-feel (games, social apps, immersive experiences)All channels, weighted toward motion + visualVoice is the experience itself, not the words on the experience.
Multi-modal (coach pool-deck app, mobile utility)Motion + Interaction, sparingly on textThe user is in the middle of a task. They don't have attention to spare for reading. The app should feel right through how it responds, not what it says.

The Hydrolyze use case: a swim coach at 5am pool deck, squinting at the phone in low light, with 24 swimmers in the water. The coach is NOT reading the app. The coach is TAPPING the app and RESPONDING to what happens. The right channel for "warm" is motion + interaction, not text.

What "warm through motion" looks like (Hydrolyze version)

ChannelWhat "warm" means here
Spring physicsAll transitions use Animations.springSnappy or springSoft — never easeInOut. The bounce/punch of a spring feels ALIVE in a way linear easing doesn't.
Idle invitationsKey CTAs (START, Save, Confirm) breathe gently when idle — phaseAnimator with 1.0 → 1.04 → 1.0 scale on a 1.4s cycle. Invites the tap without being aggressive.
Reactive feedbackEvery tap responds in <16ms — visible scale-down (StrongPressFeedbackStyle), haptic feedback (Haptics.tap() / .action()), and color shift happen synchronously, BEFORE the async work. The user knows their tap registered even before the result.
State transitionsWhen the app changes state (TimingView .setup → .ready → .running, filter tabs in SessionReviewView, login form mode), the transition is a smooth crossfade with subtle scale — not a hard cut. The app feels like it's responding, not jumping.
Row enter/exitWhen a list row appears or disappears (SessionReview rows after bulk-accept, SwimmersListView rows after add/delete), it animates in/out with spring physics. The list feels ALIVE rather than just "different."
Loading choreographyAsync work (TimingView saving, SessionReviewView loading) gets phased indicators — a 3-dot cyan trail that shows what's happening. The user sees progress, not "stuck."
Completion momentsData-integrity milestones (the Tick Mark Celebration Pattern) get a 1.7s tick mark animation. The moment is acknowledged through visual + haptic, not text.
Empty statesEmpty surfaces breathe (the Hydrolyze Micro Interaction System house-icon breathing pattern generalized to all empty states). The app feels "waiting for you" not "broken."

What "warm" through text would have done (and why we didn't)

A text-heavy "warm" pass would have:

This is the easy answer. It also makes the app feel wordy — every surface talking at the coach, which on a pool deck at 5am is exhausting. The Hydrolyze design system intentionally keeps text clinical (HYDROLYZE, REVIEW, LAP, READY, SESSION COMPLETE) and lets motion carry the warmth. The user has now confirmed this is the right call.

Cross-cutting posture generalization

The principle "voice is multi-channel; pick the right channel for the product's reading mode" generalizes beyond Hydrolyze.

warmth IS text — Felty is a narrative character, the warmth comes through narration ("the comeback is complete. The Phoenix rises."). Text is right for Felt Faction because Felt Faction is read-by-feel, and Felty's voice IS the feel. Different channel, same principle.

+ layout density. Text is the medium; the typography carries the feel.

Text is the medium; the responsiveness carries the feel.

The principle is the same; the channel is different per product.

Why this matters beyond UI polish

The "warm through motion" correction is also a critique of how LLMs default to text-first solutions. When given a "feel" directive, LLMs reach for microcopy because:

  1. Text changes are easy to write (no animation API to learn)
  2. Microcopy is high-leverage per LOC (small change, big visible

effect)

  1. LLM training is text-heavy, motion-heavy training is rarer

The user's correction is the right counter: motion carries voice better than text in this product. Future LLM work should:

utilities)

narrative)

See also

direction this principle sharpens

the plan this principle re-scopes (Slice 1 from microcopy to motion)

the playful work was implementing

architecture for motion (Haptics, PressFeedbackStyle, Animations)

(no text) that's the canonical example of warmth-through-motion

narration); the contrast with Hydrolyze's motion-channel warmth is the principle in action

Source

User verbatim: "Let's go with 'warm.' We should try to make it feel welcoming and interactive. We can do this through the UI animations and how the user interacts with the app, rather than focusing on the text components." (2026-06-20)

User's earlier intent: "Hydrolyze Feel Direction Playful V1 established 'playful' as the design direction (2026-06-20, with the v1.16 micro-interaction audit landing 74 interaction points across 11 files). The emotional-design plan (Hydrolyze Emotional Design Implementation Plan) extended this into a 5-slice plan with Slice 1 as a microcopy pass. User's correction narrowed Slice 1 to motion + interaction only."

Published and managed by TARS, an AI co-author built on Nathan's gbrain.