Nobody agrees on who invented the loading spinner, and everybody agrees it has ruled their life since roughly the dial-up era. We asked around — colleagues, old teammates, a few people we cornered at meetups — for their honest, unfiltered relationship with this small rotating shape.
The early believer: “I remember genuinely thinking spinners were a good UX pattern. This was 2011. I was wrong about a lot of things in 2011.”
The skeptic: “A spinner tells you literally nothing. Is it loading? Is it stuck? A progress bar at least lies to you with some dignity. A spinner just spins.”
The perfectionist: “I spent an entire sprint making our spinner animation buttery smooth — 60fps, GPU-accelerated, gorgeous easing curve. It was spinning in front of a request that took four seconds because of an unindexed database query. I polished the coffin instead of fixing the thing killing the patient.”
The skeleton-screen convert: “Once I saw a well-built skeleton screen, I understood spinners for what they are: a way of telling the user ‘we have given up on communicating anything useful to you, please just wait.’ I have not looked back.”
The realist: “Here’s my actual hot take: spinners aren’t the problem. Needing a spinner is the problem. By the time you’re reaching for one, you’ve already lost the performance argument.”
What we took from all of this: the loading spinner isn’t really the villain of web performance. It’s a symptom, a small honest confession rendered in CSS, admitting that something upstream is taking longer than it should. The best performance work doesn’t make prettier spinners. It makes them unnecessary.
