Framework Sherlocking at WWDC 2019
WWDC is lovingly referred to as “Christmas for Apple Developers” and, goodness, was it a Bescherung this year! Apple has been hitting it out of the park at this year’s WWDC. While in the past many developers have been worried that their apps were getting replaced with Apple’s own new or improved apps (aka “Sherlocking”), a big surprise of this year is how many third-party libraries and tools now have first-party replacements1:
- Declarative views: CvlView → SwiftUI
- Building forms: Eureka → SwiftUI.Form, via @kuba_suder
- Reactive programming: RxSwift or ReactiveCocoa → Combine
- Reactive table/collection data sources: RxDataSources → diffable data sources
- Cryptography: CryptoSwift → CryptoKit
- Dependency management: Carthage → Swift Package Manager right in Xcode
- Icons with custom weights: PaintCode → SF Symbols
Granted, none of these are complete replacements2, and developers cannot rely on all those first-party replacements yet either (as most of them require iOS 13), so these third-party frameworks and tools still have reason to exist.
I am very excited about this. It’s not changing what you can do, but how you can do it. As Brent Simmons puts it nicely, it is the start of a new era, which is significant as the previous era has been going for close to thirty years.
It is great that Apple is modernising the frameworks and giving declarative and reactive programming the first-party treatment, learning from what both the Apple developer community and other platforms are doing. Having Apple throw their support behind these concept will likely accelerate and improve them further, too. SwiftUI in particular has tremendous potential — not just for Apple platforms. Might I dare ask how much effort would it be to generate an Android app from a SwiftUI code base? Though, unlike Swift itself, SwiftUI and Combine are not open source (yet?).
Developing for Apple in the 2020-ies will look much different than it does now. Exciting times and a lot to learn!
-
These are only the ones that I’m familiar with and that stood out to me in the subset of videos that I watched. There’s likely even more. ↩
-
See for example this comparison of Combine vs. RxSwift. ↩