Problem: Navigating between pages in BibleWeb is instantaneous but abrupt — the content just appears. A subtle transition would make navigation feel smoother and more polished.
Solution: A CSS opacity crossfade (0→1) over 300ms on route changes, using SvelteKit's built-in page transition support.
Not included: Slide animations, page-specific transitions, or loading skeletons. Just a universal opacity fade.
Expected behavior:
Animation:
opacityNo animation on initial load — only on subsequent navigation.
Implementation: SvelteKit has built-in page transitions via onNavigate in +layout.svelte:
import { onNavigate } from '$app/navigation';
onNavigate((navigation) => {
// Use View Transitions API or manual opacity transition
});
Alternatively, CSS transition on the <main> element triggered by a route-change reactive state.
Files:
apps/web/src/routes/(app)/+layout.svelte (modify — add transition)Current: PLANNED Milestone: v3 Priority: Low — visual polish
Dependencies: