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.
π¨ Example- βπ» Explanation
π FB7411430
- Tab view resets view and navigation stack
π¨ ExampleβͺοΈ Workaroundπ FB7301114
- Modal views/sheets don't automatically have environment data
π¨ Example
- Context menu not showing on a custom view with resizable or geometry reader
π¨ Exampleπ FB7416520
- Multiple buttons in a list row causes both buttons to be actioned upon when tapped
π¨ ExampleβͺοΈ Workaroundπ FB7416322
- 'Tried to pop to a view controller that doesn't exist' crash
π¨ ExampleβͺοΈ Workaround
- .minimumScaleFactor() is broken in WatchOS app: instead of scaling down, it just set to minimum
π FB7408679π¨ Example
- List insets change padding within a list view when changing state
- List doesn't update update a list view using an array and ForEach()
π¨ Example
- List crashes when TabView tab changes during a scroll
π¨ Example
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
π¨ Exampleπ FB7416329
- 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
βͺοΈ Workaroundπ FB7400803
- @FetchRequest property wrapper doesn't support dynamic variable predicates
βͺοΈ Workaroundπ FB7207999
- List doesn't support section index
π FB7441706
- Horizontal
ScrollView
inside a verticalScrollView
captures vertical scrolling gesture on macOSπ FB7673707π¨ Example
Resolved
- Unable to remove or customise list separators
π FB7108559β iOS 15: hide list separators for certain edges with.listRowSeparator
, and change tint color with.listRowSeparatorTint
Please feel free to PR and submit examples, workarounds and/or fixes so I can keep this up to date.