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

[pull] canary from vercel:canary #2040

Open
wants to merge 6,715 commits into
base: canary
Choose a base branch
from
Open

[pull] canary from vercel:canary #2040

wants to merge 6,715 commits into from

Conversation

pull[bot]
Copy link

@pull pull bot commented Mar 27, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

vercel-release-bot and others added 26 commits January 15, 2025 01:44
…4893)

Previously, the segment path handling was returning before the
`x-nextjs-cache` headers were sent, this moves it below that to ensure
that the correct cache headers are added.
…kio-console support (#74675)

I'm trying to use this to debug a hang in turbo-tasks. There's some overlap with https://turbo-trace-viewer.vercel.app/, but this is more realtime, which is useful for finding hanging futures.

There's some similar functionality in turbopack-cli: https://github.com/vercel/next.js/blob/c51b53680de4b1c00cd66bb00b7ff6b878646583/turbopack/crates/turbopack-cli/src/dev/mod.rs#L349

Enable this by building with `--features next-swc-napi/tokio-console`.
### What?

fix an earlier PR by completely removing children count
### What?

improves the heuristic for task optimization.

It minimizes the produce of `(uppers - 1) * follower` and chooses a bigger aggregation number based on that.

This allows for many uppers when there are no followers. That is often the case when a task is shared between multiple pages. Or for tasks are are near the leafs of the graph.
…#[must_use]` annotation (#74906)

This is creating a ton of logspam for me when running tests. I can get dozens of these panics in a row.

It appears that there are functions that can return an `anyhow::Error` between collecting issues and emitting them. In those cases, it's not practical to ensure the issues are always emitted.

Instead, just settle for a much weaker compile-time check with `#[must_use]` that at least ensures something happens with `IssueCollector`.
…74894)

This:
	- Allows for synchronous lookup of a module’s availability information without async resolving Vcs
	- Creates a single structure that combines the entire availability information hierarchy into one. While not strictly necessary, without Vc caching, the hierarchy of structs only provided overhead without advantage
### What?

fix bug when restoring from persistent caching
…74919)

Follow-up fix for #74876. Not all app dir entries have an
`absolutePagePath` in their module build info, e.g. the global not found
page does not have one. But we still need to include the client
reference manifest in the trace for those entries.


