本文へ移動
verified onnext@16.3.5react@19
最終検証日 2026-10-23
Next.js道場

Expected RSC response, got text/plain の読み方

実際に出るエラー

Error: The Server Reference ID did not match the expected format. Received "1".
⨯ Error [InvariantError]: Invariant: Expected RSC response, got text/plain. This is a bug in Next.js.

無い URL へ、Server Action を呼ぶ見出しを付けた POST が来たときに、サーバーのログに出るエラーです。

いつ出るのか

next start のログに、次の2つが続けて出ます。

Error: The Server Reference ID did not match the expected format. Received "1".
⨯ Error [InvariantError]: Invariant: Expected RSC response, got text/plain. This is a bug in Next.js.

「This is a bug in Next.js」とありますが、自分のコードが壊れているわけではありません。無い URL へ、Server Action を呼ぶときの見出しを付けた POST が来たときに出ます。

このサイトでも 2026-10-24 に、/api/action・/_next/data・/action など無い URL へ、この形の POST が 26 秒で 60 件届きました。Server Actions の弱点を探す自動の探りと見られます。

出る条件

同じ最小構成のアプリに、見出しを変えた POST を送って確かめました。

送った POST と、返った状態コード(実機で確かめた)
送り先付けた見出し状態コード
無い URLNext-Action と RSC: 1500(このエラー)
無い URLNext-Action だけ400
無い URLRSC: 1 だけ404
あるページNext-Action と RSC: 1307(?_rsc 付きの同じ URL へ)

出るのは、無い URL に Next-Action と RSC: 1 の両方を付けたときだけでした。Next-Action は Server Action の ID を運ぶ見出しで、探りでは 1 のようなでたらめな値が入っています。最初の行の「ID の形が合わない」はそのためです。

放っておいてよい理由

  • 関数は1つも動いていません。実機では、本物の Server Action を置いたアプリに送っても、その関数は呼ばれませんでした。ID の形が合わない時点で止まっています
  • 500 の中身は Internal Server Error という文字だけでした

ただし、Server Actions を狙った探りであることは確かです。公式の発表によると、2026-10-14 に Server Actions を使うアプリへの DoS が修正されています(16.4.1)。Next.js を新しく保つことのほうが大事です。

通知を送っているなら、この形だけ外す

instrumentation.ts の onRequestError でエラーを通知していると、このエラーも通知されます。外から誰でも起こせるので、通知のメールを他人に何通でも出させられることになります。

このサイトでは、Next-Action 見出しが付いていて、かつ 404 のページを描いているときだけ、記録して通知しないようにしました。

// instrumentation.ts
export const onRequestError: Instrumentation.onRequestError = async (err, request, context) => {
  const hasAction = Boolean(request.headers['next-action'])
  if (hasAction && (context.routePath ?? '').includes('_not-found')) {
    // 記録だけして、通知しない
    return
  }
  // ここから通知
}

文言だけで判定して外すと、本当に Next.js の不具合で同じ文言が出たときまで黙ってしまいます。条件は狭くします。

まとめ

  1. 無い URL へ Next-Action と RSC: 1 付きの POST が来ると出る。多くはスキャナーの探り
  2. 関数は動いていない。自分のコードを直す必要はない
  3. 通知しているなら、「Next-Action 付き」かつ「404 の描画」だけを外す
  4. Next.js を新しく保つ

出典

このページの内容は上記の一次情報を基準に書いています。個人ブログや二次情報を根拠にしていません。

理解できたか試す

では、このコードはどうなりますか。

この Server Function に足りない守りを、すべて選んでください。

この問題を解くこのテーマの問題 3 問