Evolutionary UI: Change as a first-class citizen in the modern frontend world

This year, I was fortunate enough to speak at the O’Reilly Software Architecture Conference in Berlin. Together with Giamir Buoncristiani, I showed how the principles of Evolutionary Architecture can be applied to UI development to create what we call Evolutionary UI. We relied heavily on our experience leading the ThoughtWorks Frontend Community in preparing this material, which allowed us to incorporate not only our own observations, but the learnigs of hundreds of our colleagues worldwide. We presented a significantly reworked and improved version of this talk, which we previously gave at JSDay.

Thanks to Neal Ford and the ThoughtWorks Frontend Community for their kind feedback on our work.


Allowing for change is especially important when designing your frontend applications, where ever higher user expectations meet the fast-paced JavaScript ecosystem.

In this talk, we will show how the principles of evolutionary architecture can be applied to UI to prioritize changeability. We’ll consider several approaches to making a modern UI application more evolvable, such as the controversial microfrontends pattern, and examine specific “fitness functions” that will keep you and your team honest to your requirements without sacrificing evolvability. We’ll also discuss the tradeoffs you make when you choose a more evolutionary frontend architecture, and provide a framework for thinking about how much future change you’ll need to account for.