[x-ref](https://vercel.com/vtest314-next-e2e-tests/vtest314-e2e-tests/EngjzrvvzQ4GQra6tnGCy98PR6yd/logs?startDate=1736936280&endDate=1736938140&selectedLogId=fl27k-1736937944551-421fa6816369)
### Updates

1. **Hide "Was it helpful" component for errors without codes**  
Errors without specific codes (e.g., from third-party libraries) will no
longer display the "Was it helpful" component.

2. **Improved footer styling**  
Enhanced layout for long footer messages to improve readability and
consistency.

| **Before** | **After** |

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
|
![Before](https://github.com/user-attachments/assets/3f72ba33-8eee-4815-ac33-0f91c42b2747)
|
![After](https://github.com/user-attachments/assets/e493c6b4-3d2e-46e0-815d-e694bbe6b333)
|
Everything should be in place now to have the module petgraph be 100% accurate even if its split across multiple graphs (i.e. in dev or because of the actions).

Nothing uses this yet, in the future we should measure if there's a perf impact of running next/dynamic, client references, server actions  on the whole graph as opposed to only on the change layout segments (which is what currently happens).

- [x] clean up/ensure that there are always all needed `entries` in the graph struct
…4933)

The prerender indicator was controlled by
https://nextjs.org/docs/app/api-reference/config/next-config-js/devIndicators#appisrstatus-static-indicator.

With the new dev overlay, the route type should work regardless of
`NextConfig#devIndicators#appIsrStatus`, so this PR ensures the status
wiring is enabled even when `appIsrStatus` is disabled.

Note: Will follow up with a test soon.

![CleanShot 2025-01-15 at
[email protected]](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/rKSEEwxbNzdFs9t0yyxN/d01aff4d-e787-4e46-9c8c-fb4e5cab9767.png)
### What?

tasks with negative collectible count need to be root tasks so they
eliminate the count correctly. Otherwise the child we want to override
the collectibles from could be attached multiple times in the graph
duplicating the collectible.
)

This writes out the segment path information when the incremental cache
writes to disk. This also combines the multi-file writer approach used
in a few places into a single shared utility class.
…ing from task functions (#74714)

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the PR.
- 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 #

-->
#74844)

If we have a `ResolvedVc`, we don't actually need to go through `Vc`'s much-less-efficient codepath (which reads cells, even if the `Vc` is resolved) in order to perform a sidecast.

This has the benefit of removing the chance of sidecast returning an error while reading and makes the function synchronous.

This does not update callsites, that can come later. We can do similar optimizations with `try_downcast` in a future PR.

I don't think this is an actual hot-path in our code, but it unblocks some synchronous graph traversal stuff that @wbinnssmith is working on.
…hould be (#74931)

### What?

make sure persistent caching is really disabled when it should be

by deleting the temp directory

add CI to env
wyattjoh and others added 30 commits January 28, 2025 12:59
Previously when there was an optional catch-all present where it wasn't
provided it could not get read directly from the query parameters (as it
was done in PPR resumes) and instead it was inferring the default
parameters.

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
)

### Why?

1. When clicking the indicator, since closing the overlay was
`mousedown`, it had a blink of the overlay to be closed and then open
again.
2. When the overlay is opened, clicking the indicator elements closes
the overlay.

### How?

1. Use `mouseup` and `touchend` event listeners to prevent hiding the
overlay when clicking outside the overlay.
2. Added `excludes` array of attributes to exclude from click outside
handler.

### Before


https://github.com/user-attachments/assets/af989294-d14e-4b3b-8638-bde75a067507

### After


https://github.com/user-attachments/assets/2cd4b974-a4b6-4e9e-a9dd-4964b9747055

Closes
https://linear.app/vercel/issue/NDX-701/dont-close-overlay-when-on-click-indicator
### What?

use type alias to avoid repeating
Since Tailwind v4 was released, update the create-next-app templates.
This PR made change of following process:

1. Remove tailwind config.
2. Update the `globals.css` file.
3. Add `--geist-` font CSS variable to the `globals.css` file.
4. Change `postcss` dependency to `@tailwindcss/postcss`.
5. Update postcss config.
6. Update tests.

**Note:** Removed the types for postcss added at
#63380 since it requires
additional
[postcss-load-config](https://www.npmjs.com/package/postcss-load-config)
dependency.
## Why?

Adding more labels so we can better triage and categorize issues.
You can optionally enable it, if desired, but this gives you one less
config file by default.
When using `eslint-config-next` on eslint 9.x with a flat config (as per
next.js
[docs](https://nextjs.org/docs/app/api-reference/config/eslint#specifying-a-root-directory-within-a-monorepo))
and with the `--cache` flag - eslint would fail:

```
> ./node_modules/.bin/eslint --cache

Oops! Something went wrong! :(

ESLint: 9.17.0

TypeError: Cannot serialize key "parse" in parser: Function values are not supported.
    at languageOptionsToJSON (.../next-eslint-issue/node_modules/eslint/lib/config/config.js:113:23)
    at languageOptionsToJSON (.../next-eslint-issue/node_modules/eslint/lib/config/config.js:107:35)
    at Config.toJSON (.../next-eslint-issue/node_modules/eslint/lib/config/config.js:260:30)
    at stringify (.../next-eslint-issue/node_modules/json-stable-stringify-without-jsonify/index.js:25:25)
    at module.exports (.../next-eslint-issue/node_modules/json-stable-stringify-without-jsonify/index.js:68:7)
    at hashOfConfigFor (.../next-eslint-issue/node_modules/eslint/lib/cli-engine/lint-result-cache.js:50:75)
    at LintResultCache.getCachedLintResults (.../next-eslint-issue/node_modules/eslint/lib/cli-engine/lint-result-cache.js:116:30)
    at .../next-eslint-issue/node_modules/eslint/lib/eslint/eslint.js:783:41
    at async Promise.all (index 0)
    at async ESLint.lintFiles (.../next-eslint-issue/node_modules/eslint/lib/eslint/eslint.js:759:25)
```

(see a minimal repro here: https://github.com/CvX/next-eslint-issue)

This happens because eslint is unable to serialize the `parser` object
in the config. Adding metadata fixes that.

The issue was originally reported over at eslint repo in:
eslint/eslint#19322

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
…5360)

### Related issues

1. Fixes #69272
2. Fixes #69270
3. Fixes #67730
4. Relates to
#55462 (comment)
5. Resolves #67729
6. Relates to #66752

### What?

Quite often we are getting `TypeError: null is not an object (evaluating
't.parallelRoutes.get')` error in our error tracker.
There is no clear pattern; but it's daily count grows as DAU amount
grows.

Error call trace is:
```
router-reducer/fill-lazy-items-till-leaf-with-head.ts at line 153:59
router-reducer/create-initial-router-state.ts at line 66:34
```

### Why?

In the code there is comment `location and initialParallelRoutes are not
initialized in the SSR render they are set to an empty map and
window.location, respectively during hydration`. However, it seems that
it's not always set to an empty map on the client side.

### How?

To ensure it's always set, I have replaced wrong (from ts pov) `null!`
with `new Map()` and redundant logic of passing `initialParallelRoutes`
into `cache.parallelRoutes`
## What?

Mirrors the handling for webpack by using `NextBuildContext` for all
needed information.

This will allow for moving the turbopack build to a child process for
memory cleanup once the compiler finishes.

This PR is intended to only move the code, will create a PR stacked on
this one to add the child process handling.

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
## What?

Runs Turbopack in a separate child process so that e.g. memory usage can
be cleaned up before continuing with the rest of the Next.js build. This
will lower the peak memory consumption given that before this change the
Turbopack cache was kept around until the end of the build.

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
## What?

Matches other places where codegen happens. In benchmarks this is a
roughly 100 microseconds win per file processed through minifying.

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
## What?

Temporary CI workflows for #74554.

<!-- 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

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- 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 #

-->
…5412)

This reverts the bundler change part while we investigate source map
issue but keeps the externals optimize preventing the runtime bundle
from inflating back to over `4MB`.

This reverts commit 98b0700
This reverts commit 04c3f0b
### What?

The AggregationQueue has multiple queues that need to be checked for emptyness.
If you are overriding the server actions encryption key, you need to
also ensure it uses AES-GCM encrpytion.
We noticed a routing regression, so reverting while we investigate. 

Reverts #75377
## Why?

To better organize and triage issues.

## How?

- Remove `Link (next/link)`, update `Navigation` to `Linking and
Navigating`
- Add `Redirects`
For trait methods, we often have underscore-prefixed arguments that are unused in method implementations, but must exist on the method signature because the trait requires it.

For example, look at `code_generation`: https://github.com/search?q=repo%3Avercel%2Fnext.js%20fn%20code_generation&type=code

We can filter those arguments as soon as we resolve the real method, and avoid storing them as part of the task's cache key.

This should mean less data stored per task, and better cache hit rates (so less tasks overall).

This appears to give a roughly 5% memory win:

![Screenshot 2025-01-28 at 11.54.37 AM.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/HAZVitxRNnZz8QMiPn4a/3459c25e-c73b-4d56-92cc-f44479b2d016.png)

(Spreadsheet: https://docs.google.com/spreadsheets/d/1fz9Q-tDE6LebS9p4Mci8vZG7jkBSajiMYF1WbZEPnts/edit?usp=sharing)

Full data:

<details>
Tested with next-site in front.

Command run:

```
rm -rf .next && TURBOPACK=1 TURBOPACK_BUILD=1 TURBO_ENGINE_READ_ONLY=1 /bin/time -v pnpm next build --experimental-build-mode=compile
```


# Before, run 1

Compiled in: 19.3s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 121.88
        System time (seconds): 16.74
        Percent of CPU this job got: 501%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.61
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5607868
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 58
        Minor (reclaiming a frame) page faults: 1816374
        Voluntary context switches: 1280636
        Involuntary context switches: 361414
        Swaps: 0
        File system inputs: 102088
        File system outputs: 738000
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# Before, run 2

Compiled in: 19.3s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 124.34
        System time (seconds): 16.97
        Percent of CPU this job got: 516%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.36
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5455968
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 8
        Minor (reclaiming a frame) page faults: 2014509
        Voluntary context switches: 1267794
        Involuntary context switches: 358175
        Swaps: 0
        File system inputs: 6496
        File system outputs: 737296
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# Before, run 3

Compiled in: 18.4s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 117.81
        System time (seconds): 15.86
        Percent of CPU this job got: 505%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.46
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5655912
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 5
        Minor (reclaiming a frame) page faults: 1868540
        Voluntary context switches: 1271444
        Involuntary context switches: 337236
        Swaps: 0
        File system inputs: 7784
        File system outputs: 737480
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status:
```


# Before, run 4

Compiled in: 18.2s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 116.98
        System time (seconds): 15.09
        Percent of CPU this job got: 504%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.15
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5962764
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 1861147
        Voluntary context switches: 1253759
        Involuntary context switches: 333116
        Swaps: 0
        File system inputs: 0
        File system outputs: 737304
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# Before, run 5

Compiled in: 17.9s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 119.02
        System time (seconds): 14.84
        Percent of CPU this job got: 516%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:25.92
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5745780
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 1542655
        Voluntary context switches: 1238600
        Involuntary context switches: 357049
        Swaps: 0
        File system inputs: 0
        File system outputs: 737000
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# After, run 1

Compiled in: 19.0s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 121.85
        System time (seconds): 16.69
        Percent of CPU this job got: 508%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.22
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5402708
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 41
        Minor (reclaiming a frame) page faults: 1822829
        Voluntary context switches: 1221091
        Involuntary context switches: 361604
        Swaps: 0
        File system inputs: 110200
        File system outputs: 737048
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# After, run 2

Compiled in: 18.5s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 119.46
        System time (seconds): 15.32
        Percent of CPU this job got: 506%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.60
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5413980
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 1
        Minor (reclaiming a frame) page faults: 1695775
        Voluntary context switches: 1269774
        Involuntary context switches: 328448
        Swaps: 0
        File system inputs: 800
        File system outputs: 736952
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# After, run 3

Compiled in: 18.5s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 118.15
        System time (seconds): 15.12
        Percent of CPU this job got: 503%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.48
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5312528
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 1893778
        Voluntary context switches: 1277325
        Involuntary context switches: 324591
        Swaps: 0
        File system inputs: 128
        File system outputs: 737304
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# After, run 4

Compiled in: 18.2s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 115.60
        System time (seconds): 15.30
        Percent of CPU this job got: 499%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.22
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5240892
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 1
        Minor (reclaiming a frame) page faults: 1514837
        Voluntary context switches: 1296049
        Involuntary context switches: 312076
        Swaps: 0
        File system inputs: 32
        File system outputs: 737664
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```


# After, run 5

Compiled in: 19.4s

```
        Command being timed: "pnpm next build --experimental-build-mode=compile"
        User time (seconds): 125.91
        System time (seconds): 15.63
        Percent of CPU this job got: 514%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.50
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5346672
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 1
        Minor (reclaiming a frame) page faults: 1839175
        Voluntary context switches: 1280293
        Involuntary context switches: 358863
        Swaps: 0
        File system inputs: 32
        File system outputs: 737720
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
```
</details>
### What?

Update `swc_core` to the next version.

ChangeLog: swc-project/swc@[email protected][email protected]

### Why?

To apply an enormous amount of performance patches.
## Why?

Rename `Output (export/standalone)` to `Output`. This keeps it separate from labels such as `Image (next/image)` (`export/standalone` is not an import).
## Why?

Not sure how I forgot `Route Handlers`.
Looking at the test file change should convince you that this fixes the formatting issue.

https://linear.app/vercel/issue/NDX-671/error-from-client-only-package-is-malformed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.