SwiftUI still lags UIKit
Benchmarks and developer threads show SwiftUI still trails UIKit on scroll performance for complex, large lists — body recomputation and bridging overhead remain culprits even in iOS 26. This matters for heavy list views and custom collection behaviors where smoothness is critical. (x.com) (x.com)
A public head‑to‑head repository (jacobsapps/SwiftUI-vs-UIKit) contains the benchmark harness and results that show higher CPU and visible frame drops for the SwiftUI variants when rendering very large, complex lists on iOS 26. (github.com) WWDC25 shipped a new SwiftUI instrument in Instruments 26 that surfaces view‑body recomputation counts and a cause‑and‑effect graph so developers can trace which state changes drive expensive redraws. (developer.apple.com) Apple’s official guidance still warns that SwiftUI recreates view bodies frequently and advises moving non‑UI work out of view bodies to avoid missing display‑frame deadlines that cause jank. (developer.apple.com) Community profiling and writeups identify three recurring culprits: ForEach over array indices (instead of stable Identifiable IDs), overuse or improper lifetimes of @StateObject/@ObservedObject, and unstable row identity causing full‑row recomposition in large lists. (iifx.dev) iOS 26 added practical SwiftUI features (rich text, WebView, section index titles) while Apple also backported observation primitives into UIKit, and several developers reported ScrollView/gesture regressions in iOS 26 betas that exacerbate SwiftUI list issues. (hackingwithswift.com) As a result, engineering teams continue to fallback to UICollectionView/CompositionalLayout or host UIKit cells for mission‑critical feed and chat screens where sub‑60ms frame consistency is required, per recent industry comparisons and migration guides. (3nsofts.com)