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


This week, I’m offering my 2-eBook concurrency bundle for 55% off

📘 The Complete Swift Concurrency Toolkit explains every facet of Swift Concurrency from async/await to the latest Swift 6.2 actor isolation changes.

📕 Advanced Swift Concurrency Training takes you through 12 increasingly complex real-world problems, allowing you to lock-in practical knowledge.

By the end, you’ll have a finely-honed concurrency killer-instinct.

Get the Swift Concurrency Bundle for $29


Claim your free month to unlock this article, and much more:

🌟 Access Elite Hacks, my exclusive advanced content
🚀 Read my free articles a month before anyone else
🧵 Master concurrency with my full course and advanced training

Get 30 day free trial

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