Dmytro Morar
Next.js

Navigation

Navigation can be server-driven (default) or client-driven, depending on component type and trigger.

Server navigation

  • Default for RSC pages and segments.
  • Server sends a new RSC payload; React updates changed segments.
  • Streaming via Suspense; layouts persist.
  • Triggered by Link between RSC routes.

Client navigation

  • Used with Client Components or router.push().
  • Browser performs navigation but still fetches new RSC payloads.
  • Client JS stays active; no full reset.

Key differences

FeatureServerClient
TriggerRSCClient Components
Client JSNoneRequired
StreamingYesNo
Payload sizeSmallerLarger with more client components
Layout preservedYesYes

Note

Both modes load a new RSC payload; the difference is where navigation logic runs.

On this page