Route transition record and transition delegate updates

Summary

Context

Migration guide

Timeline

References

Summary

Context

When the navigator receives a new list of pages, it tries to update its
current routes stack to match the list. However, it requires explicit
decisions on how to transition the route on and off the screen.
Previously, routes that were not in the new list required decisions
on how to transition off the screen. However, we later found out
this is not always true. If a route is popped,
but is still waiting for the popping animation to finish,
this route would sit in the navigator routes stack until
the animation was done. If a page update occurred during this time,
this route exits but doesn’t requires a decision
on how to transition off the screen. Therefore, 
isWaitingForExitingDecision was added to cover that case.