Customization vs. Configuration in Evolving Design Systems
This post details the evolution of Spotify's design system (Encore) by exploring the trade-offs between customization and configuration. It defines abstraction levels in frontend development and contrasts customization (external styles, low abstraction) with configuration (flexible components, high abstraction). Pros and cons for each approach are discussed, including autonomy vs. coherency for customization, and consistency vs. rigidity for configuration. Factors influencing the decision between customization and configuration are outlined: feature maturity, product maturity, timeline, and reusability. The post concludes by stating Spotify's general preference for customization due to its value of team autonomy, while recognizing configuration as a complementary tool.