Jacob’s Tech Tavern

Jacob’s Tech Tavern

The SwiftUI Design System War: Composition vs Progressive Disclosure

My most controversial high-conviction opinion

Jacob Bartlett's avatar
Jacob Bartlett
Mar 17, 2026
∙ Paid

I’m no stranger to taking some heat when publishing my work. I got crucified for Apple is Killing Swift, and annoyed a lot of people with 2025: The Year SwiftUI Died.

My 3rd-most-controversial post might surprise you: Swift Enums 🤝 Design Systems. It was a friendly little number where I talked about my favourite approach for building design systems in SwiftUI, with a progressive-disclosure-inspired approach to my view component initialisers.

This reads like pretty reasonable stuff, until the terminally-online permafrost of SwiftUI zealots read it and admonished me: “This is not idiomatic! You should be using view composition!”

They’re not wrong. My approach is not idiomatic. It’s pragmatic.

But you should really decide for yourself.

So I’m going to take my opinions and put them in my pocket, and coldly present the two approaches you can apply while building a design system in a large-scale SwiftUI project. You should use the approach that works for you.

  • Design Systems

  • The Sample Project

  • How to Composition

    • Custom ButtonStyle

    • Shared Components

    • Composition in action

  • Progressive Disclosure

    • The Initialiser

    • Progressive Disclosure in action

  • The Really Important Things With Design Systems

    • Keeping the design system simple

    • Extensibility

    • Documentation

    • #Preview

    • Is it marginal?

  • Last Orders

Paid members get lots of nice things:

⚓️ Access my full library of paywalled articles (including this one)
🚀 Read free articles a month before anyone else
🧵 Master concurrency with my full course and advanced training
🧑‍🚀 Get a free copy of my new eBook, “Land your iOS Tech Job”
❤️‍🩹 Support independent, sometimes funny, tech writing

User's avatar

Continue reading this post for free, courtesy of Jacob Bartlett.

Or purchase a paid subscription.
© 2026 Jacob Bartlett · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture