Everyone has a wishlist for WWDC 2025. Here’s mine.
My WWDC 2025 wishlist: because apparently, I can't ask Santa for protected keyword in Swift.
It’s this time of year. Every iOS developer is talking about their wish lists for this year’s “Apple Christmas” - WWDC. Artjoms Vorona has a good compilation of various developer’s expectations and wishes.
I figured I would join the hype train and share mine as well. Here we go:
AI Code Gen Tools in Xcode
We all are waiting for something better than, not-so-useful, autocomplete that we’ve currently got in Xcode. Cursor, Intellij, and other similar IDEs are leaps and bounds ahead of Xcode, Apple needs to keep up here.
Personally, I really like Cursor’s approach with its powerful codebase indexing and coding rules that kick in based on file pattern match.
More SwiftUI integration into UIKit
This one has been a long time ask of mine - better integration of SwiftUI into UIKit. I still believe that currently the best way to build iOS apps is not to create a SwiftUI app but instead to have a UIKit based app where you extensively use SwiftUI. As of today the way you do it is by utilizing UIHostingController, that holds SwiftUI view, by either subclassing from it or embedding as a child view controller as a wrapper around SwiftUI view.
It works well enough, but what’s missing is something more lightweight than a view controller wrapper - a simple view holder that accepts a SwiftUI object to render.
What I’m thinking about is basically something like the UIHostingConfiguration that UITableView has but for a UIView.
This technically already exists for macOS with NSHostingView. So, my wish is for Apple to add this to iOS, something like “UIHostingView.”
Less Singletons and More Protocols in Apple Frameworks
It’s been a pet peeve of mine for many years now. Apple makes great OSes and frameworks for developers to use, but the way their APIs are implemented often is poor, lacking, and outright bad. Specifically the abundance of singletons and lack of interfaces (protocols), for things like UserDefaults, URLSession, FileManager, NotificationCenter, etc., makes it very inconvenient to work with them. You constantly would have to wrap around them with your own custom wrappers that have interfaces (protocols) to actually be able to properly inject and mock them.
And don’t even get me started on singletons… it’s just an anti-pattern to have those in the first place!
My wish is for Apple to be better architects of their frameworks’ public APIs and adhere more to SOLID principles.
Protected Keyword In Swift
This one also has been a long time pet peeve of mine - the lack of protected keyword/concept in Swift. In every other normal OOP language there is a concept of a protected method or property that indicates that it’s designated for subclasses only and is available to them to call or override. Protected methods or properties are not available publicly otherwise.
Kotlin has it. Java has it. Ruby has it. Typescript has it. C# has it. PHP has it. What is wrong with you Swift!?!?!?!?
I know I know what you’re going to say! “But Alex, it was explicitly decided for Swift not to have protected keyword”. Well, I don’t care, it was a bad choice and there is no excuse for it.
Over time all major general purpose languages, as they add features, coalless on the same set of features and become alike. It’s inevitable as there are only so many good ideas for features in a programming language and they constantly “borrow” and copy each other.
So Swift, get on with the times and add the darn protected keyword, will you!
Conclusion
These are some of the "wishes" on my list that come to mind. We'll see what Apple has in store for us this WWDC. I am not holding my breath for the additions I listed, but then again...
I totally agree about protected, and I’d add “abstract” to that
I get that they want to encourage POP, but it’s insane they give borrow semantics for the dozen of systems programmers but no abstract or protected for millions of OOP programmers