Zum Inhalt springen
← All posts

· 3 min read

Why the player never shows a spinner

A spinner claims progress it has not measured. We built the connection animation so that its duration is the connection, which means it cannot lie.

Most players show a spinner while a stream opens. A spinner has one job — say "something is happening" — and it does that job identically whether the stream is two seconds away or already dead. It is the same animation either way, which makes it worthless exactly when you most want information.

The animation is the progress

When you press play, the station artwork desaturates and a thin line traces its edge. That is not on a timer. It is driven by the browser telling us what the audio element is actually doing: connecting, buffering, playing, failed.

If a station takes four seconds to open, the animation takes four seconds. If it opens instantly, so does the artwork. Nothing is being estimated, so nothing can be misreported.

Failure should look like failure

When a station cannot be reached, the artwork stays desaturated and goes cold, and the traced line visibly breaks where it stopped. A dead station looks dead. You get a way to try again and a list of similar stations, rather than an animation that spins forever while you wonder whether to wait.

Liveness, in the resting state

Once audio is flowing, the player shows three things: an ON AIR mark, the local time where the station is broadcasting, and how long you have been listening. That last number only counts forward and resets when you change station — which is the honest difference between radio and a music library. You cannot rewind it, and neither can we.