skills/dev-skills/angular-developer/references/route-animations.md
Angular Router supports the browser's View Transitions API for smooth visual transitions between routes.
Add withViewTransitions() to your router configuration.
provideRouter(routes, withViewTransitions());
This is a progressive enhancement. In browsers that don't support the API, the router will still work but without the transition animation.
Transitions are customized in global CSS files (not component-scoped CSS).
Use the ::view-transition-old() and ::view-transition-new() pseudo-elements.
/* Example: Cross-fade + Slide */
::view-transition-old(root) {
animation: 90ms cubic-bezier(0.4, 0, 1, 1) both fade-out;
}
::view-transition-new(root) {
animation: 210ms cubic-bezier(0, 0, 0.2, 1) 90ms both fade-in;
}
Use onViewTransitionCreated to skip transitions or customize behavior based on the navigation context.
withViewTransitions({
onViewTransitionCreated: ({transition, from, to}) => {
// Skip animation for specific routes
if (to.url === '/no-animation') {
transition.skipTransition();
}
},
});
styles.css to avoid view encapsulation issues.view-transition-name to elements that should transition smoothly across routes (e.g., a header image).