Venting, professionallyEngineering·5 min read

Your Loading Spinner Is Lying to Your Users (A Front-End Rant)

Deep breath. Here we go.

It flashes for 40 milliseconds on my machine and I have declared victory. Deep breath. Let us talk about loading states.

Rant, summarised

  • A spinner you have never watched for more than 100 ms is untested.
  • Slow the API on purpose and watch: flicker, layout jumps and dead buttons show up fast.
  • Fix the ugly ones, keep the delay rule for next time.

The flash of nothing

Fast API, fast UI, everyone is happy. Then a real user on a real connection sees your loader for four seconds, and every design decision you skipped presents its invoice.

It is never the framework. Except when it is the framework.

Vimal Kumar

What to look for once you slow it down

  • Layout jumps when content replaces the spinner. Reserve space, use skeletons.
  • Buttons that stay clickable while a request is in flight.
  • Text that says "Loading..." forever when the request fails.
  • Spinners that appear for 50 ms and flicker. Delay showing them slightly.
  • A page that is blank, not loading, when the response is empty.
A delay rule, conceptually
JSON
{
"urlPattern": "*/api/products*",
"delayMs": 3000
}

The practical bit

Add a delay to the endpoint from the dashboard or the DevTools panel, reload, and use the page like a person on a bad train connection. Fix what annoys you. Repeat with a forced 500 for the error branch.

Now go break something safely.

Written by

Vimal Kumar SEM & Front-end

Vimal builds the front-end and runs the search and campaign side of ProxyCeptor, which means he cares about how a page feels and how people find it. He writes code-first guides for developers: the snippet comes before the theory, and the loading spinner gets a fair trial. Expect practical steps, honest opinions about browsers and a soft spot for a well-behaved fetch call.

“Now go break something safely.”

More from Vimal →

Read next

Intercept your first request in under a minute

Create a free ProxyCeptor account to mock, delay, block and rewrite API traffic, then share the same rules with your team.

🚀 Mock, delay and break API calls in ChromeTry ProxyCeptor free