WWDC20 Wish List

May 03 2020

We're just about a month away from Apple's first online developer conference. While there certainly have been leaks and rumors, I feel like there are less than last year.

Most wish lists for Apple events focus on user-facing features in tvOS, watchOS, iOS, iPadOS, and macOS but since I don't have any wishes in that area right now, this post is mostly going to focus on system frameworks and API.

UIKit

Last year iPadOS introduced multiple windows, a feature that's exclusive to the iPad. This year, I hope to see way more UIKit API and controls designed for the iPad and "professional" apps. Specifically, I'm thinking of an iOS port of NSRuleEditor and a universal menu system. Another API that's still not available on iOS is a system-wide color picker. Smaller improvements like rulers in scroll views would also be nice.

Leaks from last year mentioned floating panels, similar to those in PanelKit. When iPadOS 13 was introduced, these panels were nowhere to be found. I hope an API for floating panels will be added this year. These kinds of additions can go a long way towards making iPadOS feel like a proper computing platform.

Another feature mentioned in leaks of previous versions was the ability to use tabs across the entire system. Currently, iPadOS supports multiple windows, but I'd love to see an API for grouping those windows into tabs. Many applications (such as text editors) could profit from having multiple instances without having windows.

Note: Many of these features only make sense on an iPad. I don't feel like there's a lot of API that's missing on the iPhone. Maybe I just need to work on more iPhone apps.

SwiftUI

The version of SwiftUI, which released last year, was surprisingly good. This year we just need a lot more native controls (like text views) and some more stability.

One API in specific that I'd love to see is a declarative replacement for NSAttributedString. With support for regular expressions and integration into a SwiftUI version of UITextView, this API could make writing a simple code editor (or Markdown renderer) way more fun.

Here's what I'm thinking of:

TextView($text)
   .applying(Color.red, to: "func *.(")

Catalyst

In my opinion, Catalyst doesn't need a lot of improvements this year. Still, there are some areas where functionality could be greatly improved:

This year's version should allow for easy bridging of AppKit controls into UIKit. A Catalyst app should be able to use NSButton, for example. This way Catalyst could feel way more native on the system.

Having the ability to transform an app from the iPhone into one that runs with a menu bar item would also be nice.

AR

In every release, Apple adds some new features to its AR frameworks. Even though those frameworks have become very good, there aren't many use cases for AR. Leaks suggest Apple will introduce an AR app into which developers can add their content. In AR a singular experience with content from different apps makes much more sense than lots of individual apps (I'll write about this more in a future article). This app might also be an early version of the home screen for Apple's AR glasses.

A feature that probably won't be in iOS 14 is the ability to use ARKit (and RealityKit) with an accessory like HoloKit. Currently, it's technically possible to use Apple's AR frameworks with HoloKit, but it's not a good experience.

PencilKit

Apps like Penbook for iOS and Charcoal (👋) have adopted PencilKit as their drawing engine. These apps use PencilKit in a way Apple didn't intend the API to be used. Having built such an app, I can say that PencilKit needs a lot of improvements in the next version:

First of all, we need a fill tool.

Secondly, it would be nice to see a specific tool for drawing shapes. Unlike Procreate's QuickShape, PencilKit should have a separate shape (or diagram) tool which would recognize rectangles, circles, and lines to then transform them into actual geometric shapes.

I'd also love to see the ability to render (and export) a vector version of a drawing. PencilKit internally already works with vectors, and limiting the amount users can zoom into a sketch by rendering a raster version is not good.

Another interesting addition would be the ability for developers to add custom stencils. Not my idea, thanks Steve Troughton-Smith! This way different PencilKit apps could differentiate themselves with different stencils. Architectural sketching apps could have stencils for trees, for example.

One more small API request: Can I please override the user interface style a drawing is exported with?

ClockKit (This Is a Weird Idea)

Apple should allow users to use complications as the display for time on digital faces. These complications would have to be way more powerful, but this way users could customize their watches without having actual custom watch faces.

One More Thing

I'd be insanely happy if Apple announced an iPad version of at least one pro app. Xcode, Final Cut, and Logic should all have an iPad version in the future, and bringing the first party pro apps to the platform should encourage other companies to do the same.

Conclusion

This is a lot and if even a third of the features I mentioned would be in iOS 14, I'd be happy. But maybe, like last year, Apple can surprise us with the amount of API which was added in a single release.