SwiftUI Issues, Limitations & Unknowns

With Apple's documentation for SwiftUI being limited, I wanted to create a central resource of all bugs, issues and limitations with SwiftUI.

Current Issues

  • Environment/observed objects lose data on list view change. This problem appear in case when parent view updated with same data in terms of hash. The bug is not appearing when the parent view updated with different data.
  • Tab view resets view and navigation stack
  • Modal views/sheets don't automatically have environment data
  • Context menu not showing on a custom view with resizable or geometry reader
  • Multiple buttons in a list row causes both buttons to be actioned upon when tapped
  • 'Tried to pop to a view controller that doesn't exist' crash
  • .minimumScaleFactor() is broken in WatchOS app: instead of scaling down, it just set to minimum
  • List insets change padding within a list view when changing state
  • List doesn't update update a list view using an array and ForEach()
  • List crashes when TabView tab changes during a scroll

Limitations/Unknowns

  • No SwiftUI equivalent to UICollectionView
  • Scrollview with HStack and items have poor performance for large data sets (all child views are loaded on init).
    • 📝 FB7216618
  • Unable to change navigation appearance for a single view
    • 📝 FB7310681
  • Unable to easily support deep linking for universal links or notifications
    • 📝 FB7408717
  • Unable to use a UISearchController with a SwiftUI view
  • Unable to remove a list item background altogether for one cell
    • 📝 FB7371374
  • Unable to know when view becomes active again (equivalent to viewDidAppear)
  • Unable to change status bar colour
  • @FetchRequest property wrapper doesn't support dynamic variable predicates
  • List doesn't support section index
    • 📝 FB7441706
  • Horizontal ScrollView inside a vertical ScrollView captures vertical scrolling gesture on macOS

Resolved

Please feel free to PR and submit examples, workarounds and/or fixes so I can keep this up to date.