View Transitions
SPA-like page transitions with zero JavaScript framework. Native browser APIs, full page navigation, and smooth animations.
i
What are View Transitions?
View Transitions API lets you animate between page navigations, creating smooth morphing
effects between elements. Astro makes this trivially easy with the
transition:name
directive.
Try It Yourself
Image Gallery Demo
Click through the gallery to see images morph between list and detail views. Use your browser's back button—the transition works both ways.
How It Works
Enable View Transitions astro
---
// In your layout or page
import { ViewTransitions } from 'astro:transitions';
---
<html>
<head>
<ViewTransitions />
</head>
<body>
<slot />
</body>
</html> Name Your Elements astro
<!-- List page -->
<img
src={item.image}
transition:name={`image-${item.id}`}
/>
<!-- Detail page -->
<img
src={item.image}
transition:name={`image-${item.id}`}
/>
<!-- Same name = morph animation! --> Transition Types
morph (default)
Elements with matching transition:name smoothly transform between pages.
Size, position, and content animate together.
fade
Cross-fade between old and new content. Use transition:animate="fade"
for simple opacity transitions.
slide
Slide content in from the side. Great for navigation patterns.
Use transition:animate="slide".
Custom
Define your own CSS animations with transition:animate={myAnimation}.
Full control over keyframes and timing.
Benefits Over SPAs
- ✓ No client-side router needed
- ✓ Works with browser navigation
- ✓ Native browser API (progressive enhancement)
- ✓ Zero JavaScript for basic transitions
- ✓ SEO-friendly full page navigation
- ✓ Accessible by default