Top questions and thoughts from WWDC 2019
Today was the big day of WWDC 2019, and after the excitement of waiting for the keynote, here are my immediate thoughts and reactions to the announcements:
- Declarative UI in Swift seems like a massive step forward for iOS development. I first started iOS development back in iOS 5 at a time when the platform and developer tools for iOS were just vastly more elegant and efficient compared to Android. Since then Android / Google has stepped up its game, with a better IDE (Android Studio), a better language (Kotlin), and recently a declarative UI framework (Flutter). SwiftUI seems like a natural evolution in the competition of UI frameworks, and I'm super excited to see it. Here are some of my deeper thoughts and questions I look forward to exploring:
- How far does SwiftUI embrace pure functional programming? How is state managed?
- I'm curious how functional reactive programming fits into SwiftUI.
- Converting an app incrementally to use SwiftUI seems like a really important feature practically. But in this context one might have much more stateful non-SwiftUI code having to interact with SwiftUI code. How messy will it be to deal with this?
- The live editing and reloading looks super super awesome. However, I'm a bit skeptical about the drag-and-drop editing of UI which actually edits your code. I think if it works well it could be awesome, but I'm worried about the failure that is editing XML layouts in Android. I just need to wait until I actually try it.
- By writing your UI declaratively, Apple is able to give you a bunch of UI features in your app for free. It will take some time to be aware of which features you do or don't get for free, but I think this is a huge plus, both for developers and for Apple. Personally I consider 3D touch to be a bit failure, with one of the factors being slow adoption by developers. Imagine if instead, Apple could have launched 3D touch with automatic support for it in a majority of apps. There is a lot of subtlety and issues here (what if Apple turns on a feature you don't want?), but this is a really interesting feature since it could pay large dividends in the future.
- Improving privacy in APIs: I'm a bit surprised that it took Apple so long to realize that they location tracking settings of iOS are too coarse-grained. Regardless, I'm happy as a user to only let apps use my location once. As a developer, I expect / hope that Apple has made the API for this require nearly no additional code. The "Sign in with Apple" feature also seems pretty great and well thought out.
- Every year Apple shows with gushing emotion and baby pictures a new UI for the photos app. We'll see if this one sticks around.
- The multiwindow support for apps in iPadOS seems like a long time coming. I'm curious what the possibility of IPC is between app windows.
- AR stuff seems cool and fun, but I'm always left wondering why I should care. The motion capture and people occlusion seem like they could open up AR to be useful in other new domains which I might care more about then games. I was a bit disappointed that Apple didn't have more compeling demo of these features (as awesome as Minecraft is).
Anyways, WWDC is super exciting this year, and I'm pretty hyped to give some of these new features and APIs a try. I'll update this as I watch more videos from the conference!