Contact emails
bo...@chromium.org, hvanops...@chromium.org,  jakearchib...@chromium.org,
khushalsa...@chromium.org, vmp...@chromium.org

Explainer

https://github.com/WICG/view-transitions/blob/main/explainer.md
<https://github.com/WICG/shared-element-transitions/blob/main/explainer.md>

Specification

https://www.w3.org/TR/css-view-transitions-1

Summary

View Transitions
<https://developer.chrome.com/docs/web-platform/view-transitions/> is an
API that enables the creation of polished transitions. Web developers only
need minimal effort to make transitions look nice. They can choose to use
some default animation properties, or they can customize their own
transition effects to achieve a desired transition experience.

This is accomplished by leveraging user-agents’ ability to persist visual
representations of rendered output (i.e. snapshots) and blend them with the
live DOM state’s rendered output. The API also allows these animations to
be customized via standard CSS animation properties.


Note that while this intent is limited to shipping an API for same-document
transitions (i.e. by using document.startViewTransition, as outlined in the
spec), there is ongoing work to provide this feature for same-origin,
cross-document navigations (MPA). MPA support will be added as a follow up
via a separate intent to ship.

Blink component

Blink>ViewTransitions
<https://bugs.chromium.org/p/chromium/issues/list?q=component%3ABlink%3EViewTransitions&can=2>

TAG review

https://github.com/w3ctag/design-reviews/issues/748

TAG review status

Pending

Risks
Interoperability and Compatibility

Low. As a new feature, the primary risk is that other browsers do not
implement it. But since this is a progressive enhancement, sites should be
able to feature-detect and drop usage of the feature easily in browsers
where it is not supported without breaking any site functionality.

This feature can be feature-detected by checking the existence of the
document.startViewTransition function:

```js

if (!document.startViewTransition) {

  /* feature is not available */

} else {

  /* start transition */

}

```

Gecko: Under consideration (
https://github.com/mozilla/standards-positions/issues/677)

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/48)

Web developers: Strongly positive interest in and developer experimentation
with the API:

   -

   Updated developer.chrome article (Twitter)
   <https://twitter.com/jaffathecake/status/1554460598980812809>
   -

   News about the new SET API (Twitter)
   <https://twitter.com/jaffathecake/status/1524782819431555074>
   -

   Dev-built demo using SET (Twitter)
   <https://twitter.com/jh3yy/status/1550675304280035328>
   -

   I/O Session (Youtube <https://www.youtube.com/watch?v=JCJUPJ_zDQ4>)
   -

   Dev-built demo using SET (Reddit)
   
<https://www.reddit.com/r/webdev/comments/uyoit1/i_played_around_with_chromes_new_shared_element/>

   -

   Dev-built demo using SET (Twitter)
   
<https://twitter.com/OliverJAsh/status/1530261401016705026?t=CXqW2yiIMbH6bLfn8ImINw&s=19>
   -

   Dev-built demo using SET (Twitter)
   <https://twitter.com/charca/status/1561830946462384128>
   -

   Dev-built demo using SET (Twitter)
   <https://twitter.com/AdrianBeceDev/status/1567177956199485450>
   -

   Dev-built demo using SET (Twitter)
   <https://twitter.com/charca/status/1570835238359830529>
   -

   https://twitter.com/dannymoerkerke/status/1597187172783693824
   -

   The Shared Element Transition API is Flipping Cool | Chris Coyier
   
<https://chriscoyier.net/2022/10/21/the-shared-element-transition-api-is-fliping-cool/>
   -

   Every Transition is a Page Transition? | OddBird
   <https://www.oddbird.net/2022/06/29/shared-elements/>
   -

   https://twitter.com/derSchepp/status/1590709783807791104
   -

   Astro stands to benefit highly from View Transitions | Chris Coyier
   
<https://chriscoyier.net/2022/11/08/astro-stands-to-benefit-highly-from-view-transitions/>

   -

   Shared Element Transitions API Part 1 | Smashing Magazine
   
<https://www.smashingmagazine.com/2022/10/ui-animations-shared-element-transitions-api-part1/>


Ergonomics

None.

Activation

   Low.

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. That said, this feature is a progressive enhancement
for sites; they can easily use the API and  still function correctly on
browsers that do not support the feature.

Security

The primary security constraint is ensuring isolation of graphics resources
from multiple origins. The design achieves that by using Chromium's Viz
process, similar to site isolation for iframes.

See also the security and privacy self-review questionnaire that was
completed as part of the TAG review process:
https://github.com/WICG/view-transitions/blob/main/security-privacy-questionnaire.md

The following issues track review from security/privacy WGs:
https://github.com/w3c/security-request/issues/43 and
https://github.com/w3cping/privacy-request/issues/107.


WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that
it has potentially high risk for Android WebView-based applications?

None. This feature is fully available and functional for WebView.

Debuggability

The feature can be debugged using standard tooling in devtools.
Specifically, the animations drawer tab
<https://developer.chrome.com/docs/devtools/css/animations/> can be used to
pause and scrub through all animations on generated pseudo-elements.

The pseudo DOM structure generated by the user agent can also be inspected
and targeted, like other DOM elements, in the style panel.

Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, Chrome OS, Android, and Android WebView)?

Yes

Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?

Yes

DevTrial instructions

https://developer.chrome.com/docs/web-platform/view-transitions

Flag name

ViewTransition

Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1405452

Measurement

Usage is tracked via a UseCounter:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/view_transition/view_transition_supplement.idl;l=9;drc=501455e6942313c87a276e8fde93e507786cc51c

Sample links

https://developer.chrome.com/docs/web-platform/view-transitions

Previous milestones

OriginTrial desktop last

106

OriginTrial desktop first

104

DevTrial on desktop

104

OriginTrial Android last

106

OriginTrial Android first

104

DevTrial on Android

104


Anticipated spec changes

Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github issues
in the project for the feature specification) whose resolution may
introduce web compat/interop risk (e.g., changing to naming or structure of
the API in a non-backward-compatible way).

The following open issues are awaiting resolution in CSSWG:
https://github.com/w3c/csswg-drafts/issues?q=is%3Aopen+css-view-transitions+label%3Acss-view-transitions-1+label%3AAgenda%2B.
We anticipate that any change from a resolution on these issues has minimal
to no compat risk.

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5193009714954240

Links to previous Intent discussions

Intent to prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/7SMI3IklO4g/m/JS-JojxNAwAJ

Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUyUH0939fLa7xH_EuRtgn0MWBzG8qzLMmH0zJ9GBBTh-A%40mail.gmail.com


This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUxa3FH0pseWhQWg3w0ESfHMhjK3KLyat8G4sQzZ0tmzOA%40mail.gmail.com.

Reply via email to