Why does SwiftUI use "leading edge" observation?

Is it possible to concisely state the reason that SwiftUI uses "leading edge" observation, i.e., willSet instead of didSet?

The vague understanding that I had gotten was that it's so that the framework has the opportunity to collect information pre-update so as to be able to smoothly animate the change. I just realized though that I don't understand why the framework doesn't already have all the information that it needs by virtue of having rendered the current view hierarchy in the first place (which would make observation of the "trailing edge" i.e. didSet sufficient).

4 Likes