Is that time of the year again 🎉 WWDC '19 is happening next week and as usual we all have our expectations, wishes and predictions.
I have to admit that this year feels a little weird with so many leaks, feels like we already know everything and I'm a #nospoiler kinda guy. But even with that unpleasant sensation, I've already started tweeting about it!
Check out this twitter collection of my tweets about #wwdc19
I will get my popcorn ready for next Monday. 🍿
But before that, I wanted to write down my wishes for this year. This is not what I expect to get, what's rumoured or leaked, but what I would love to see. I got some of my last year wishes but not all, so expect them to come back again on this year's list.
Here is the list of my wishes for WWDC 2019
- Declarative UI framework
- Dynamic heights that work
- UIKit on the Mac
- Scripting with Swift
- Better shortcuts integration
- CloudKit functions
- Custom Watch faces
- Better deep linking integration
- Drawing view
- Custom View Controller and Non-UI Extension Providers
- More control on App version updates
- Dark mode on iOS
- Shortcuts on macOS
- Screentime on macOS
- Cheaper iCloud
- Performance improvements and bugfixes
Declarative UI framework
This is probably my biggest wish, something that has being rumoured in the past few years but that feels so far away. The industry has moved forward from imperative UI (React, Flutter...) but Apple still hasn't shown anything about what the next UI framework would be.
On my 2016 (so old!) post The trip to modern declarative software I already discussed how while part of the iOS community was focusing on Rx the rest of the world was already moving to the next step. I don't want us to be like the JS community rewriting everything every other month, but it's completely true that it feels like we're always a couple of steps behind. Even Android has now a pre-alpha (yes, you've read correctly) of an official declarative UI framework!
I started iOS development enjoying every piece of UIKit, it was amazing and really well thought. Over the years it has grown a lot, making it now the biggest pain point of an iOS developer. Some of the pain is legit, we have to deal with much more things now (remember the good old 320x480 days?), but other stuff could be much better handled by a declarative system.
I've talked about what my ideal UI framework is in other places, but as a quick summary: build on top of UIKit (we still want an imperative access when needed), embracing Swift fully and integrated with interface builder (IB writes code, not XML. And the code gets rendered by IB).
This is a wet dream of mine, I don't think we're gonna get it anytime soon, but wishes are wishes.
Dynamic heights that work
I know declarative UI is far away so at least can we have automatic sizing work once and for all, please? Implementing any modern UI requires adapting to dynamic content, font sizes and multiple languages.
And even with that reality, implementing a list with dynamic height is prone to errors, bugs and edge cases that still don't work. Dynamic heights is probably the biggest contributor to UIKit issues I've encountered, maybe after our beloved notch.
UIKit on the Mac
Marzipan! Of course we all want this, but in all honestly it's not one of my main wishes. One concern I have is about the technical details. How much freedom are we gonna have in terms of mixing AppKit and UIKit in the same codebase? Is gonna be quite unproductive if you need to pick one of them for a whole project. That's unless they start porting all the exclusive feature from macOS to UIKit.
The excitement for Marzipan is around finally seeing what's Apple strategy for the future of their platforms.
What I want is to be able to evaluate Swift code at runtime. Of course it should be properly sandboxed and secure and all that jazz. This is not something that all Apps need but with how amazing Swift is one could imagine many apps that could profit from letting advanced users tweak or program some aspects of them.
Swift has a REPL and Apps like Swift Playgrounds and usages like jupiter notebooks proof that it can be done. I just wish Apple would give a little more love to their creation.
Scripting with Swift
One of the main things that SwiftCore could power (apart from Playgrounds) is being able to use code to script Shortcuts. There is a lot of people that wants to graduate from visual programming in the Shortcuts app to a more traditional and flexible approach.
Of course the easy route would be to just let people use JS, and that's a valid solution, but it would be a lost opportunity. I think Apple has a great opportunity here to introduce Swift to a new broad range of people that would never think about learning it. And remember that being a language to learn programming is one of Swift goals.
Better shortcuts integration
What last year was a wish for a Workflow framework, now it has evolved to improving what we already have :)
Shortcuts is really powerful but we need better integrations with applications. And this is something that not only devs are asking for, but users are seeing as a weakness of the system.
The main pain point being not letting the end user to have "parameters" to Siri queries. This limits a lot of the useful things that can be automated, the problem that I see here is that I'm not sure Siri is ready to accept this extra complication.
Another place were Apple needs to make Swift shine. Swift on the server is already a reality, and CloudKit is a framework that developers that can use it love. Just put them both together!
I feel like this is one of those areas that Apple just needs to work on without any question. It would be a big win for developers that use iCloud but, more importantly, it would show to the world how confident Apple is with the future of Swift.
Custom Watch faces
Is about time developers have access to watch faces. There are so many cool prorotypes people is doing that we can't wait for this anymore!
Better deep linking integration
As much as I love to keep things simple, complex navigation in a big app is something real. And with apps becoming more complex for the pro market this is happening more and more.
There is a point when you want to move your pushes out of your ViewControllers, and it makes things so much better! But still, I dream of a version of Storyboards that has automatic integration with deep linking and with my code. Again, routers in any web framework are much better than what we have.
A late addition directly taken from macstories. This is not something that every app needs, but I've had many ideas of places where it would be amazing to easily get free flow user input. But of course, implementing a drawing view from scratch is not trivial. I implemented one from scratch years ago and it was good enough for the time, but is not something that you want every developer to go trough.
Custom View Controller and Non-UI Extension Providers
In previous years the whole thing about opening the remote ViewController system to third party developers was a wish that many of us had, but after the introduction of so many "extension points" the majority got satisfied.
But as mentioned in macstories there are still so many missing things on the extensions API that are needed. Inter-app communication is not an easy problem to solve but is something that needs to keep improving year after year.
More control on App version updates
iOS app updates happen really fast, on my experience it takes only 1 week to get 90% of the user base updated, which is amazing. But sometimes we need more than this.
It's about time that we get a standard UI to prompt our users to update and even to force them to update. Having a standard UI for this would help users familiarise with keeping Apps up to date, but also would make developers use the changelog feature again!
Dark mode on iOS
This is gonna be big for developers but I really want it as a user. I run everything I can with a dark theme, it makes it so much easier to the eyes.
With the existing support for it on the asset catalogs I'm expecting (and wishing) that many Apps are already ready for it.
Shortcuts on macOS
Another one that needs to come from iOS, with all mentioned improvements please! It would be good to have a single automation system for all Apple platforms, and Shortcuts is a really good take on it.
Screentime on macOS
One of the best additions from last year, needs to come to macOS where we spend most of our time. Let's hope Marzipan helps Apple internal developers to get this going easily ;)
Performance improvements and bugfixes
And last but not least, please give us good bugfixes and performance improvements. Last year was amazing!
Every summer that Apple focuses on this instead of breaking UIKit is a great summer for me. So if they don't give me any of my wishes at least let me have an easy summer ^^