Perceived performance

How fast an interface feels, shaped by immediate feedback, visible progress, and whether useful content arrives before the wait ends.

make the wait feel shorterit loads fast but feels slowit is slow but somehow feels quickshow something while it loadspercieved performancemake it feel instantthe button should react right awaymake the app feel snappier

See it

Live demo coming soon

What it is

Perceived performance is the speed a person experiences, which is not always the duration on a stopwatch. Immediate button feedback, useful content appearing in stages, a stable skeleton, and an honest progress indicator can make the same wait feel shorter because the interface acknowledges the person and explains what is happening. Jakob Nielsen's old response-time limits are still the rule of thumb: about 0.1s feels instant, about 1s keeps a train of thought intact, and about 10s is where attention goes elsewhere.

Reach for it after fixing obvious real delays, or when work must take time, such as uploading a video or generating a report. Paint the response to an input first, preserve the previous screen during a transition, and reveal useful results as they become available instead of holding everything for one final render.

Gotcha: theatre is not speed. A skeleton that shifts into a different layout, a progress bar that stalls at 99 percent, or an optimistic success message for an operation that later fails destroys trust. Perception techniques should expose progress and reduce uncertainty, while the actual LCP, INP, and task duration still get measured.

Ask AI for it

Make this flow feel faster without hiding failures. Show a pressed, disabled, or pending state in the first painted frame after input, announce long operations through an aria-live='polite' status region, and use React startTransition to keep the current screen interactive during non-urgent rendering. Stream server-rendered content with React Suspense boundaries so each chunk flushes as soon as it is ready, use a dimensionally stable skeleton only where the final layout is known, and reserve optimistic UI for reversible actions with a visible rollback on failure. Measure the original and revised input response, LCP, and total task duration.

You might have meant

interaction to next paintfirst contentful paintlargest contentful paintlayout shift reservationstreaming rendering