Atomic, presentational, reusable, functional components: UI architecture in the age of design systems

Modern web app architecture, whichever framework you use, focuses on separation of concerns and reusability. The current trend towards design systems feeds into this logic, abstracting a highly reusable presentational layer. Design is Atomic; code is neatly separated into presentational and container components. But what happens when these different paradigms meet in the middle? Should the app architecture be influenced by Atomic principles? How do we represent state changes in the design system?

We’ll look at a few problems that might pop up when applying these principles to a real world product (especially when working to tight deadlines) and share a few tips on how to avoid pitfalls and build a clean, scalable codebase, all while staying on speaking terms with the design team.