dd937bde09
## What? While looking at the CPU profile of booting up Vercel's site I noticed that we call `getPageStaticInfo` a lot. Looking into this more it turns out `getPageStaticInfo` is currently called for all routes, `pages` and `app`, even though the data is only being used to keep track of which routes are edge functions, however, this is already tracked as part of the build output so this didn't make sense to me. First I tried commenting out this entire block and all tests were passing, so I removed it except for middleware as middleware can provide a `matcher` which does need to be known before compiling the file as of right now. After that change a different set of tests started failing, specifically the one that checks if we warn correctly. Interestingly by fixing `getPageStaticInfo` being called early and for all routes it also caused these warnings to no longer trigger as there was a case in the manifest plugin that called `getPageStaticInfo` with less information. Calling `getPageStaticInfo` there was not needed either as we call `getPageStaticInfo` at the beginning of the build for each entrypoint so we already have the information required, it just had to be passed down so that the manifest plugin could use it. For Vercel's site this change improves booting the dev server by over 1 second. Related to #48748 <!-- Thanks for opening a PR! Your contribution is much appreciated. To make sure your PR is handled as smoothly as possible we request that you follow the checklist sections below. Choose the right checklist for the change(s) that you're making: ## For Contributors ### Improving Documentation - Read the Docs Contribution Guide to ensure your contribution follows the docs guidelines: https://nextjs.org/docs/community/contribution-guide ### Adding or Updating Examples - The "examples guidelines" are followed from our contributing doc https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md - Make sure the linting passes by running `pnpm build && pnpm lint`. See https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md ### Fixing a bug - Related issues linked using `fixes #number` - Tests added. See: https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs - Errors have a helpful link attached, see https://github.com/vercel/next.js/blob/canary/contributing.md ### Adding a feature - Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. (A discussion must be opened, see https://github.com/vercel/next.js/discussions/new?category=ideas) - Related issues/discussions are linked using `fixes #number` - e2e tests added (https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs - Documentation added - Telemetry added. In case of a feature if it's used or not. - Errors have a helpful link attached, see https://github.com/vercel/next.js/blob/canary/contributing.md ## For Maintainers - Minimal description (aim for explaining to someone not on the team to understand the PR) - When linking to a Slack thread, you might want to share details of the conclusion - Link both the Linear (Fixes NEXT-xxx) and the GitHub issues - Add review comments if necessary to explain to the reviewer the logic behind a change ### What? ### Why? ### How? Closes NEXT- Fixes # --> --------- Co-authored-by: Jiachi Liu <inbox@huozhi.im> |
||
---|---|---|
.. | ||
404-page-router | ||
app-dir | ||
app-dir-legacy-edge-runtime-config | ||
basepath | ||
browserslist | ||
browserslist-extends | ||
config-promise-export | ||
disable-js-preload | ||
dynamic-route-interpolation | ||
edge-api-endpoints-can-receive-body | ||
edge-async-local-storage | ||
edge-can-read-request-body | ||
edge-can-use-wasm-files | ||
edge-compiler-can-import-blob-assets | ||
edge-compiler-module-exports-preference | ||
edge-configurable-runtime | ||
edge-pages-support | ||
edge-runtime-uses-edge-light-import-specifier-for-packages | ||
fetch-failures-have-good-stack-traces-in-edge-runtime | ||
getserversideprops | ||
handle-non-hoisted-swc-helpers | ||
hello-world | ||
i18n-api-support | ||
i18n-data-fetching-redirect | ||
i18n-default-locale-redirect | ||
i18n-disallow-multiple-locales | ||
i18n-ignore-redirect-source-locale | ||
i18n-ignore-rewrite-source-locale | ||
ignore-invalid-popstateevent | ||
instrumentation-hook | ||
instrumentation-hook-src | ||
link-with-api-rewrite | ||
manual-client-base-path | ||
middleware-base-path | ||
middleware-custom-matchers | ||
middleware-custom-matchers-basepath | ||
middleware-custom-matchers-i18n | ||
middleware-dynamic-basepath-matcher | ||
middleware-fetches-with-any-http-method | ||
middleware-fetches-with-body | ||
middleware-general | ||
middleware-matcher | ||
middleware-redirects | ||
middleware-request-header-overrides | ||
middleware-responses | ||
middleware-rewrites | ||
middleware-shallow-link | ||
middleware-trailing-slash | ||
multi-zone | ||
new-link-behavior | ||
next-font | ||
next-head | ||
next-image-forward-ref | ||
next-script | ||
no-eslint-warn-with-no-eslint-config | ||
nonce-head-manager | ||
og-api | ||
opentelemetry | ||
optimized-loading | ||
postcss-config-cjs | ||
prerender | ||
prerender-native-module | ||
proxy-request-with-middleware | ||
reload-scroll-backforward-restoration | ||
repeated-forward-slashes-error | ||
skip-trailing-slash-redirect | ||
ssr-react-context | ||
streaming-ssr | ||
styled-jsx | ||
swc-warnings | ||
switchable-runtime | ||
test-template/{{ toFileName name }} | ||
test-utils-tests/basic | ||
trailingslash-with-rewrite | ||
transpile-packages | ||
type-module-interop | ||
typescript-version-no-warning | ||
typescript-version-warning | ||
undici-fetch | ||
yarn-pnp/test | ||
basepath-trailing-slash.test.ts | ||
basepath.test.ts | ||
example-file.txt | ||
example.txt | ||
prerender-crawler.test.ts | ||
prerender-native-module.test.ts | ||
prerender.test.ts |