Skip to content

About

A working UIKit-to-SwiftUI migration with a tagged baseline, shared persistence, parity checks, and both interfaces.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SwiftUI Modernization icon

SwiftUI Modernization

A working UIKit-to-SwiftUI migration with a buildable baseline and both interfaces sharing the same data.

iOS 15+ · Swift · MIT License

SwiftUI Modernization running in the iOS simulator with example data

What it does

  • Create, edit, complete, search, filter, and delete tasks.
  • Switch between the original UIKit interface and its SwiftUI replacement.
  • Preserve the same Codable model, UUIDs, storage location, and repository.
  • Inspect the tagged UIKit baseline and review the migration as a real Git diff.

Run

Open SwiftUI Modernization.xcodeproj in Xcode 16 or later. The shared scheme has the same name. No third-party Swift packages are required. Builds were checked with Xcode 27; minimum OS declarations are not a claim that every older OS was runtime-tested.

Select an iPhone or iPad simulator and run. Load examples or create a task, then switch interfaces using the top control. No backend or credentials are required.

The app targets iOS 15. The UIKit baseline uses older APIs, but Xcode 27 rejects deployment targets below iOS 15.

Bundle identifier: com.dd.swiftuimodernization.

Try it

Create a high-priority task in UIKit, switch to SwiftUI, mark it complete, then return to UIKit and filter to Done. Relaunch to confirm the same data persists.

Implementation

TaskRepository handles disk access, TaskQuery handles search/filter rules, and TaskStore is the shared observable mutation boundary. LegacyTaskBoard embeds the original navigation controller through UIViewControllerRepresentable. The SwiftUI replacement uses the same store.

Verification

Run swift test for filter composition, identity-preserving persistence, and corrupt-data handling. Follow the migration parity checklist to compare both interfaces.

Scope and limitations

This is a deliberately bounded migration case study, not a claim about a third-party production app. It does not include a remote API, analytics, or performance benchmark claims.

Data and privacy

See PRIVACY.md for storage and network behavior. Sample data is fictional.

License

MIT. Original source and app artwork are included under the same license.

About

A working UIKit-to-SwiftUI migration with a tagged baseline, shared persistence, parity checks, and both interfaces.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages