The Destination of a NavigationLink is instantiated, but not displayed, when the View with the NavigationLink is instantiated. If the destination view then performs a significant amount of processing every time the origin view changes, but prior to the destination view needing display, there can be significant degradation of app performance. E.g. I've added SwiftUI Views to an existing app in order to analyse accumulated data; the user selects filter and statistics parameters from Pickers prior to pressing the "Calculate" button (NavigationLInk). The Link destination is instantiated and executed (eg data calculations)every time a property (e.g. filter selection) changes in the origin view before the user has pressed the Calculate button.
Also, I assume that all subviews of a View are instantiated when the parent View is instantiated, even though they may not all be on screen. Add to this the fact that ObservedObjects, when changed, trigger a redisplay of any/all? containing Views.
So, all of this leads me to suggest that design of SwiftUI apps is critical, especially where the app has many views and/or there is complex processing as a result of user interaction.
I look forward to suggestions and/or pointers to best-practice design.
Regards,
Michaela