Gui Rambo’s WWDC 2020 wishlist
With WWDC coming up next week, I thought that a great way to start contributing to WWDC by Sundell & Friends would be to share my wishlist for what I’d like to see announced during this year’s edition. Instead of focusing on operating system features or things that have already been discussed a lot in the general Apple community, I chose to dedicate my short wishlist to developer-related improvements that I would love to see become a reality this year.
It’s worth noting that my wishlist is nothing more than that: things that I wish would happen. It is not based on any insider information. So please, don’t create any expectations based on my wishes.
Custom extension points / XPC
I’m a huge fan of app extensions on iOS. Traditionally, apps have always been this icon you tap in SpringBoard, which takes you to a whole new context, filling the entire screen — especially on iPhone.
With iOS 8, Apple started expanding that with the concept of app extensions, which let apps provide their features to other parts of the system — such as the Today view, and apps like Photos. While the system has come a long way in terms of supporting new extension points and expanding what can be done using app extensions, there's still a lot of room for improvement.
The first improvement that I would like to see would be a way for apps to define their own, custom extension points, not limited to the set that the system supports. Let me explain what I mean with a very practical example. I make the app ChibiStudio, and one of its features enables users to customize the colors of items, which can be done with a color picker that I implemented (a native UIColorPicker
component would be nice to have, but I digress).
More recently, Steve Troughton-Smith released his color picker app Pastel. One of its features is the ability to drag and drop colors between Pastel and other apps, which I promptly implemented in ChibiStudio. Drag and drop is great, but it requires both apps to be running in Split View or Slide Over, which can be cumbersome. Wouldn’t it be great if I could define a Color Picker
extension point in ChibiStudio, and Steve could then implement a Pastel color picker extension for it? No need to have both apps opened at the same time, his color picker UI could just appear right within my app.
This is just one example, of course, but there are many other situations where custom extension points would be extremely useful. The technology for implementing app extensions in a secure and privacy-preserving manner is already present on iOS, so most of the work has already been done (famous last works, I know).
The second part of this story would be to open up XPC (Cross Process Communication) on iOS to third-party developers. All of Apple’s operating systems use XPC extensively, with many of the APIs that we use on iOS already performing XPC behind the scenes.
It might sound like a complicated concept, but in reality XPC is quite simple to implement from the developer’s side, and it would allow for things such as isolating third-party dependencies — such as analytics packages — where possible. The API has always been available for Mac apps, but it was never made publicly available on iOS.
Another improvement this could potentially bring would be improved background tasks. Instead of running an entire iOS app — and all of its dependencies — in a weird and unreliable background state, the system could launch a tiny extension that does just what’s needed for the background task in question — such as updating a local database with new data from the network. That could potentially have big positive impact on battery life, as the current background model on iOS relies on launching the whole app in the background.
Improvements to developer services
Apple has become a services company, especially after last year’s introduction of TV+, Arcade, and several other services. Meanwhile, Apple also provides some services to us, developers, with services like App Store Connect and Developer Technical Support.
I would like for Apple to improve the services they currently have, and to expand their offerings for developers. The first service that really needs improvements is App Store Connect. Since its renaming from iTunes Connect, it has seen many improvements, especially in terms of its UI — and it received a welcome facelift with yesterday’s update — but it’s still quite unreliable. It also doesn’t offer a macOS app, and its iOS app is quite limited in what it can do.
Another option would be to include full app management in Xcode, so that the entire workflow of building and releasing an app to the App Store could be done using the same tool. If that’s asking too much, then I would be very happy if it only included support for TestFlight releases. I would love to be able to archive and release builds to my beta users without having to log in to App Store Connect or resort to another solution such as Fastlane.
This wouldn’t be a “developer service” necessarily, but I really wish Apple would improve their offering of sandbox environments for their services. They currently offer a sandbox environment for in-app purchases, but it’s unreliable and cumbersome to set up. Additionally, the UI that’s used on iOS when making an in-app purchase in the sandbox environment is completely different from the one in the production environment, making it hard to see what the end result will look like before actually releasing an app.
There’s also a development environment for CloudKit, but it requires the use of a production Apple ID, which is really hard to set up — you even need a real cellphone number these days. I know this is not the type of thing that can be done very easily or quickly, but I know that Apple has very smart people that could figure this out, and the result would benefit both developers and their users.
Other than the improvements I mentioned, it would be really interesting to see a first-party continuous integration solution made by Apple. Of course that wouldn’t be the solution for everyone, but I’m sure that it would be a good option for many. Apple acquired BuddyBuild back in early 2018, so I hope that this is the year when we see the results from that acquisition.
UIKit components for modern UI paradigms
It’s hard to imagine the amount of work-hours developers spend on customizing UIKit controls just to make an app look “modern” these days. There are a plethora of conventions we see all over Apple’s own apps — and third-party apps — that need to be implemented manually by each developer.
One example is the ubiquitous sheet UI that appeared in Maps way back in the day, and is now a staple of modern iOS apps. Unfortunately, getting that component just right takes an enormous amount of work — I know because I’ve written one — and there’s no single implementation out there that takes care of most use cases.
I would love for Apple to make that component available as part of UIKit, as well as many other common components that we see in modern apps — so that developers can focus on what makes their app unique instead of spending numerous hours replicating common UI components.
So that’s my wishlist for this year’s WWDC. It’s only a few bullet points, but I think there’s a lot in it that could potentially happen, and I would be happy even if only a single thing from my list becomes a reality.
Zeplin is a connected space for product teams where they can handoff designs and style guides with accurate specs, assets, and code snippets — completely automatically. Import these resources directly into Xcode, as generated Swift snippets and asset catalog items.