The new Observation features come with a withObservationTracking(_ apply:onChange:) that executes the onChange closure when any property accessed in the apply closure is modified. However, the onChange closure is executed before the properties have their new values. Even in the Combine framework, the observers are notified before the actual change via objectWillChange().
Why not be notified after the change so that we can access the new values then and there? Wouldn't that make things a lot easier rather than setting a flag that'll update all the dependencies next frame?
Is this a design choice or is there a objective reason as to why this is better?