SwiftUI - similarities and differences to JUCE/PROJUCER

I’d be interested to hear what Jules and others here think of the new Apple SwiftUI and how close it comes to his own views and aims of programmatic UI design differ or agree with Apple dev team’s aims and solutions.

I immediately (naturally) thought of PROJUCER when I saw the WWDC announcements and talks.

It’s a bit of a different paradigm to the PJ live code editor as the language style is declarative. It’s much more like React in that sense. But the live viewing and constant recompiling is a similar idea.

I think the killer thing about SwiftUI is that it’s actually part of the language so you don’t have to add a translation layer between your model code and UI code. If I understand correctly you simply mark variables in your code as “properties” and that exposes them to SwiftUI and tells it when to update the view. That’s very powerful and terse and doesn’t really pollute your model code with UI-specific hooks everywhere.

1 Like

I only had a quick look, but yes, it does look very much appeal to me as the kind of thing I’d like to see us do!

But like Dave says, it leans heavily on language and compiler tricks to make it work well, and I can’t see any easy ways we could do the same thing in C++. We could probably build a more clunky C++ equivalent, with a lot more boilerplate and less interactivity, but that may end up being worse than a separately scripted system.

All very interesting, anyway!


I had a quick look at SwiftUI, and also find it very encouraging.
I read that it will only be supported on iOS 13 and above, which is disappointing, but I guess it makes sense if they had to make use of compiler tricks which would require a new SDK. It would be nice to have something like this which was supported on older versions and different platforms.

Tbh within a year 85% of Apple users will be on iOS 13 which is why Apple can make backwards incompatible changes like this.

The main limiting factor for adoption is that some old devices don’t support the newest iOS. Not sure what devices are dropped with 13 but it’s often those that either don’t have many users or are unlikely to be using the latest and greatest apps.

In short, it’s a bit of a pain but I understand why Apple does this. Their upgrade process is probably also the smoothest of all OSes (providing they don’t break something major).

1 Like

It is actually in their interest to break backwards compatibility, because they sell expensive hardware… and so far their narrative in their user community works…

Imagine this in an ecosystem without the protectionism of their platform…

1 Like

I also understand it from the perspective of Apple… BUT I also see that this attitude drives the culture of must-have latest devices, with older devices ending up in landfill (I know that Apple have a “recycling” service now but its hard to know how much of it is greenwash…)

I always try and make things compatible with older devices/OS’s where feasible for that reason. But that is another topic…!


iOS/iPadOS (arghhh) are different beast than desktop. studios and live shows would stick with same setup until they have an issue.

It’s a greenwash in that it would only work where Apple is a one-step-solution.
Many countries got “Authorized Reseller’s” and don’t have any plans or nice recycling friendly upgrade paths.

This is true. I wonder what version of macOS SwiftUI will be compatible with?

iOS 13 seems to be compatible with iPhone 6S which was released in 2015. This gives basically a 5 year lifetime for OS support which I think is actually fair enough. If you commit to more than that you end up spending all your time working on compatibility and it’s impossible to move forwards.

We basically have a 5-year compatibility cycle too. Any more than that and dev just grinds to a halt, especially in a small team like ours.

The environmental impact is a good point but a bit of a different issue. I’m not sure how motivated by iOS releases hardware purchases are. It’s normally a newer camera or bigger screen that people want, or simply just to have the newest item.

If Apple really wanted to address this, they could just not release a new phone every year…


iOS 13 will be supported on my iPhone SE (released in early 2016). It’s not THAT bad I’d say.

1 Like