


Now, at the beginning of 2021, we have created one maintainable codebase for both of our clients with the high standard of accessibility and speed of development we hoped for. We knew we would have a lot of work to do to bring our Web Player up to those power users’ exacting standards. Desktop had (and has) many more users than Web Player, and Spotify’s Desktop client is the place most of Spotify’s “power users” call home. Since our Web Player is continuously deployed, we could ship and test with real users every change made towards our final goal. We settled on a bold solution: focus on iterating on top of the existing Web Player codebase until it reached a Desktop-grade feature set. We knew we were embarking on a long-term project, so our biggest priority was to de-risk delivery and avoid trapping ourselves into a big bang rewrite. We considered several approaches and did tech spikes to test many of the ideas - component sharing, feature sharing - always trying to find the right balance between fixing our technical debt problem while continuing to improve the experience for our users. The team figured out that converging the clients into a single codebase and user experience would be the best way forward. We had many discussions on how to solve these problems. Making the Desktop application accessible, in contrast, would be nearly impossible.

We discovered that making our Web Player accessible was going to be a difficult, yet achievable, challenge.

In addition, there were accessibility issues in our clients that we needed to solve. Due to having to implement many of the features twice at different levels of complexity while dealing with context switching, we were not shipping new features at the pace we would have liked to. But those same engineers were having difficulties with the Desktop client, which used a very diverse range of web technologies (thanks to Conway’s law). The Desktop was our rich, full-featured experience and the Web Player was a much lighter, simpler experience.īecause the Web Player was implemented with a modern React app architecture, we had success onboarding new engineers to the Web Player code. Towards the end of 2018, our team was the owner of a recently built Web Player, as well as Spotify’s Desktop client. We couldn’t build everything we wanted to for our users with our old setup, so we decided to do something about it. For the past couple of years, we’ve been on a mission to modernize our Spotify clients by creating one single desktop UI for both the Desktop application and the Web Player.
