Theming Backend simulator Global model store Coordinators Deep linking Design system Skeleton views HTTP Client Repository Authentication library NSOperations abstractions Component framework
• Each component has its own layout • Custom collection view layout takes each component layout and converts it into one big UICollectionViewLayout. Composable collection view layout
Benefits • Reusable components allows us to share functionality throughout the app • Ability to compose bigger screens out of smaller components • Declarative layout system • Data-driven UIs are easy to unit-test • Animations are handled automatically • Allows us to transition to SwiftUI
• Investing time in building a good foundation can really pay off in the long term • Owning the abstraction gives you a lot of freedom • Use frameworks for the hard problems