feelsfast.fyi

42 terms

Glossary

A · 2 terms

Active phase
The mental state during which a user is engaged with an interface — typing, clicking, reading. Time perception compresses; waits feel shorter. Transitions to the passive phase at roughly the one-second mark of an unbroken wait. See Concepts §2
Animation timing for state changes
The duration and easing curve applied when a UI moves between states. Card et al. 1991's ~10 Hz / 100 ms-per-frame budget is the underlying recommendation; the three-duration family (~100 / ~200 / ~400 ms) covers micro-feedback, state changes, and large layout shifts respectively. See Concepts §3

B · 1 term

Background sync
Cache-and-queue strategy that moves an operation off the user's perceived path: the action commits to a local queue immediately, the network request fires whenever connectivity allows. Doesn't shorten the wait — moves it. Failure mode: silent rollback when reconciliation fails, and unbounded queues that grow when sync repeatedly fails. See Concepts §6

C · 2 terms

Cancellation affordance
A visible control to stop an in-progress operation. Especially important for AI streaming and long agentic workflows. The ~100 ms perceptual-frame contract applies to the visible state flip on press (input re-activating, cancel disappearing), not to the underlying abort propagation — the two timelines must be designed separately. Partial state should be preserved; theatrical cancel that wipes the partial response is a second violation on top of the first. See Concepts §10
CLS — Cumulative Layout Shift
Web Vitals metric for visual stability. Scored 0 to 1; below 0.1 is good. Caused by content reflowing as it loads; the fix is reserving layout space (image dimensions, skeleton screens that match the final layout).

D · 3 terms

Determinate progress
A progress indicator that reflects real, measurable progress through a known total. Strongly preferred over indeterminate spinners when the duration can be estimated (Myers 1985, ~86 % preference). Backwards-decelerating bands buy a further ~11–12 % perceived speed-up (Harrison et al. 2010). The preference holds for might-be-inaccurate bars; not for deliberately-inaccurate ones. See Concepts §8
Direct-manipulation latency
Sub-100 ms latency budget required for drag, scrub, pan, zoom interactions — far tighter than the canonical 100 ms perceptual frame for content updates. Jota et al. 2013 measured ~33 ms JND for dragging and ~82 ms for tapping; Deber et al. 2015 confirmed; Ng et al. 2012 showed experienced users detect single-millisecond improvements. No perception layer fixes lag on these surfaces — real engineering is the only fix. See Concepts §6
Doherty threshold
The ~400 ms response-time boundary at which user productivity rises non-linearly. Established by Doherty & Thadani's 1982 IBM technical report. Underlies the modern INP target of 200 ms. See Concepts §3

E · 2 terms

Empty state
A view rendered when a content collection has zero items. Loading-empty (data has not yet arrived) and settled-empty (data arrived, collection is genuinely zero) must look obviously different — if they don't, the user can't tell whether to wait or to act. The settled-empty state needs to say three things: the load completed, the area is empty, and what the user can do about it. See Concepts §8
Engaging loading
Loading affordance for the 10 s+ band that fills the wait with information (Slack-style boot, agent narration, FIFA-style mini-game) rather than a static spinner. Prospectively shortens via Block & Zakay's filled-duration; retrospectively can lengthen via Ornstein's storage-size theory. The trade should be conscious. Honest when the engagement is information about the system; deceptive when it is decoration around it. See Concepts §8

F · 2 terms

Filled vs. empty duration
William James's observation that empty intervals feel long while passing and short in memory; filled intervals do the reverse. Skeleton screens exploit this: they fill the prospective wait so it registers as shorter. See Concepts §2
FMP — First Meaningful Paint
Older Web Vitals metric capturing when the primary content of a page is visible. Largely superseded by LCP. Useful historical context for tools that report it.

G · 2 terms

Gamma jitter
Right-skewed random latency drawn from a gamma distribution (Erlang-2 in this project). Models real-network response times — most cluster near a median, a fat tail extends beyond. Used by the demo runner so naive/tuned comparisons feel realistic.
Geometric-mean indifference threshold
The point at which a user genuinely cannot tell which of two waits is faster. Sits at the geometric mean of the two durations, not the arithmetic mean. Translation: to feel as fast as a 2-second competitor when you load in 5 seconds, you need to ship sub-3.16 s, not sub-3.5 s. See Concepts §5

I · 1 term

INP — Interaction to Next Paint
Web Vitals metric (replaced FID in 2024) for interaction responsiveness — the worst response time across all interactions on a page. Below 200 ms is good. Maps directly onto Doherty's 400 ms productivity cliff with margin to spare.

J · 1 term

Just-Noticeable Difference (JND)
The threshold at which a stimulus change becomes detectable to a human observer. For latency in the sub-30-second range, the JND is roughly 20 % (Weber–Fechner). A 5 % improvement is wasted; a 25 % improvement is felt. See Concepts §1

L · 2 terms

LCP — Largest Contentful Paint
Web Vitals metric: when the largest above-the-fold element is rendered. Below 2.5 s is good; above 4 s is poor. Captures user-facing load speed better than older metrics like FCP.
LQIP — Low-Quality Image Placeholder
A small, low-resolution version of an image displayed first; the full image swaps in once it has loaded. Often combined with a blur-up filter so the transition feels organic. Anstis on edge contrast: a higher-contrast placeholder reads as faster than a soft ghostly one, even when both swap to the same final image at the same wall-clock moment. See Concepts §5

M · 2 terms

