Shared Element Transitions is a proposal for a new script API that allows a simple set of transitions in both Single-Page Applications (SPAs) and Multi-Page Applications (MPAs).
This feature enhances the visual polish of pages without requiring a large development effort from developers to make transitions look nice. By selecting from a set of user-agent implemented transition effects, the developers can achieve a polished transition look with minimal effort.
TAG review status
Interoperability and Compatibility
As with interop/compat risks, the difficulty stems from this being a new feature without support in other browsers. A polyfill for the SPA case would be beneficial, but it will not be possible to polyfill MPA behavior. That said, dropping the customized transition should not impact the usability of a site, fundamentally, so this can easily be dropped on browsers that do not support the feature.
Goals for experimentation
The API shape is currently limited, providing only a stock set of transition types. We've already seen engagement on the WICG and a desire for more customization (see web developer response). We hope to learn more about the utility of the default transition types and experiences partners would like to create, but are unable to achieve with the limited API (we have two external partners who have indicated interest). Based on that feedback, we may make changes to the API to add more customization. We also want to know how easy it is to adopt this API on an existing site.
Reason this experiment is being extended
Ongoing technical constraints
It is possible to set breakpoints inside post-preparation and post-transition handlers, but beyond this there is no way, presently, to debug an unexpected transition. Specifically, there currently is no way to scrub through a transition, or to inspect the shared/transitioned elements. These are potential areas for improvement if we get developer feedback that these would be helpful.
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Currently no support for Android WebView. WebView presents challenges due to its rendering architecture.
Link to entry on the Chrome Platform Status
Links to previous Intent discussions