Performance: Redirect and rewrite in middleware
This concept affects page load speed by controlling navigation early in the request lifecycle, impacting how fast users see the correct content.
Jump into concepts and practice - no test required
import { NextResponse } from 'next/server'; export function middleware(request) { if (request.nextUrl.pathname === '/old-path') { return NextResponse.rewrite(new URL('/new-path', request.url)); } return NextResponse.next(); }
import { NextResponse } from 'next/server'; export function middleware(request) { if (request.nextUrl.pathname === '/old-path') { return NextResponse.redirect(new URL('/new-path', request.url)); } return NextResponse.next(); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Middleware Redirect | Minimal | 0 | Extra delay due to new request | [!] OK |
| Middleware Rewrite | Minimal | 0 | No extra delay, direct content serving | [OK] Good |
import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname === '/dashboard') {
return NextResponse.rewrite(new URL('/profile', request.url));
}
return NextResponse.next();
}import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname === '/old') {
return NextResponse.redirect('/new');
}
return NextResponse.next();
}