Thursday, June 13, 2024

Catalyst (Not) at WWDC24

As far as I can tell, there were no Catalyst sessions this year. Apple hasn’t talked about it much since 2021.

The Mac developer page says:

Choose your app-builder technology

Another early choice to make is which app-builder technology to use for your interface. Apple’s app-builder technologies provide the core infrastructure macOS needs to communicate with your app. They also define the programming model you use to build your interface, handle events, and more.

The two technologies listed are SwiftUI and AppKit, with SwiftUI preferred. There is still a navigation bar item for Mac Catalyst, but I’m not sure Apple itself is using it much except for the apps like Messages and Home that it already ported. I wonder whether those will become SwiftUI in time. Initially, Catalyst sounded like a transition technology, but, as with Carbon, Apple didn’t paint it that way. Some in the iOS developer community like it. It started out with a lot more functionality than SwiftUI. But I don’t hear developers talk about it that much anymore, and Apple doesn’t seem to be using it for new apps. Freeform for Mac uses AppKit and nibs (along with SwiftUI). Journal curiously remains iOS-only.

Michael Love:

Catalyst appears to be dead, more-or-less.

Amber Neely:

Apple has announced a handful of new features coming to its Journal app this fall, but for reasons only it knows, the company hasn’t announced any plans to bring it to iPad.

Jesse Squires:

The iOS Journal app improvements look great.

Still a mystery why it is not available on iPad or Mac.

Even if it’s just catalyst or otherwise not customized for the other platforms, it would still be incredibly useful as is.

But instead, I’m going to be using iPhone Mirroring to use the journal app on my Mac. And that just seems so fucking dumb and absurd.

Previously:

Update (2024-06-14): See also: Steve Troughton-Smith.

Update (2024-06-18): Thomas Ricouard:

The last time Catalyst was ever mentioned at a WWDC was in 2021 lol.

Colin Cornaby:

I think what killed Catalyst is what’s slowly killing UIKit everywhere - it’s not flexible enough to adapt to multiple platforms. Does Vision Pro support UIKit? Sure. Is UIKit a good way to write Vision Pro apps? No. It’s not just the Mac. Across the board UIKit is generally not adapting well to other platforms. All the platforms support UIKit - and generally it’s half baked on all of them except iOS.

That’s not to say SwiftUI doesn’t have its own problems - but it’s still much more quickly adapting itself to new platforms. I don’t know if visionOS would be as easy to develop for without SwiftUI.

Update (2024-06-20): Marcin Krzyzanowski:

The way UITextView is broken on Catalyst, is beyond imagination. It is just plain broken editing.

Update (2024-08-08): pmdj:

I guess my forum question comes down to this: Is Mac Catalyst considered a platform for building macOS apps in its own right? Or are we “holding it wrong” and should we only treat it as a way of tweaking Mac ports of iOS/iPad-first apps? Should we expect APIs to disappear from the Mac Catalyst SDK with zero notice?

Quinn:

Regarding these XPC APIs, you are right that APIs shouldn’t just disappear without warning. […] I had a look at your bug and it’s clear that this was a mistake.

[…]

Regarding Mac Catalyst as a whole, Apple rarely makes forward-looking statements about our platforms, but this is a rare exception to that rule. Watch WWDC 2022 Session 102 Platforms State of the Union, and specifically Josh’s section starting at 3:43.

[…]

I’m not a UI programmer at heart. That’s why I’m a big fan of SwiftUI. With SwiftUI I can cons up a basic interface and have it run natively on both iOS and macOS, without having to worry about the limitations of Mac Catalyst.

Update (2024-08-09): Aaron Pearce:

When you still have to build your own toolbar library to fix Mac Catalyst UI bugs, it says a lot about how little Catalyst has improved.

Matt Gallagher:

This looks like it’s a MacCatalyst limitation. I might need to file a feedback: app-defined commands should be allowed to override the commands that MacCatalyst injects automatically.

Aaron Pearce:

Yeah, sadly I’m stuck with Catalyst due to decisions by Apple to only allow HomeKit access via that means…

There’s also a Catalyst-only API that I’d like to use, but that’s probably asking for trouble.

Update (2024-08-17): Aaron Pearce:

Trying to build a first class Mac app via Catalyst just seems demotivating right now. So many small bugs that should have been fixed after so many versions of macOS.

I feel like I’ve spent the last few weeks investing in workarounds to simple UI bugs caused by Catalyst.

The next step would be to invest even more time into a solution to let me mostly use HomeKit via native AppKit/SwiftUI. Only HomeCam wouldn’t get to use this as the camera view is UIKit based.

8 Comments RSS · Twitter · Mastodon


Popular Mastodon app Mona is built with Catalyst on Mac, and it is consistently one of the least reliable, and least "normal" apps on my system.

Nothing about it works like a "proper" Mac app - spellchecking was removed, because there was a "bug in Catalyst on macOS 14". To this day (on macOS 13 at least), you have to manually enable "check spelling while typing" in every post in order to get red squiggly underlining of misspelled words.

When you post something, the "posting" progress bar shows up in every window of the app, rather than just the window you wrote your post within.

Maybe it's a good technology to hack together a demo, but for a customer-facing purchased application, it's just Sparkling Electron.


I spent about a year working on a Catalyst app. You *can* make it close to behaving like a normal Mac app (by normal I mean an AppKit app) but you have to work *really hard* to do it. And you have to do lots of hacky things like embed a framework that has full access to the grown up AppKit APIs. And Catalyst is *loaded* with bugs. I filed tons of Feedbacks and got exactly 0 replies. Now I barely file feedbacks. Catalyst could have been good but the way they implemented it was ridiculous. They made public AppKit APIs private in the Catalyst environment for no good reason.

Apple keeps shitting on devs and doesn’t ever seem to learn from their mistakes. SwiftUI is the new Catalyst. Invest in it now on the Mac and you’ll get fucked like everyone who jumped on Catalyst in a few years. It’s the same story: a framework loaded with bugs that isn’t as good as AppKit. Until proven otherwise Apple seems incapable of producing anything of note UI framework wise since Jobs. He’s been dead for awhile now but they are still riding his coattails. They would have been much better off just improving AppKit (and perhaps adding the ability to embed UIKit views/controllers in AppKit apps) rather than building *two additional UI frameworks*. And shortly after introducing Catalyst/Swiftui they added a checkbox in xcode to run as iOSOnMac with no code changes required at all. Sure there are plenty of ways to bring iOS apps to the Mac now but they all suck.

Transition technology my ass. Let’s follow the steps:

1) You had a native AppKit app in Messages.

2) You rewrote it in Catalyst. So what’s the third step after deprecating Catalyst?

Do you go back go the AppKit app? Maybe you should but Apple won’t. Or do you get rid of get rid of the Catalyst version and rewrite it in SwiftUI (which wraps AppKit like Catalyst)? Apple will of course choose the SwiftUI option.

Either way you rewrote the *same app* twice in ten tears. Both times you rewrote the app in a framework that wraps the framework you used to write the original app you *already had*. Transition tech is the fancy way for saying we fucked up without admitting fault.

From now on I’ll hit the checkbox to have my iOS app run on Mac as an unmodified port. Or i’ll use a cross platform shim by a third party which could at least take me to other places like Windows/Android. What’s the fucking point of caring?


Catalyst is used in more built-in macOS apps, not only those two: Maps, Books, Podcasts, News, Voice Memos, Find My.


@galad And none of those look/work quite right. Maps is probably the best. I just opened Find My on my 1x secondary display and the popover text is blurry.


Of course, I am not saying they are good, just that they exist. Voice Memos and Find My are the worst offender, but Maps has got some ugly parts too.


Just updated to the latest release of Mona (released 6 days ago) and the spellchecking issue seems to have been fixed, so *sigh* hooray?


Let’s Talk Turkey

From Mastadon:

> UIKit has like 2 new APIs this WWDC 😅 Same for AppKit. There's just nothing to add to the conversation this year, and that includes for Catalyst. It powers all the new features in Messages and Maps on the Sequoia preview page (…plus the Developer app everybody is watching the sessions in — you've been using Catalyst all week)

There is no Catalyst topic on thew developer forums. It appears the framework has fallen out of favor at Apple. Catalyst has its problems as previously mentioned but not supporting it for the foreseeable future would be an insult to many devs.

Sidenote: That bit on the developer website saying SwiftUI is ”preferred” over AppKit causes me to ask…preferred to who mother fuckers? Preferred to me or preferred to you? SwiftUI is better than AppKit? Not a fucking chance. Delusional sons of bitches.


Answer from Quinn here is a gut punch to anyone who is heavily invested in Catalyst: https://developer.apple.com/forums/thread/761049

Ouch.

Leave a Comment