cloudflare/vinext

Pages Router: gssp `res` mutated after return collapses to empty `pageProps`

已关闭

#1,460 创建于 2026年5月22日

 (0 条评论) (0 个反应) (0 位负责人)TypeScript (383 个派生)github user discovery
adapter-api-e2ehelp wanted

仓库指标

星标
 (8,624 个星标)
PR 合并指标
 (平均合并 1天 1小时) (30 天内合并 462 个 PR)

描述

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-22).

Problem

When a getServerSideProps function mutates res (for example by setting headers) after it has returned, vinext renders the page with pageProps: {} instead of the actual returned props. The asynchronous mutation appears to race with prop serialisation and overwrite the response.

Pages Router gssp that mutates res after returning the props object loses the props

Estimated Impact

~2 test failures across the deploy suite.

Affected Test Suites

  • test/e2e/getserversideprops/test/index.test.ts (2 failures)

Recommendation

  1. Reproduce first in vinext's own test suite. Add a Pages Router page where gssp calls setTimeout(() => res.setHeader(...)) after returning. Assert the response still contains the originally-returned pageProps.

  2. Snapshot props before allowing res mutation. Once gssp returns, the props payload should be committed to the response body / __NEXT_DATA__ before any subsequent async res mutation can alter the headers.

  3. Treat post-return mutation as a no-op for the body. Mirror Next.js behaviour where headers set after the response has begun are dropped, but the rendered body remains intact.

贡献者指南