The other day, I was playing around with matchedGeometryEffect view modifier in my sample app. I was just planning to show a list of items and then animate moving one item from one HStack to another. Suddenly, my SwiftUI preview stopped working. On the other hand, running exactly the same code on the simulator just worked fine. The code was very simple, consisting of view, view model and an Item model struct.
If you try to render SwiftUI preview (I was using Xcode 14.3) then Xcode is giving up with “Failed to launch the app XXX in reasonable time”. But if I try to build and run it on simulator, it just works fine. After some trial and error, it turned out that SwiftUI previews broke as soon as I added the
func select(_ item: Item) function. If you pay a close attention, then you can see that the longer type name for
ContentView.Item, but within the
ContentView.ViewModel type I am using just
Item. I do not know why, but SwiftUI previews seems to get confused by it. As soon as I change the function declaration to
func select(_ item: ContentView.Item) the preview starts rendering again. Another way is declaring the
Item struct outside the
The learning point is that if SwiftUI previews stop working suddenly, then make sure to check how nested types are used in function declarations.
If this was helpful, please let me know on Mastodon@toomasvahter or Twitter @toomasvahter. Feel free to subscribe to RSS feed. Thank you for reading.