← Back to release summary

View Transition finished promise timing change

Category
JavaScript
Type
No developer-visible change
Status
Proposed (Chrome Proposed)
Intent stage
None

Summary

The current finished promise timing happens within the rendering lifecycle steps. This means that code that runs as a result of promise resolution happens after the visual frame that removes the view transition has been produced. This can cause a flicker at the end of the animation if script moves some styles around in an attempt to preserve visually similar state (e.g. https://vmpstr.github.io/htmldemos/vt/flicker.html) This change rectifies the situation by moving the ViewTransition clean up steps to run asynchronously after the lifecycle is completed. This ensures that visual frame produced at finished promise resolution still maintains the View Transition structure, allowing developers to avoid the flicker. More info: https://github.com/w3c/csswg-drafts/issues/12442

Standards & signals

View on chromestatus.com