Building Spotify’s New Web Player

José M. Pérez
6 min readintermediate
--
View Original

Overview

This article details the development of Spotify's new web player, focusing on the reasons for its complete rewrite and the lessons learned throughout the process. It highlights the architectural changes made to improve user experience and performance, while also discussing the technologies employed in the new implementation.

What You'll Learn

1

How to leverage A/B testing to determine essential features for a web application

2

Why adopting a Single Page Application architecture can enhance user experience

3

How to implement a Minimum Viable Product (MVP) using existing APIs

4

When to consider rewriting an application instead of iteratively improving it

Prerequisites & Requirements

  • Understanding of web application architecture and user experience principles
  • Familiarity with React and Redux for frontend development(optional)

Key Questions Answered

What were the main reasons for rewriting Spotify's web player?
The decision to rewrite the web player stemmed from the outdated architecture that hindered maintenance and feature development. The previous system's complexity and reliance on outdated libraries made it difficult to iterate quickly, prompting the need for a simpler, more efficient architecture.
How did the new web player improve user experience compared to the old version?
The new web player outperformed the old version in all key metrics, offering faster load times and a more responsive interface. By adopting a Single Page Application architecture, the team was able to streamline the user experience and reduce clutter, leading to higher user engagement.
What technologies were used in the development of the new web player?
The new web player is built on HTML5 standards, utilizing React and Redux for its architecture. It also employs Encrypted Media Extensions (EME) for music playback, ensuring compatibility with modern browsers and enhancing performance.
What was the approach taken to determine the feature set for the new web player?
The team conducted A/B tests on the existing web player to identify which features were essential for user engagement. This data-driven approach allowed them to define a bare minimum feature set that would satisfy user needs while ensuring a streamlined experience.

Key Statistics & Figures

Number of developers maintaining the new web player
5 developers
The new web player is maintained by a dedicated team of 5 developers, compared to over 40 developers for the previous version.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Frontend
React
Used for building the user interface of the new web player.
Frontend
Redux
Used for state management in the new web player.
Frontend
Encrypted Media Extensions (eme)
Used for music playback in the new web player.
Backend
Spotify Web API
Provides access to Spotify's data and services for the new web player.

Key Actionable Insights

1
Implement A/B testing to refine feature sets in your applications.
By testing different versions of your application with real users, you can gather valuable data on which features enhance user engagement, allowing for more informed decision-making in product development.
2
Consider adopting a Single Page Application architecture for better performance.
This architecture can significantly improve load times and user experience by reducing the number of resources that need to be downloaded when navigating between views.
3
Focus on building a Minimum Viable Product (MVP) to validate your ideas quickly.
Creating an MVP allows you to test your core features with users and gather feedback before committing to a full-scale development, reducing the risk of wasted resources.

Common Pitfalls

1
Relying on outdated libraries and frameworks can hinder development and maintenance.
As seen with the previous web player, using outdated technologies can complicate the development process and slow down feature iterations, making it crucial to keep your tech stack updated.