> 1) Rendering.
> 3) Hover states.
It's all HTML and JS under the hood, each "app"(artists, playlist, etc.) differs in their stack - but web technologies. All wrapped up in CEF: http://en.wikipedia.org/wiki/Chromium_Embedded_Framework
There is even an ongoing list of core functionality which is now broken in the client: https://gist.github.com/TobiasBerg/350a06131d41d2996098
Bonus: try dragging a local file(any extension) into your Spotify client - and yes a HTML file with JS will render(hello alert())