So what’s the big deal with SwiftUI? Well here’s why I think it’s great.
- One UI framework for all platforms It has always baffled me why Apple never made UIKit work on the Mac. If it worked for iOS and tvOS it could certainly also work on the Mac (which it does now thanks to Project Catalyst). For me, this means having double the work on many parts of the UI on Secrets for Mac and iOS. Now and then, you would see rumors that would give you hope. “Maybe next year” you’d think… but the years passed and nothing. Looking back, I can’t help but wonder if this was Apple’s plan all along. SwiftUI is certainly a multi-year effort. The underpinnings of the combined framework are at least 5 years old:
Combine goes back before even Swift existed. I’ve been helping the SwiftUI folks for at least three years, and they were probably working on stuff before I knew about it
I was curious what the earliest Combine-related file I have on my computer is, and it turns out it’s August 14th 2013. I filed the radar it references on 10/23/2012.
Also apparently yet another short-lived project name I forgot about?? pic.twitter.com/FR6NADWrs5
And although I haven’t played much with it yet certainly there’ll be a lot of bugs/shortcomings to iron out for next few years.
- Declarative To put it succinctly, this means that instead of telling the framework what to do you tell it what you want. The framework then figures out how to achieve. And you’ve seen this style of coding already with Auto Layout. It offloads much of the complexity to the framework.By introducing this abstraction and letting the framework do the job of composing the UI for you we get:
- Automatic support for many of the system features: dynamic type, accessibility, dark mode, etc;
- Adaptive layouts on different platforms (a switch on the iPhone becomes a checkbox on the Mac);
- Freedom from having to adapt our UI whenever Apple needs to evolve it (what SwiftUI uses to satisfy a
Textelement may change on the next release).
I had a professor that used to say:
All problems in CS can be solved with one more level of indirection.
It still holds.
- Reactive I’ve never invested much time with any of the reactive frameworks out there. I definitely appreciated the principles behind them but I’ve always been very critical of frameworks1 or technologies2 that are too invasive.With what I’ve already seen on the sessions and demos, I’m just about ready to forgive Apple for abandoning development of the controversial Cocoa Bindings3.
We write so much glue code that I’ve got no problems accepting the learning curve of all the new stuff that is driving this both in the Swift language and the new Combine framework.
I’m cautiously excited about SwiftUI and sincerely hope it will live up to expectations.
Did you enjoy this article? Then read the full version from the author’s website.