
Page Transitions
- 445 installs
- 68 repo stars
- Updated December 30, 2025
- dylantarre/animation-principles
page-transitions is an agent skill that applies Disney's 12 animation principles to route changes, view transitions, and navigation patterns so SPAs and multi-page apps avoid jarring layout jumps.
About
page-transitions is a skill from dylantarre/animation-principles for implementing navigation animation in web and mobile applications. It maps Disney's 12 animation principles—squash and stretch, anticipation, staging, follow through, slow in and slow out, and others—to concrete page transition patterns including shared element bridges, elastic enter effects, exit-before-enter sequencing, and content settle choreography. Developers reach for it when implementing route changes, modal open and close animation, or view transitions that need motion continuity instead of hard cuts. The quick-reference table ties each principle to a specific transition technique for SPAs and native navigation stacks.
- Choreographs enter, exit, and shared-element transitions
- Applies View Transitions API or framework motion layers
- Preserves layout stability and scroll position across routes
- Manages focus and screen-reader announcements on navigation
- Balances duration with perceived speed and reduced-motion paths
Page Transitions by the numbers
- 445 all-time installs (skills.sh)
- Ranked #641 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dylantarre/animation-principles --skill page-transitionsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 445 |
|---|---|
| repo stars | ★ 68 |
| Last updated | December 30, 2025 |
| Repository | dylantarre/animation-principles ↗ |
How do you animate page transitions without layout jumps?
Implement route and view transitions—shared elements, enter/exit choreography, and loading continuity—in SPAs and multi-page apps without jarring layout jumps.
Who is it for?
Frontend engineers building SPAs or mobile apps who need principled route, modal, and view transition animation beyond default crossfades.
Skip if: Projects needing only static page swaps or backend-only work with no navigation animation requirements.
When should I use this skill?
User implements route changes, view transitions, modal animations, or navigation patterns and wants smooth enter/exit choreography without jarring jumps.
What you get
Route transition specs, shared-element choreography, and enter/exit animation implementations
- Transition animation spec
- Shared-element implementation
By the numbers
- Maps Disney's 12 animation principles to page transition implementations
Files
Page Transition Animation
Apply Disney's 12 animation principles to route changes, view transitions, and navigation patterns.
Quick Reference
| Principle | Page Transition Implementation |
|---|---|
| Squash & Stretch | Entering page elastic effect |
| Anticipation | Exit animation before enter |
| Staging | Hero elements bridge views |
| Straight Ahead / Pose to Pose | Shared element vs crossfade |
| Follow Through / Overlapping | Content settles after nav |
| Slow In / Slow Out | Asymmetric enter/exit easing |
| Arc | Slide transitions with curve |
| Secondary Action | Background, nav state changes |
| Timing | 200-500ms total transition |
| Exaggeration | Reserved for emphasis moments |
| Solid Drawing | Consistent spatial model |
| Appeal | Smooth, oriented navigation |
Principle Applications
Squash & Stretch: Incoming pages can have subtle elastic settle. Modal sheets bounce slightly on full open. Pull-to-navigate stretches before triggering.
Anticipation: Current page begins exit before new page enters. Slight fade or scale prepares for change. Navigation indicator updates before page swaps.
Staging: Shared/hero elements maintain context across views. Common elements (nav, footer) stay stable. New content area receives transition focus.
Straight Ahead vs Pose to Pose: Shared element transitions morph continuously (straight ahead). Crossfades swap between discrete states (pose to pose). Choose based on content relationship.
Follow Through & Overlapping: Page content settles after initial position. Staggered content entry—header, then body, then footer. Images load with subtle fade after container.
Slow In / Slow Out: Exit: ease-in (accelerate away). Enter: ease-out (decelerate in). Combined: ease-in-out for shared elements. Never linear—feels broken.
Arc: Slide transitions can curve slightly. Stack navigation implies z-depth. Circular reveals expand from trigger point.
Secondary Action: Header updates title during transition. Bottom nav indicator moves. Background color shifts. Scroll position resets with transition.
Timing: Quick transitions: 200-300ms. Standard: 300-400ms. Complex: 400-500ms. Modal/sheet: 250-350ms. Back navigation often faster than forward.
Exaggeration: Save exaggeration for key moments—onboarding, achievement. Regular navigation should be smooth, not theatrical. Users navigate frequently.
Solid Drawing: Maintain consistent spatial metaphor. If pages stack, maintain z-order. If pages slide, direction should be consistent. Users build mental model from transitions.
Appeal: Transitions should feel helpful, not impressive. Fast, smooth, oriented. Users should understand where they came from and went to.
Transition Patterns
Crossfade (Default)
.page-exit {
opacity: 1;
}
.page-exit-active {
opacity: 0;
transition: opacity 200ms ease-in;
}
.page-enter {
opacity: 0;
}
.page-enter-active {
opacity: 1;
transition: opacity 200ms ease-out;
}Slide (Hierarchical)
/* Forward navigation */
.page-enter {
transform: translateX(100%);
}
.page-enter-active {
transform: translateX(0);
transition: transform 300ms ease-out;
}
.page-exit-active {
transform: translateX(-30%);
transition: transform 300ms ease-in;
}
/* Back navigation - reversed */
.page-enter {
transform: translateX(-30%);
}
.page-exit-active {
transform: translateX(100%);
}Shared Element (Hero)
// View Transitions API
document.startViewTransition(() => {
updateDOM();
});
// CSS for specific element
.hero-image {
view-transition-name: hero;
}
::view-transition-old(hero),
::view-transition-new(hero) {
animation-duration: 300ms;
}Timing Reference
| Transition Type | Duration | Exit | Enter |
|---|---|---|---|
| Crossfade | 200-300ms | ease-in | ease-out |
| Slide forward | 300-400ms | ease-in | ease-out |
| Slide back | 250-350ms | ease-in | ease-out |
| Modal open | 250-350ms | — | ease-out |
| Modal close | 200-300ms | ease-in | — |
| Shared element | 300-400ms | n/a | ease-in-out |
| Tab switch | 150-200ms | instant | ease-out |
Navigation Patterns
| Pattern | Transition | Direction |
|---|---|---|
| Drill-down (list→detail) | Slide left / shared element | Right = forward |
| Tab bar | Fade / slide | Horizontal |
| Bottom sheet | Slide up | Vertical |
| Modal | Scale + fade | Z-axis |
| Back button | Reverse of forward | Left = back |
Performance
1. Use transform and opacity only 2. Hardware acceleration: will-change: transform 3. Reduce motion: instant transitions 4. Test on slow devices—transitions must not block 5. View Transitions API: native performance
Related skills
How it compares
Use for principled navigation motion design; pick framework-specific animation libraries when you only need API docs without UX choreography guidance.
FAQ
What animation framework does page-transitions use?
page-transitions applies Disney's 12 animation principles to route changes, view transitions, and modal navigation. Each principle maps to a concrete technique such as shared element staging or anticipation before enter.
When should developers use page-transitions?
page-transitions applies when implementing route changes, view transitions, modal open and close animation, or navigation patterns in web and mobile apps where hard cuts cause jarring layout jumps.