View Transitions API works in Chrome 111+, Edge 111+, Opera 97+, Samsung Internet 23+, Safari 18+, and Firefox 144+. Learn features, use cases, and limits.

Prince Dewani
May 2, 2026
On This Page
The View Transitions API is a W3C web standard that lets a page animate changes between DOM states in a single document or across two same-origin documents. It works in Chrome 111+, Edge 111+, Opera 97+, Samsung Internet 23+, Safari 18+, and Firefox 144+, while Internet Explorer never supported it.
This guide covers what the View Transitions API is, the browsers that support it, the key features, the difference between same-document and cross-document transitions, the use cases, and the known issues.
The View Transitions API is a JavaScript and CSS web platform feature that snapshots the page before and after a DOM update and animates the difference. The W3C CSS Working Group defines the spec. document.startViewTransition starts the animation, and CSS pseudo-elements like ::view-transition-group customize each named region.
The View Transitions API works on every modern engine. Same-document transitions ship in Chromium browsers from Chrome 111, in WebKit from Safari 18, and in Gecko from Firefox 144. Cross-document transitions ship in Chromium from Chrome 126, while Firefox and Safari do not yet support them.
Chrome supports same-document view transitions from Chrome 111 on Windows, macOS, Linux, ChromeOS, and Android, and cross-document view transitions from Chrome 126. Chrome 4 to 110 did not support the API. Chrome for Android picks up the same Blink build, so phones on Chrome 111+ animate alongside desktop.
Edge supports same-document view transitions from Edge 111 on Windows, macOS, Linux, and Android, and cross-document view transitions from Edge 126. Edge 12 to 110 did not support the API. Chromium-based Edge tracks Blink, so every Edge channel that follows the stable Chromium milestone gets View Transitions on the same schedule.
Firefox supports same-document view transitions from Firefox 144 on Windows, macOS, Linux, and Android. Firefox 143 ships the code behind the dom.viewTransitions.enabled flag, and Firefox 2 to 142 do not support the API at all. Firefox does not yet support cross-document view transitions or view transition types.
Safari supports same-document view transitions from Safari 18 on macOS, iPadOS, and iOS. Safari 18.2 added view-transition-name: auto, and Safari 18.4 added view-transition-name: match-element. Safari 3.1 to 17.6 on macOS and iOS 3.2 to 17.7 do not support the API. Safari has not shipped cross-document view transitions yet.
Opera supports same-document view transitions from Opera 97 on Windows, macOS, Linux, and Android, and cross-document view transitions from Opera 112. Opera 9 to 96 did not support the API. Opera Mobile picked it up from Opera Mobile 80, and the Chromium-based Opera and Opera GX channels ship the feature without a flag.
Samsung Internet supports same-document view transitions from Samsung Internet 23 on Galaxy phones running Android 9 or later. Samsung Internet 4 to 22 did not support the API. Samsung Internet tracks the Chromium pipeline, so cross-document view transitions land on the same channel that already runs Chrome 126+ Blink.
The legacy stock Android Browser supports same-document view transitions from Android Browser 147. Earlier Android Browser releases did not support the API. Chrome for Android 111+, the modern Android WebView 111+, and Firefox for Android 144+ also support the API on every supported Android version.
Internet Explorer does not support the View Transitions API in any version, from IE 5.5 to IE 11. The Trident engine has been frozen, so the feature will never reach IE. Microsoft has retired Internet Explorer, so move View Transitions work to Chromium-based Edge, which has supported the API since Edge 111.
Note: The View Transitions API still has gaps across Firefox cross-document support, Safari pre-18, and older Samsung Internet builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
The View Transitions API exposes one JavaScript entry point and a small CSS surface that together drive the animation. The browser handles snapshotting, layout, and tweening, so most pages need only a few lines of code.
Paste this snippet into the DevTools console of any modern browser. The expression checks for document.startViewTransition before calling it, runs a real DOM mutation that toggles a dark class on the body, and falls through to a plain class toggle on browsers that do not support the API.
// Paste this into the DevTools console of any modern browser.
if (typeof document.startViewTransition === "function") {
console.log("View Transitions API is available.");
// Animate a real DOM change. Toggling a class on <body> is enough.
document.startViewTransition(() => {
document.body.classList.toggle("dark");
});
} else {
console.log("View Transitions API is not supported. Falling back.");
document.body.classList.toggle("dark");
}Same-document view transitions animate a DOM change inside one page, typically a single-page app. Cross-document view transitions animate the navigation from one HTML document to another on the same origin, typically a multi-page app. Each path uses a different entry point and ships in a different set of browsers.
| Dimension | Same-document | Cross-document |
|---|---|---|
| Entry point | document.startViewTransition(callback) | @view-transition { navigation: auto; } |
| Typical app shape | Single-page app, route swap inside one document | Multi-page app, real navigation between two documents |
| Chromium support | Chrome 111+, Edge 111+, Opera 97+ | Chrome 126+, Edge 126+, Opera 112+ |
| Safari support | Safari 18+ on macOS, iPadOS, iOS | Not yet supported |
| Firefox support | Firefox 144+ on desktop and Android | Not yet supported |
| Origin rule | Single document, no origin check | Same-origin only, both pages must opt in |
| Lifecycle events | ViewTransition.ready and finished promises | PageRevealEvent and PageSwapEvent |
Production apps use View Transitions to make state changes feel like a fluid handoff instead of a hard cut. The API replaces hand-rolled FLIP animations and library-based page transitions for most common UI patterns.
The View Transitions API is now Baseline for same-document flows, so most rough edges show up around cross-document support, name collisions, and accessibility rather than browser gaps.
In my experience, the trap that bites every first View Transitions integration is the duplicate-name throw. A grid of cards or a list of avatars renders fine until two visible items end up with the same view-transition-name, and the whole transition skips with a console error. Generate the name from a stable id during render and the entire class of bugs disappears.
All View Transitions API version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance