This is one of the most interesting WWDCs in the last few years. On one hand, we likely have a pretty good idea of where Apple’s platforms will be moving in the next few years, but all signs point to those big changes not coming until next year or later.
So if you take out the cross-platform UI / appleOS stuff, we are left with nothing concrete to go on about what Apple is going to announce this year. Personally, I think that makes the keynote way more fun1.
Instead of listing a bunch of features I want, I am going to concentrate more on what I want to see as a developer.
So lets dive in.
The list of what I want from Xcode and Swift has gone pretty much unchanged since I started doing this in 2016.
- Xcode for iOS: The iPad is becoming more and more of a computer replacement. Apple is known to be working on ways to make building cross-platform apps easier (or even combining iOS and macOS). If either of those are true, then it is only a matter of time before you can use an iPad to write those apps. I am hoping that 2018 is the year.
Run Swift Code on CloudKit: Apple cannot be happy about how many apps are powered by Amazon Web Services. Much of what you would use AWS to do can already be covered by iCloud and CloudKit, but if you need to run any logic on the server itself then iCloud is no longer feasible. Letting apps run code on CloudKit has big advantages for developers and for Apple. For developers, it makes it easy to get a server backend running for our apps. For Apple, it helps to lock developers who use it to the App Store.
Also, this would be a great way to power Siri in the Cloud. More on this later.
Swift Package Manager for Xcode: This one is so obvious that I cannot believe it has not happened yet. I have not had any issues with CocoaPods or Carthage in the last couple of years, but I hate trusting such a huge part of my build systems to a third party. Dependency management should be built into Xcode.
Swift CoreData Replacement: This is straight from my last year’s list:
CoreDataAPI was written to be used from Objective-C. It would be nice to have a wrapper that was more was type-safe and less stringly typed. Bonus points if we can natively use Swift
Most of the changes I want to iOS are more cross-platform things (Siri improvements and cross-platform
UIKit replacement). From a developer standpoint, iOS is pretty good as it is now. None of these are major, but they would make my day-to-day development life easier and would make the apps I write significantly better.
- Workflow: Apple acquired the Workflow team too late in the iOS 10 cycle for any of their stuff to be integrated into iOS 11. Now that they have been there for over a year, I hope that we see some system-level user automation features in iOS 12. Obviously, I would also want an API to tie my apps into that automation system.
Password Provider Extension: I use 1Password to keep track of all account and passwords, but iCloud Keychain is much easier and faster to use both in Safari and in 3rd party apps. I would love to see Apple make an extension point for password providers that would allow me to use the system UI for selecting passwords from 3rd party password apps so all of my passwords are not duplicated across two systems.
MapKit: MapKit improvements are my white whale. I have been asking for some of these things since I started developing Storm Spotter for iOS 3. I don’t expect to get them at this point, but I can still dream.
- Animated MKOverlays:
MKOverlaysare good for showing static content, but they are completely unsuitable for anything animated2. We basically need a way to specify an overlay image that is rendered all at once instead of being asynchronously loaded as tiles.
- More MKOverlayLevels: Overlays can currently be placed on two levels: above or below the city labels. It would be nice to have more control over this. For example, I would want to be able to place them under roads.
- Customizable Map Themes: I would love to have a theme object to customize the colors of a
MKMapView. Since I don’t expect to ever get that, I would settle for a dark
- One Finger Zoom for MKMapView: Apple added a one finger zoom gesture to Maps.app in iOS 11, but it only works in their app. I want this to work any
- Animated MKOverlays:
The Apple Watch hardware is great, but the software still limits the device’s potential. I hope that the software catches up to the hardware a bit this year.
- 3rd Party Siri Complications: I am a pretty heavy user of the Siri Watch Face, but it would be much more useful if my Things tasks could be on the list the same way Reminders can. I would like to see the concept of contextual Complications spread to other watch faces too.
UIKit (or equivalent): Making complex UIs on watchOS is needlessly tedious.
WatchKit’s UI classes are built on top of
UIKit, so we just need to get access to the underlying classes.
Metal and/or OpenGL: Certain apps could be way more powerful if we didn’t have to rely on
CoreGraphicsfor drawing to the screen.
More background access: The Apple Watch has plenty of battery to spare, so apps that need it should be able to do more in the background. The obvious (and most discussed) use case here is podcast apps.
Priority Networking: As a power-saving measure, the watch will attempt to use the phone for connections even if it could perform the same network request much faster by itself (via WiFi or cell). For requests that are known to be big (like podcasts), developers should be able to tell the watch to prefer its own network connection over the phone’s.
I don’t have a ton of tvOS development experience3, so these are more things that I want as a user.
- User Profiles: This one is becoming more and more important to me every year. I want Daniel Tiger and Toy Story to stop cluttering up my Up Next queue. This system could build off of Family Sharing and be tied to an Apple ID. Third party apps like Hulu and Netflix should be able to tie their accounts to the system accounts.
The TV app should replace the home screen: Apps should just be a section of things that you access alongside your TV content.
Up Next API: Any third party app should be able to place contextual content into the Up Next queue similar to how sporting events involving my favorite teams do now. For example, a weather or news app should be able to add their local severe weather coverage to Up Next if there is a big weather event going on near me.
Picture-in-Picture and Multi-channel video: I love watching sporting events at the same time, but that only works if both events are in the same app and that app has built in a custom multi-pane UI. I want a system provided way that I can watch arbitrary content across apps at the same time.
Watch video in the TV app: I would love for the TV app to just play the videos instead of kicking out to the source app. I’m sure that Apple would prefer this, I don’t see any of the big players getting on board with anything like this4.
I love the Mac, but it is a legacy platform5. Therefor this is a pretty short list.
- Cross-platform UI framework: I want to be able to leverage more of my iOS code to build Mac apps. Bringing over parts of
UIKitwould be a good start, but I would rather have a new cross-platform Swift framework that is shared between all of Apple’s platforms.
iOS 11-style App Store: The iOS 11 App Store redesign has been a huge success, so I want to see it on macOS too. Hopefully it will breathe some life into the Mac App Store.
And that is it.
The developer story for Siri has always been pretty weak. For Siri to really compete with Alexa and Google Assistant, I think that major parts of it need to be completely re-thought.
- Siri in the Cloud: Siri needs to move from something that primarily lives on individual devices to something that lives in iCloud. One of Siri’s biggest issues is that it can only do certain things on certain devices. For Siri to become a truly useful digital assistant, it needs to have the same interface across every device.
If Siri were more cloud-centric, it would also simplify the problem of performing an action that a particular device cannot execute. For example, if I am at home and I ask Siri to “Play The Last Jedi” from my HomePod or my Apple Watch, it should know that I have an Apple TV and just start playing the movie there. If there are multiple devices around that I could watch it on, it should simply ask which one.
Similarly, all third party Siri Intents should run from iCloud, not the device6. If I have an Intent installed on my iCloud account, it should not matter what device I use it from. My HomePod should not have to talk to my phone to add a task to Things for me.
Multiple Users: For shared devices like HomePod and AppleTV, Siri should be able to tell people apart and react accordingly. They could even give it a cool name like VoiceID.
More Intents: I don’t have any specific Intents that I care about more than others, but I want Apple to add as many as they can to make Siri more useful.
Type to Siri: Siri and Spotlight Search should be merged into one thing so that it does not matter if I talk to it or type to it. With this, Siri can become a smart command line. I never use Siri on macOS because I am not going to talk to my computer in my work’s open office, but I would use it from my keyboard all day if I had the option.
It feels like we are right at the beginning of a years long change in how we develop apps for Apple’s platforms. I am hopeful that we get at least a small look at what that change is going to look like this year.
- Think of how exciting that iPhone X introduction would have been if we had not known everything about the device months before. ↩
- Like weather data. ↩
- Yet. ↩
- We can’t even get Netflix to use the TV app as is. ↩
- Don’t @ me. ↩
- This would be a great use case for the CloudKit Server feature mentioned above. ↩