
Why your product feels slower than it is.
It's not always latency — it's flow, feedback, and friction between steps that make systems feel slow.
Written by
David Okafor

Speed is a feeling before it's a metric.
You can run the benchmarks. You can shave milliseconds off your load time. You can pass every Lighthouse audit. And your product can still feel slow.
That's because perceived performance and actual performance are different problems. One lives in the data. The other lives in the experience — in the gap between what a user expects to happen and what they see happening. That gap is where speed dies.
The real culprit is almost never the thing you're measuring.
Latency gets the blame. But most products that feel sluggish aren't slow because of network requests or render times. They're slow because of dead moments — the brief windows where nothing is happening and the user has no idea what to expect next.
No loading indicator. No transition. No confirmation that something is in progress. Just silence. And in that silence, the mind fills in the worst case: something broke, something's stuck, something's wrong.
Feedback is faster than speed.
The fastest thing you can do for perceived performance isn't to make things load faster. It's to acknowledge the action immediately. A button that responds on press — even if the result takes two seconds — feels faster than a button that freezes for half a second before doing anything.
This is why skeleton screens outperform spinners. Why optimistic UI feels snappy even when it's not. Why a progress bar makes a wait tolerable in a way a blank screen never does. The system is communicating. That communication is the experience.
What to fix before you optimize.
Before you spend time on performance optimization, ask whether the experience gives users confidence. Confidence that the action registered. That the system is working. That they're in the right place.
If the answer is no, no amount of speed improvement will fix the feeling. You'll have a fast product that still feels broken.
Fix the feedback first. Then fix the latency. In that order.
