Next.js SSR

Framework
React · Next.js App Router · ssr-forward
Click Server prefetch and inspect the request log — ssr-forward attaches Cookie / Authorization / x-request-id. In the browser the plugin skips.
Live demo · Next.js SSR
ssr-forward cookie / auth
Real createFetch with source: 'ssr' + ssr-forward — watch headers get attached (then skipped in browser).
Request log
Run server prefetch to see forwarded Cookie / Authorization.
// app/users/page.tsx (Next.js App Router)
import { cookies } from 'next/headers'
import { createFetch } from 'tanstack-fetch'
import { createSsrForwardInterceptor, createTraceInterceptor } from 'tanstack-fetch/plugins'
const createServerApi = async () =>
createFetch({
baseUrl: process.env.API_URL!,
source: 'ssr',
interceptors: [createSsrForwardInterceptor(), createTraceInterceptor()],
incoming: async () => ({
cookie: (await cookies()).toString(),
}),
})
await queryClient.query({
queryKey: ['users'],
queryFn: async () => (await createServerApi()).get('/users'),
})App Router pattern
ts
import { cookies } from 'next/headers'
import { createFetch } from 'tanstack-fetch'
import {
createRetryIdempotentInterceptor,
createSsrForwardInterceptor,
createTraceInterceptor,
} from 'tanstack-fetch/plugins'
export const createServerApi = async () =>
createFetch({
baseUrl: process.env.API_URL!,
source: 'ssr',
interceptors: [
createSsrForwardInterceptor(),
createTraceInterceptor(),
createRetryIdempotentInterceptor(),
],
incoming: async () => ({ cookie: (await cookies()).toString() }),
})Guide: SSR — Next.js · Nuxt twin: Nuxt SSR · example: examples/next-ssr
