At WWDC 2019, Apple unveiled SwiftUI and Catalyst to the world. After months of tinkering, developers are starting to see the avenues for success with each.
Catalyst is the name Apple gave its ‘Marzipan’ project, which is a means to port iOS apps to the macOS platform. In practice, it’s a box to check in Xcode; Apple takes care of the heavy lifting on things like keyboard support for the desktop.
SwiftUI is a lot more MVVC than we’ve come to expect from Apple, which was all-in on the Model-View-Controller model. It’s insanely easy to get a good app framework up and running with SwiftUI, though – and this underscores the dividing line between the two.
By and large, developers who spoke with AppleInsider feel Catalyst is best for porting simple apps, and SwiftUI is great for creating new apps. But it’ not always that simple. When Apple launched its four ‘Marzipan’ apps (before it was called Catalyst), it subsequently promised they’d be significantly improved before Catalina arrived. macOS Catalina betas don’t show much has been done with those apps, though.
“If Apple can't make really great Mac apps using Catalyst, what hope do third-party developers have?” asks Andrew Marsden.
Developer Matthias Hochgatterer adds “[Catalyst] is not designed to make good Mac apps. It's designed to extend the reach of iOS apps to Mac users. There might be some exceptions, but I don't think we will see any good Catalyst apps."
Paul Kafasis from Rogue Amoeba says “while Catalyst is a bridge to the future for existing iPad apps, SwiftUI is the way to make new multi-platform apps.” One developer, speaking anonymously to AppleInsider, says they’re not all that interested in Catalyst because it only allows iPad apps to port to macOS. If you only have an iPhone app, Catalyst would require an iPad version first – then a port to macOS.
In that case, SwiftUI may be the best option, as an iPad variant of an iPhone app is technically a new app. We won’t say SwiftUI is the best choice for any new app, only that it is likely the best choice if you’re going cross-platform. Apple says “SwiftUI is truly native, so your apps directly access the proven technologies of each platform with a small amount of code and an interactive design canvas.”
The obvious unstated goal is to bolster the entire Apple platforms ecosystem with Catalyst, and make app creation simpler via SwiftUI. Unfortunately, there’s only one bridge spanning across the landscape. If you have an iPhone app, you’ll need to support iPad to get to macOS unless you create a unique version for the desktop from scratch. watchOS and tvOS are outliers that don’t require support.
Unfortunately, SwiftUI and Catalyst are still very beta. There’s limited documentation, and widespread reports of buggy issues across the Xcode 11 and iOS 13 betas. We know the path, but Apple has done a poor job of building a solid road for us to travel.