全リクエストの前に共通処理を挟むファイルは、Next.js 16 では何という名前ですか。
proxy.ts です。リクエストがルートに届く前に実行されます。15 以前の middleware.ts からの改名ですが、proxy は Node.js 固定で、Edge で動かすなら非推奨の middleware を使い続けます。
面接官が見ているのは🔴 16 での改名。知らないと参画先のコードで戸惑う。
よくある答えと、面談でどう見られるか
- proxy.ts。15 以前は middleware.ts で、16 で改名された
公式のコードモッドが自動で書き換えます。両方知っているのが実務的です。 - middleware.ts
15 以前ならそれで正しく、現場のコードもそうなっています。16 では proxy.ts です。 - interceptor.ts
そういう規約はありません。 - proxy.ts。middleware は非推奨になったが、まだ使える
その通りです。middleware.ts は非推奨のまま動きます。proxy は Node.js ランタイム固定なので、Edge ランタイムを使い続けたい場合は middleware のままにするよう公式も案内しています。
模範解答
proxy.ts です。プロジェクト直下(pages や app と同じ階層。src を使うなら src の中)に1つだけ置けます。リクエストがルートに届く前に実行されます。
Next.js 16 での改名で、15 以前は middleware.ts でした。公式のアップグレード手順にも「middleware.<拡張子> を proxy.<拡張子> に改名する」という項目があり、コードモッドが自動で書き換えます。ただし単なる改名ではありません。proxy は Node.js ランタイム固定で、Edge ランタイムでは動きません。Edge で動かしたい場合は、非推奨の middleware.ts を使い続けるよう公式が案内しています。
面談では両方知っていると答えるのが一番良いです。現場のコードは 15 以前のままであることも多いので、「16 で proxy.ts になったが、参画先が 15 なら middleware.ts のはず」と言えると強い。
置くのは軽い判定だけにします。対象を絞らなければ全リクエストが通るので、ここにDBへの問い合わせを入れると全ページが遅くなります。
対象: Next.js 16(App Router) 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。