NexusRuntime
NexusRuntime
is a client-only component that is essential for the client-side functionality of next-nexus. It should be placed once in your root layout.
Core Concepts
Client-Side Cache Initialization
The component initializes the in-memory LRU cache used by all client-side hooks (useNexusQuery
, useNexusMutation
, etc.). This cache is what makes client-side state management and revalidation possible.
Hydration Receiver
NexusRuntime
is responsible for receiving the hydration payload serialized by NexusHydrationBoundary
. When the client-side application mounts, this component applies the payload, “hydrating” the client cache with the data that was already fetched on the server. This ensures a seamless transition from server-rendered content to an interactive client-side application without refetching data.
RSC Request Integration
During client-side navigations (RSC requests), NexusRuntime
automatically intercepts fetch
calls to add cookies containing metadata about the client’s cache state (__NEXUS_CLIENT_CACHE__
). This allows the server to make intelligent decisions, such as:
- Skipping hydration for data the client already has (based on ETag).
- Instructing the client to extend the TTL for not-modified cache entries.
This process is key to features like Rendering Delegation with
NexusRenderer
.
Import
import { NexusRuntime } from 'next-nexus/client';
Usage
Insert NexusRuntime
once in your root layout (app/layout.tsx
), just before the closing </body>
tag.
// app/layout.tsx
import { NexusRuntime } from 'next-nexus/client';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<NexusRuntime />
</body>
</html>
);
}
Important: Do not add this component to nested layouts or any other component. It must be installed exactly once, globally.
Props
maxSize?
:number
(default:200
) — The maximum number of entries for the client-side LRU cache.
See also