I’m sure you’re aware I’ve been getting into SwiftUI this year, after my last interaction with the Xojo CEO, I decided to truly dedicate a block of time to accelerating my transition.
I truly believe that SwiftUI is the future.
If you have hand coded web pages, you already understand the concept behind it. Electron (good or bad) clearly paved the way by leveraging HTML/CSS to create adaptable UIs.
SwiftUI takes that concept but uses native UI elements. With platform conditions you can tweak (within reason) the UI for different devices, yes you can create Mac, iPad, iOS & watchOS apps from one single project. Apple even show you how to do it.
There is an open source project for SwiftUI to bring it to other platforms also.
Seeing that dumb thread about not only control names being different per target with Xojo, but even function or event names too… Along with having to have separate projects per platform. It really feels like Xojo was out chasing fairies rather than playing the game.
Bindings are awesome. Add a property to the view class, binding it to a control and when it is updated from whereever, it auto updates that control for you. That’s low code.
The most incredible thing about SwiftUI, is using live data in the UI designer. Yes you heard me, I made a Permissions Reset example, which the UI preview actually pulled file meta data, spotlight data and bundle data into the preview. With Xojo, we have to do the “loop until happy { tweak UI; run project; quit demo app }”
It’s not all awesome in SwiftUI world
It is not without its faults. SwiftUI on the Mac really feels like an afterthought not a primary target. Some things don’t work, some things don’t work right and some things are weirdly blocked from the macOS, like the ability to tint a Gauge with a gradient.
The AppKit team recently added NSComboButton NSComboButton | Apple Developer Documentation But SwiftUI doesn’t even support the age old NSComboBox, let along something added to the Mac in 2022. To me it shows how disorganized or how little Apple’s leadership care about the platform.
I pointed out how easy it was to embed views into a scrollview, but setting the anchor of a scrollview, only works on macOS 14 Sonoma or higher.
Then there’s the UI paradigm, it works very differently to how you handle UI with Xojo, to the point that you have to start thinking differently, not just in layout terms, but interaction terms as well. I’m slowly pushing myself to overcome “that’s how I’ve done it for 25 years”.
I also want to say that several people had warned me that SwiftUI is not really ready for Mac use, not just a Xojo MVP, but also an ex-Xojo employee. I 100% agree with both of them. I’m going to ride it out a little while longer, because I believe it is the future (that and I don’t want to have to learn something else).
It is more clear to me than ever that Xojo is on the wrong path, and you know what… I think the CEO has known that for a long time.