Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[metadata] disable streaming metadata for ppr deployment #75978

Merged
merged 1 commit into from
Feb 13, 2025

Conversation

huozhi
Copy link
Member

@huozhi huozhi commented Feb 12, 2025

What

This PR forcedly disables the streaming metadata on vercel deployment when PPR is enabled on the target route. There're still some work need to be done on infra side, so we only let non-PPR mode and self-hosting PPR (mostly local testing) be controlled by streamingMetadata flag.

Once the blocker is gone, then we can re-enable it

Copy link
Member Author

huozhi commented Feb 12, 2025

@ijjk
Copy link
Member

ijjk commented Feb 12, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
buildDuration 23.3s 20s N/A
buildDurationCached 19.2s 16.2s N/A
nodeModulesSize 393 MB 393 MB ⚠️ +17.8 kB
nextStartRea..uration (ms) 486ms 499ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
5271-HASH.js gzip 55.4 kB 55.4 kB N/A
6228c9d4-HASH.js gzip 56.9 kB 56.9 kB N/A
7048.HASH.js gzip 168 B 168 B
8377-HASH.js gzip 5.46 kB 5.46 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 245 B 246 B N/A
main-HASH.js gzip 34.9 kB 34.9 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB
Overall change 1.88 kB 1.88 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 193 B 192 B N/A
amp-HASH.js gzip 513 B 511 B N/A
css-HASH.js gzip 342 B 342 B
dynamic-HASH.js gzip 1.84 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 265 B 264 B N/A
head-HASH.js gzip 363 B 360 B N/A
hooks-HASH.js gzip 393 B 390 B N/A
image-HASH.js gzip 4.59 kB 4.59 kB N/A
index-HASH.js gzip 268 B 266 B N/A
link-HASH.js gzip 2.35 kB 2.35 kB
routerDirect..HASH.js gzip 328 B 326 B N/A
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 325 B 325 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.72 kB 3.72 kB
Client Build Manifests
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
index.html gzip 523 B 522 B N/A
link.html gzip 539 B 535 B N/A
withRouter.html gzip 519 B 517 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
edge-ssr.js gzip 130 kB 130 kB N/A
page.js gzip 214 kB 214 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
middleware-b..fest.js gzip 677 B 674 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.6 kB 31.6 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
app-page-exp...dev.js gzip 395 kB 395 kB N/A
app-page-exp..prod.js gzip 133 kB 133 kB N/A
app-page-tur..prod.js gzip 145 kB 145 kB N/A
app-page-tur..prod.js gzip 141 kB 141 kB N/A
app-page.run...dev.js gzip 382 kB 382 kB N/A
app-page.run..prod.js gzip 129 kB 129 kB N/A
app-route-ex...dev.js gzip 39.4 kB 39.4 kB
app-route-ex..prod.js gzip 25.7 kB 25.7 kB
app-route-tu..prod.js gzip 25.7 kB 25.7 kB
app-route-tu..prod.js gzip 25.5 kB 25.5 kB
app-route.ru...dev.js gzip 41 kB 41 kB
app-route.ru..prod.js gzip 25.5 kB 25.5 kB
dist_client_...dev.js gzip 356 B 356 B
dist_client_...dev.js gzip 349 B 349 B
pages-api-tu..prod.js gzip 9.72 kB 9.72 kB
pages-api.ru...dev.js gzip 11.8 kB 11.8 kB
pages-api.ru..prod.js gzip 9.72 kB 9.72 kB
pages-turbo...prod.js gzip 22 kB 22 kB
pages.runtim...dev.js gzip 31.6 kB 31.6 kB
pages.runtim..prod.js gzip 22 kB 22 kB
server.runti..prod.js gzip 61.2 kB 61.2 kB
Overall change 352 kB 352 kB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js huozhi/02-12-metadata_disable_ppr_streaming_temp Change
0.pack gzip 2.12 MB 2.12 MB ⚠️ +165 B
index.pack gzip 76.4 kB 77.1 kB ⚠️ +768 B
Overall change 2.19 MB 2.19 MB ⚠️ +933 B
Diff details
Diff for 5271-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js

Diff too large to display

Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js
failed to diff
Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js

Diff too large to display

Diff for app-page.runtime.prod.js

Diff too large to display

Commit: 9dc7b26

@ijjk
Copy link
Member

ijjk commented Feb 12, 2025

Failing test suites

Commit: ccf865a