Miller's thresholds
Robert B. Miller's 1968 taxonomy of acceptable response times across 17 transaction types. The source under Nielsen's clean 0.1 / 1 / 10-second trichotomy; Miller's actual table is more granular. See Concepts §3
Mousedown / pointerdown
DOM events that fire when a button is pressed, before it is released. Listening on these instead of `click` buys ~100–150 ms of head-start (Fitch). Touch equivalents need to gate against `touchmove` so scrolling does not trigger the action.

O · 1 term

Optimistic UI
Render the user's action as if it succeeded, then reconcile with the server when the response arrives. Works well at ~99 % success rates. Failure modes: silent rollback, generic error toasts, and loss of mid-flight user input.

P · 7 terms

Passive phase
The mental state during a wait the user has noticed. Dopamine production drops, time stretches: humans overestimate passive duration by ~36 % (Fitch). Most loading-state patterns are about managing this phase. See Concepts §2
Perceptual frame
The ~100 ms time constant for sensory input to register, from Card-Moran-Newell 1983. Responses inside the frame feel caused by the user; responses outside it feel like a delay.
Performance scaler
Adaptive perception calibrated to each user's actual response times. Measure the round-trip times the user is experiencing; scale skeleton durations, animation timings, and loading thresholds accordingly. From Eli Fitch's talk. See Concepts §7
Pre-action feedback
The system's acknowledgment that an input was received — a `:active` state, a button press animation, a focus-ring move. Should land within ~50 ms; the cheap ones cost nothing and prevent the double-tap failure mode.
Predictive preloading
Begin loading a resource before the user has confirmed they want it — on hover, on mouse deceleration, on form-step proximity. Idempotent and reversible operations only; not for side-effects with cost (charging cards, sending email).
prefers-reduced-motion
CSS media query / accessibility setting indicating the user has asked for less motion. Replace shimmer pulses with static blocks, slides with opacity changes. Always honour it; never animate around it.
Prospective vs. retrospective duration
Block & Zakay's 1997 split. Prospective duration is judged in the moment — empty time feels long. Retrospective duration is judged after the fact — empty time feels short. Skeleton screens shorten prospective duration; engaging loading sequences can lengthen retrospective duration as a side effect. See Concepts §2

R · 1 term

Route prefetching
Begin loading a target route's bundle and data before the user navigates. Modern frameworks (Next.js, Remix, SvelteKit) prefetch on viewport entry or hover by default; tuning the trigger is a perception-layer lever.

S · 4 terms

Skeleton screen
A placeholder layout that matches the shape of the final content. Fills empty time so the prospective wait registers as shorter. Generic shimmers do not work — the skeleton must match the layout the content is going to take. The often-cited "30 % faster than spinners" figure is later folklore; the load-bearing research is the prospective/retrospective asymmetry (James 1890, Ornstein 1969, Block & Zakay 1997). See Concepts §8
Spinner
Indeterminate-feedback animation for the narrow 1–2 s band with unknown duration. Below 1 s, no loader — tip-the-hand. Above 2 s, switch to a skeleton or determinate progress. The 500-ms-delayed pattern (gate every spinner behind a 500 ms timer) enforces the tip-the-hand rule cheaply: if the operation resolves before then, no spinner appears at all. See Concepts §8
Stale-while-revalidate
Cache strategy: serve the stored response immediately, validate it in the background, update on completion. The user sees instant feedback even on cache hits that are about to expire.
Streaming SSR / Suspense
Server-rendered pages delivered in chunks as data becomes available, instead of all at once at the end. React Suspense + the App Router's streaming primitives make this composable per-component.

T · 7 terms

Thinking state
The pre-first-token indicator on AI surfaces — typically animated dots or a pulsing avatar. Distinct from a generic spinner because it implies process, not stall. Belongs to the responsive (100 ms – 1 s) band before token streaming begins.
Time band
One of four cognitive-transition zones used throughout this site: 0–100 ms (instant), 100 ms – 1 s (responsive), 1 – 10 s (engaged), 10 s+ (long). The Skill installs this as a decision rule.
Time-aware feedback
The decision rule for which loading affordance to show: nothing under 1 s; spinner 1–2 s; skeleton or determinate progress 2–10 s; engagement 10 s+. Distilled from Miller 1968, Nielsen 1993, Fitch, and Myers 1985. See Concepts §8
Tip-the-hand rule
If the wait will resolve under one second, do not show a loader. Showing one tells the user they are waiting and pulls them out of active mode prematurely — a wait that would have gone unnoticed becomes a felt one. See Concepts §4
Token-by-token streaming
Reveal AI-generated text as tokens arrive instead of after the full response is ready. Pace at a natural reading rhythm — instant per-token reveal feels jarring.
Tool-call transparency
Surface what an agent is doing during a tool execution — "Reading file…", "Searching…", "Running tests…". Compresses retrospective duration (Block & Zakay 1997) and builds trust during long agentic workflows.
TTI — Time to Interactive
The point at which layout has stabilised, key webfonts are visible, and the main thread is available enough to handle user input. The metric Eizenberg's argument anchors to — "looks fast" without TTI is a polished lie. See Concepts §6

V · 1 term

View Transitions API
Web platform standard for cross-document and same-document animated transitions. Lets the browser handle morph-between-states animation with very little author code. Modern alternative to manually orchestrated route transitions. Gotcha: the API does not respect `prefers-reduced-motion` automatically — the author must short-circuit `animation-duration: 0s` or skip the `startViewTransition` call entirely when the user has asked for less motion. Easy to miss; ships as a silent accessibility regression. See Concepts §7

W · 1 term

Weber–Fechner law
Foundational psychophysics: the smallest detectable change in a stimulus is roughly proportional to the magnitude of the stimulus. For latency, this implies the JND is ~20 % over a wide range — the basis for the rule that improvements under 20 % are mostly invisible. See Concepts §1