Performance: Why middleware intercepts requests
Middleware interception affects the time before the main page content starts loading by running code on requests early in the server process.
Jump into concepts and practice - no test required
import { NextResponse } from 'next/server'; export function middleware(request) { // minimal quick check if (!request.cookies.get('auth')) { return NextResponse.redirect('/login'); } return NextResponse.next(); }
import { NextResponse } from 'next/server'; export function middleware(request) { // heavy synchronous logic for (let i = 0; i < 1000000; i++) {} return NextResponse.next(); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Heavy synchronous middleware logic | 0 (server-side) | 0 | Blocks initial paint | [X] Bad |
| Minimal quick middleware checks | 0 (server-side) | 0 | Non-blocking initial paint | [OK] Good |
import { NextResponse } from 'next/server';
export function middleware(request) {
if (!request.cookies.get('token')) {
return NextResponse.redirect(new URL('/login', request.url));
}
return NextResponse.next();
}import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname === '/admin') {
NextResponse.redirect('/login');
}
return NextResponse.next();
}