pnpm test-deploy test/e2e/app-dir/ppr-metadata-streaming/ppr-metadata-streaming.test.ts

  • ppr-metadata-streaming > dynamic metadata > should generate metadata in body when page is fully dynamic
  • ppr-metadata-streaming > dynamic metadata > should generate metadata in body when page content is static
  • ppr-metadata-streaming > partial shell > should insert metadata into body with dynamic metadata and wrapped under layout Suspense boundary
  • ppr-metadata-streaming > partial shell > should insert metadata into head with dynamic metadata and dynamic page wrapped under layout Suspense boundary
  • ppr-metadata-streaming > static metadata > should generate metadata in head when page is fully static
  • ppr-metadata-streaming > static metadata > should insert metadata in body when page is dynamic page content
Expand output

● ppr-metadata-streaming › static metadata › should generate metadata in head when page is fully static

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

● ppr-metadata-streaming › static metadata › should insert metadata in body when page is dynamic page content

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

● ppr-metadata-streaming › dynamic metadata › should generate metadata in body when page is fully dynamic

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

● ppr-metadata-streaming › dynamic metadata › should generate metadata in body when page content is static

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

● ppr-metadata-streaming › partial shell › should insert metadata into body with dynamic metadata and wrapped under layout Suspense boundary

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

● ppr-metadata-streaming › partial shell › should insert metadata into head with dynamic metadata and dynamic page wrapped under layout Suspense boundary

Failed to deploy project https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app Vercel CLI 39.3.0
Retrieving project…
Deploying vtest314-next-e2e-tests/vtest314-e2e-tests
Uploading [--------------------] (0.0B/436B)
Uploading [====================] (436.0B/436B)
Inspect: https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/2FpbTEYqUJWcdtkUGWtfbsJvP9Vh [2s]
Preview: https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app [2s]
Queued
Building
Error: Command "npm run build" exited with 1
Error: Check your logs at https://vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app/_logs or run `vercel logs vtest314-e2e-tests-2trs5tlh4-vtest314-next-e2e-tests.vercel.app` (1)

  124 |
  125 |     if (deployRes.exitCode !== 0) {
> 126 |       throw new Error(
      |             ^
  127 |         `Failed to deploy project ${deployRes.stdout} ${deployRes.stderr} (${deployRes.exitCode})`
  128 |       )
  129 |     }

  at NextDeployInstance.setup (lib/next-modes/next-deploy.ts:126:13)
  at lib/e2e-utils/index.ts:201:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:143:14)
  at createNext (lib/e2e-utils/index.ts:166:12)
  at Object.<anonymous> (lib/e2e-utils/index.ts:255:14)

Read more about building and testing Next.js in contributing.md.

@huozhi huozhi force-pushed the huozhi/02-12-metadata_disable_ppr_streaming_temp branch from 8b41f01 to 2e39684 Compare February 12, 2025 19:42
@huozhi huozhi marked this pull request as ready for review February 12, 2025 19:50
@huozhi huozhi requested a review from ztanner February 12, 2025 19:50
@huozhi huozhi marked this pull request as draft February 12, 2025 20:12
@huozhi huozhi marked this pull request as ready for review February 12, 2025 23:28
Base automatically changed from huozhi/02-12-metadata_-_bypass_config to canary February 13, 2025 20:22
@huozhi huozhi force-pushed the huozhi/02-12-metadata_disable_ppr_streaming_temp branch from ccf865a to 9dc7b26 Compare February 13, 2025 20:48
@huozhi huozhi enabled auto-merge (squash) February 13, 2025 21:01
@huozhi huozhi disabled auto-merge February 13, 2025 22:22
@huozhi huozhi merged commit 5eec6df into canary Feb 13, 2025
130 of 132 checks passed
@huozhi huozhi deleted the huozhi/02-12-metadata_disable_ppr_streaming_temp branch February 13, 2025 23:28
@huozhi
Copy link
Member Author

huozhi commented Feb 13, 2025

The deployment test failed with weird error [Error: > Couldn't find any pagesorapp directory. Please create one under the project root], where it does contain a app/ directory, which is weird. Merge first to see if it's flaky

devjiwonchoi pushed a commit that referenced this pull request Feb 14, 2025
### What

This PR forcedly disables the streaming metadata on vercel deployment
when PPR is enabled on the target route. There're still some work need
to be done on infra side, so we only let non-PPR mode and self-hosting
PPR (mostly local testing) be controlled by `streamingMetadata` flag.

Once the blocker is gone, then we can re-enable it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants