As Apple’s Fall iPhone event looms, so does the launch of iOS 13, iPadOS, and macOS Catalina. The latter two platforms will usher in a cross-platform app ecosystem via Catalyst, the just-click-here app porting feature in Xcode. With it, Apple is slowly killing the legacy macOS framework AppKit.
Ahead of Catalyst, developers and onlookers were keeping an eye on four Apple apps (News, Home, Stocks, and Voice Memos) as indicators of how cross-platform apps would perform. Careful observers saw the macOS and refreshed iPad versions of these apps landing at the same time (WWDC 2018), as well as Apple happily framing them as ‘ported’ apps. What we didn’t know is those four apps were likely early Catalyst candidates, too.
But product-wise, the apps also weren’t good. 9to5Mac writer and developer Benjamin Mayo penned a blog post in Fall 2018 highlighting the four apps' flaws. (Apple SVP Craig Federighi calls such criticisms “design decisions," not an indication of how good or bad the Catalyst tool actually is.)
In 2018, Catalyst was a mystery; we had no idea how Apple ‘ported’ the four iPad apps to the Mac, only that it had. The next year brought us Catalyst. Though many expected Apple would unveil its plans for cross-platform apps at WWDC 2019, nobody was sure how that would manifest for developers. Catalyst certainly wasn’t what anyone expected; it's simply a toggle in Xcode to make an app available for iPadOS and macOS.
At the time, we wrote the following:
We think of this like a deprecation of AppKit, much as Objective-C was deprecated when Swift arrived. Swift didn’t kill Objective-C, and the UIKit framework familiar to iOS developers isn’t killing AppKit. You can still write an iOS or macOS app in Objective-C, and you can still write a ‘traditional’ macOS app using AppKit.
A mere month away from Catalyst’s official launch, developer Peter Steinberger took to Twitter to ponder what was happening with AppKit. His service, PSPDFKit, fronts PDF Viewer Pro, a powerful PDF viewing and editing app for iOS and Android. According to him, Apple’s guidance on including AppKit bundles in Catalyst apps is: “We do not recommend doing this, and cannot guarantee support in the future.”
Steinberger goes on to lament the dearth of documentation from Apple on this subject, and he has a point. But maybe there's a good reason Apple is side-stepping AppKit: it’s planning to kill the framework.
Apple’s developer portal notes AppKit is great for implementing “windows, panels, buttons, menus, scrollers, and text fields” into an app. AppKit also “draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.” The page “Optimizing Your iPad App for Mac” only references UIKit, but says “the Mac version of your iPad app supports many system features found in macOS without requiring any effort from you,” including:
- Menu Bar
- Trackpad, Mouse, and keyboard input support
- “Mac-style” scroll bars
- Copy-and-paste support
- Drag-and-drop support
- Touch Bar controls and support
(It's important to note none of the Catalyst-related pages in Apple's developer portal reference AppKit. We tumbled down the rabbit-hole, and each nested page uses UIKit as a reference point for its documentation.)
For straightforward apps, Catalyst provides everything necessary to make an iPad app available to the Mac. Developers won’t ever have to touch AppKit. With some of the deeper features of a desktop app, such as a panel for settings, Apple is starting to guide developers to a more standardized approach. In the Human Interface Guidelines for Catalyst apps, Apple suggests using a toolbar menu for settings or commands, or having features reside within the app’s menu in its window. The takeaway here is Apple would like Catalyst apps to remain sandboxed to one window with a toolbar menu.
Developers can still use AppKit features for standalone Mac apps, but Catalyst doesn’t seem supportive of AppKit at this time. It’s indicative of an Apple that isn’t interested in making AppKit relevant for a new crop of apps, but an Apple that is quietly focused on deprecating AppKit as fast as possible. It’s long been a framework that iOS developers bringing their apps to the Mac have struggled with, anyway.
Catalyst was always framed and delivered as a means to get macOS system features working with an iPad app, and it’s delivering. What Apple may have missed is iPad apps brought to the desktop would like to access features made available via AppKit; or maybe it is proactively funneling developers away from those in an ongoing effort to discontinue AppKit someday. It seems the future of development for Apple platforms is Swift and UIKit, while AppKit and Objective-C linger as legacy technology for existing, siloed apps.