Wally, a personal iOS wallet app first built in 2012, reaches version 7.0 with a major rewrite that replaces the old Realm database with Apple's SwiftData framework. The migration simplified the app's architecture significantly, removing the need for protocol-based store abstractions since SwiftData works directly with the model context. It also brought free iCloud sync across devices. Other new features include custom item groups instead of fixed categories, pinch-to-zoom on item images (implemented via UIKit wrapping), and UI refinements aligned with Liquid Glass design. The app is available for free download.
Questions this post answers
What are the benefits of migrating from Realm to SwiftData in an iOS app?
Migrating from Realm to SwiftData removes the need for a separate store protocol with multiple implementations per item type, since SwiftData lets you interact directly through the model context. This significantly reduces code and simplifies app architecture. SwiftData also integrates well with SwiftUI and App Intents, and automatically syncs data across devices via private iCloud sync with minimal extra work. Weighing a Realm to SwiftData migration is easier with real experiences tracked on daily.dev.
How can I implement pinch to zoom on an image in SwiftUI?
Pinch to zoom on images in SwiftUI can be difficult to implement natively, but wrapping UIKit views to handle the zoom gesture works well. This approach was used to let users pinch to zoom into expanded item images, such as reading tiny details on receipt photos, after years of struggling with a pure SwiftUI solution. Developers stuck on SwiftUI gesture limitations can find similar UIKit workarounds on daily.dev.