SwiftData and Core Data at WWDC25
SwiftData: Dive into inheritance and schema migration:
Discover how to use class inheritance to model your data. Learn how to optimize queries and seamlessly migrate your app’s data to use inheritance. Explore subclassing for building model graphs, crafting efficient fetches and queries, and implementing robust schema migrations. Understand how to use
Observable
and persistent history for efficient change tracking.
I’m glad to see that inheritance isn’t on the chopping block, as some feared, but otherwise this was disappointing. For the second year in a row, there don’t seem to be any new features for Core Data (not even a mention in the session) or for integrating Core Data and SwiftData. Is Core Data frozen in time or still getting maintenance? How are you supposed to migrate when the feature sets—and even IDs—aren’t equivalent? Aren’t there tons of apps built on Core Data? What are they supposed to do? It seems like Apple doesn’t care.
SwiftData added only one feature this year—model inheritance—which isn’t widely used by most developers. Other highly requested capabilities, such as additional sync options (shared, public) and dynamic predicate adjustments, didn’t materialize in this release. That said, this update isn’t a failure. By fixing several critical bugs from previous versions and filling in some long-overdue functionality, SwiftData in Xcode 26 has become increasingly viable for real-world apps.
Previously:
- Returning to Core Data
- SwiftData Expressions
- SwiftData and Core Data at WWDC24
- SwiftData Issues in macOS 14 and iOS 17
- Dynamic Swift Predicates in macOS 14 and iOS 17
- SwiftData
1 Comment RSS · Twitter · Mastodon
Leaving SwiftData & interop aside, Core Data being mature enough, I really wonder, what is currently missing, and would that be worth the risk of them touching something and breaking ten other things in the process, as modern Apple always does?
And about SwiftData interop, my guess is that either nobody at Apple uses it, or it's a tiny project on some SwiftUI crapola that nobody in there cares about.