The page cover and its Tile Dissolve reveal, in place of the loading screen

Featurekamo-internal
Shipped
September 12, 2026 at 10:24 PM UTC
Author
Kamo
Commit
d94c098

Between pages the main view area (never NavTop or NavPri) is now covered in the organization's primary colour with its full logo centred on it, painted with the Behavior & Labeling "Loading Screen Logo Overlay" when one is set. It drops in the same task as the click that starts a navigation, is painted by the server in the first frame of every document so a reload and a click look the same, and is taken away the moment the new route has rendered. Tile Dissolve is the reveal: the cover, colour and logo as one image, cut into 50 px tiles that lift, turn, round their corners and fade from the top-left corner to the bottom-right on a seeded, jittered diagonal wave, normalised so it takes about 1.2 s on any screen. - Navigation is detected through Next's onRouterTransitionStart (instrumentation-client.ts), which reports every Link, push, replace and back/forward synchronously. A capture-phase listener covers full-document anchors, and a click that turns out not to navigate is undone before it is painted. The rules are pure: every URL change covers, tab switches included; filter, search and selection replaces stay silent; the hash never counts. - The reveal waits for a commit probe rendered after the page, and app/loading.tsx now only holds the cover while a route's Suspense fallback is up. - Tiles are drawn by a Web Worker on an OffscreenCanvas, because the reveal runs while the new page is mounting and a main-thread animation stutters through exactly that. The same engine runs on the main thread when a worker or a CORS-clean logo is unavailable. The worker paints frame 0 before the DOM cover hides and the clock starts only after, so the handoff has no seam. - It cannot stick: a watchdog reveals after 12 s without a commit, a reveal that cannot be drawn fades, a CSS failsafe clears a cover no script took over, and reduced motion gets a 180 ms fade. - The cover spec is validated, kept per tab in sessionStorage, and applied before first paint by a blocking head script, so the shared host never flashes the platform's branding. - The platform's transition is followed live over **************** LoadingContext, LoadingManagerClient, NavigationInterceptor, LoadingStatus and useNavigationLoading are gone; /validate and /logout keep LoadingScreen, having no shell to cover.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing