Most of the things in Spotify are done through the server. There are two major reasons why:
- customer-facing reason: Spotify Connect https://support.spotify.com/us/article/spotify-connect/ We have to be able to know which device you're playing on, show it in device pickers and even let you play stuff on devices not in the same network
- second major reason: most of the decisions of what to play cannot be made on the client. This has to do with licensing and related analytics. Even different types of devices will have different licensing applied to them. So to even simply say "play next song" you have to tell the server you're going to listen to a track. And that track might not be available for the specific combination of account/device/country/phase of moon which client has no way of knowing about.
Source: I work at Spotify, but I can't answer any questions about CarThing (didn't work on it, and it would be NDA anyway)
- customer-facing reason: Spotify Connect https://support.spotify.com/us/article/spotify-connect/ We have to be able to know which device you're playing on, show it in device pickers and even let you play stuff on devices not in the same network
- second major reason: most of the decisions of what to play cannot be made on the client. This has to do with licensing and related analytics. Even different types of devices will have different licensing applied to them. So to even simply say "play next song" you have to tell the server you're going to listen to a track. And that track might not be available for the specific combination of account/device/country/phase of moon which client has no way of knowing about.
Source: I work at Spotify, but I can't answer any questions about CarThing (didn't work on it, and it would be NDA anyway)