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
Linkbetween 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
| Feature | Server | Client |
|---|---|---|
| Trigger | RSC | Client Components |
| Client JS | None | Required |
| Streaming | Yes | No |
| Payload size | Smaller | Larger with more client components |
| Layout preserved | Yes | Yes |
Note
Both modes load a new RSC payload; the difference is where navigation logic runs.