Commit Graph

1130 Commits

Author SHA1 Message Date
Jiwon Choi 9f2db5fda8 CI: Enable experimental.isolatedDevBuild for test-prod (#84556)
Enabling `experimental.isolatedDevBuild` required many changes to the
current workflow, so we will incrementally roll out to the tests.

Enabling on test-prod instead of test-experimental-prod because
`-experimental` CIs are filtered via `experimental-tests-manifest.json`
and they don't cover all tests. We want to enable this feature by
default so we should ensure this incremental rollout is covered on all
test cases.

1. ~~test-experimental-dev
([link](https://github.com/vercel/next.js/pull/84099))~~
2. test-dev ([link](https://github.com/vercel/next.js/pull/84562))
3. test-prod (here)
4. test-integration
5. test-unit
6. Enable by default, remove the flag, and update the rest

x-ref: https://github.com/vercel/next.js/pull/84043
2025-10-06 21:20:40 +02:00
Jiwon Choi 84cdf57369 CI: Enable experimental.isolatedDevBuild for test-unit (#84559)
Enabling `experimental.isolatedDevBuild` required many changes to the
current workflow, so we will incrementally roll out to the tests.

1. ~~test-experimental-dev
([link](https://github.com/vercel/next.js/pull/84099))~~
2. test-dev ([link](https://github.com/vercel/next.js/pull/84562))
2. test-prod ([link](https://github.com/vercel/next.js/pull/84556))
3. test-integration
([link](https://github.com/vercel/next.js/pull/84558))
4. test-unit (here)
5. Enable by default, remove the flag, and update the rest

x-ref: https://github.com/vercel/next.js/pull/84043
2025-10-06 20:52:17 +02:00
Hendrik Liebau e974ca937b [test] Enable reactDebugChannel for experimental test shards (#84533)
The experimental flag `reactDebugChannel` is currently off by default.
To avoid regressions in the debug channel integration, we enable the
flag for the experimental test shards.
2025-10-06 01:48:09 +02:00
Zack Tanner c9c6285611 [ci]: split clientSegmentCache test runners off from experimental (#84440)
We are preparing to enable `clientSegmentCache` by default on canary. To
prepare, this splits it into a separate CI runner and adds a failing
test manifest so we can incrementally migrate / fix failing tests before
stable release.
2025-10-02 11:27:26 -04:00
Zack Tanner a07a33ab8b [ci]: remove PPR-specific CI jobs (#84439)
`experimental.ppr` is being superseded by `experimental.cacheComponents`
and will not exist in the form that is currently being tested in CI.

This frees up these CI resources until we delete the standalone PPR
flag. `cacheComponents` is tested via the experimental runners.
2025-10-01 17:17:33 -07:00
Luke Sandberg 9ba29b4125 Revert "Revert "Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)"""" (#84394)
Reverts vercel/next.js#84389

Attempt number 3, #84374 fixed propagation of bundler environment variables to vercel cli operations, to ensure the test configuration is respected. 

[Deployment Tests Run 1](https://github.com/vercel/next.js/actions/runs/18146684793/job/51649631635).  A fair number of failures.

[Deployment Tests Run 2](https://github.com/vercel/next.js/actions/runs/18154875270). After #84395.  These still have a set of failures, but i confirmed that the deployment builds are running `webpack`.  

The tests that are failing are related to 'prefetches' (test/e2e/app-dir/segment-cache/prefetch-runtime/prefetch-runtime.test.ts and test/e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts) and generally the error is a timeout.  Recent deployment runs for canary releases are also failing, but on different tests.


Trying again after #[84419](https://github.com/vercel/next.js/pull/84419).  [Deployment Tests Run 3](https://github.com/vercel/next.js/actions/runs/18173375427).  Failures appeared flaky, rerunning failures...
2025-10-01 17:04:17 -07:00
Cong-Cong Pan 962c2c37c2 fix: next rspack binding NextExternalsPlugin (#84303)
1. Added functionality to change the package name in the rspack release
CI.
2. Fixed a bug in the get_resolve method of the NextExternalsPlugin.
3. Prepared the @next/rspack-core for the 1.0.0 version release.
2025-10-01 10:31:16 -07:00
JJ Kasper 3dcb889505 Revert "Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)""" (#84389)
These are still failing so reverting again to keep canary in clean state
https://github.com/vercel/next.js/actions/runs/18143375558/job/51641994595

Reverts vercel/next.js#84351
2025-09-30 15:36:29 -07:00
Luke Sandberg 9a76ce433b Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)"" (#84351)
Reverts vercel/next.js#84348  which itself reverted #84216. 

In the 2nd attempt to make --turbopack a default behavior.
* adjust the Generate Pull Request States action to specify `--webpack`
* set the `IS_WEBPACK_TEST` flag in the deployment e2e tests (which are now [passing](https://github.com/vercel/next.js/actions/runs/18113062122))
* make the warning about having a webpack config without a turbopack config more verbose and consistently an error
2025-09-30 08:23:10 -07:00
JJ Kasper dadfaa1b5a Revert "Add a --webpack flag and default --turbopack to true (#84216)" (#84348) 2025-09-29 10:22:06 -07:00
Luke Sandberg 97056e0d80 Add a --webpack flag and default --turbopack to true (#84216)
Make Turbopack the default bundler for Next 🚀

## What

Add a `--webpack` flag so users can select webpack

Change behavior so if neither `--turbopack` or `--webpack` is set we default to Turbopack.

If we have defaulted the build to turbopack and we observe that the user has a `webpack` config in their next config but no turbopack config, then we issue a warning about this being a potential problem, if this happens during `next build` the warning becomes an error and fails the build.  The solution for users is just to explicitly set `--webpack` or `--turbopack`

There were a number of subtle issues
* some users directly set the `TURBOPACK` environment variable, this PR adds support for that though users should really be passing `--turbopack` so it will not be documented
* rspack is enabled via a plugin that sets an environment variable when loading next config, which means it happens way too late!
   * For builds this isn't too bad, we just have to recompute the `Bundler` after loading the config.  For `dev` the parent process can get out of sync with the child, but this is only really relevant for telemetry and for that we already load the config in the parent so just defer computing `isTurboSession`.

Most of this is about fixing package.json scripts and CI builds configs.

* For package.json 
   * i added aliases e.g. `test-dev` == `test-dev-webpack` but preserved the old names.  In the long run we will want to remove the unsuffixed aliases 
   * this required some modifications to existing configs to ensure everything was setting the correct env variables

* For ci, i added a new `IS_WEBPACK_TEST` variable to a number of tests but preserved all names.
   * Again, in the future it would make sense to rename ci jobs but that is deferred for right now.
   * This also makes it clear that a set of tests scenarios (e.g. ppr, experimental, test-new-tests-*) never run with turbopack. This is not addressed right now but should be in the future.

## Why

Today, the default bundler for next is webpack but with turbopack becoming stable it is time to just ship it.   Turbopack is already recommended for dev and builds.  Create Next App also steers users towards Turbopack.  According to telemetry we already have about 50% of all dev sessions and build adoption is growing.  So fundamentally why are we even asking users to make a decision?
2025-09-26 16:24:17 -07:00
Wyatt Johnson 2921fb3350 fix: prevent URL mutation in router rewrites (#83963)
### What?

This PR fixes critical URL mutation issues in Next.js routing that were
causing state pollution between requests and breaking compatibility
between App Router and Pages Router during rewrite handling.

### Why?

Several interconnected problems were discovered in the routing system:

1. **URL Object Mutation**: The original `parsedUrl` objects were being
mutated during rewrite processing, causing state to leak between
requests and potentially affecting subsequent routing decisions.

2. **Router Type Confusion**: The routing system lacked explicit
tracking of whether a route belonged to the App Router or Pages Router,
leading to incorrect query parameter handling and normalization logic
being applied inconsistently.

3. **Query Parameter Pollution**: App Router RSC payloads were being
polluted with rewrite query parameters that should only be applied to
Pages Router routes, breaking the separation of concerns between the two
routing systems.

4. **Catch-all Route Normalization**: Pages Router catch-all routes
require specific array normalization (e.g., `["hello", "world"]`) but
this was being applied inconsistently or to the wrong router type.

5. **Middleware Filtering Bypass**: The x-matched-path header handling
was bypassing proper middleware query filtering in deployment scenarios.

These issues manifested as test failures where Pages Router catch-all
routes weren't receiving proper array values, App Router routes were
getting contaminated with rewrite parameters, and the routing behavior
was inconsistent between development and deployment environments.

### Dependant PR's

https://github.com/vercel/vercel/pull/13927

[NAR-398](https://linear.app/vercel/issue/NAR-398)
2025-09-24 13:13:33 -06:00
Jiwon Choi e0e6213fec ci: Enable experimental.isolatedDevBuild for test-experimental-dev (#84099) 2025-09-24 02:10:10 +02:00
Niklas Mischkulnig 45e28f8fe8 Upgrade CodSpeed action and add analyzer benchmarks (#84135) 2025-09-23 18:03:48 +02:00
Sebastian "Sebbie" Silbermann 4160af22a0 Fix output comparison when checking conclusion of required jobs (#83986) 2025-09-19 10:48:27 +02:00
Joseph 82e1eb1f77 Docs/workspace setup (#83490)
Retrying this... 

## TODO

- [x] deploy docs action
- [x] verify that re-compiled deps are ok, no version regression
- [x] turbopack with fumadocs errors out, why?
2025-09-19 10:27:34 +02:00
Sebastian "Sebbie" Silbermann 8c8e9a50d7 Fix conclusion check for retry_test workflow (#83960) 2025-09-18 19:09:01 +02:00
Sebastian "Sebbie" Silbermann 87694f720c Only send notification if canary fails on required jobs (#83953) 2025-09-18 18:30:30 +02:00
Cong-Cong Pan c0d94dc1ac feat: next-rspack-binding (#82811)
Added a new `rspack` directory as an independent Rust and pnpm
workspace, dedicated to building Next.js Rspack bindings. It shares code
with Turbopack through the `next-taskless` crate.
2025-09-18 16:03:02 +00:00
Tobias Koppers 3e5c8efbf8 Turbopack: delete broken hmr benchmark (#83882)
### What?

The benchmark is very broken:

* It doesn't await the run_once, so the code never runs
* project_path is incorrect so it doesn't find routes
* The returned Duration is never used as divan doesn't support custom benches
* `hmr_update` doesn't wait for an HMR update to happen as it just returns "no update"
* It uses `"next": "^15.0.0"` so JS and Rust code are incompatible with each other

It's easier to remove the benchmark than to fix it. It never worked anyway.

Eventually we probably want a e2e benchmark running next.js anyway.
2025-09-17 14:16:31 +02:00
Sebastian "Sebbie" Silbermann 50b726c8ea Only retry if canary fails on required jobs (#83851) 2025-09-16 18:05:44 +00:00
Jiwon Choi 3275034bc6 Allow next.config.mts for Node.js native TS resolver (#83556)
Following up on https://github.com/vercel/next.js/pull/83240

When using ESM syntax in `next.config.ts` on a CJS project, Node.js
first assumes it as CJS, then parses it into ESM again, giving a
warning:

```
(node:27529) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file://.../next.config.ts is not specified and it doesn't parse as CommonJS.
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
To eliminate this warning, add "type": "module" to .../package.json.
```

Therefore, give users the option to use `next.config.mts` which Node.js
expects ESM syntax.

The tests are a copy of `next-config-ts-native-ts` and only renamed the
config to mts.

---------

Co-authored-by: Sebastian "Sebbie" Silbermann <sebastian.silbermann@vercel.com>
2025-09-16 12:25:49 +02:00
Zack Tanner 99e09714e4 CI: use KV for test timing data (#83745)
Next.js tests are grouped based on timing data to better distribute them
for parallelization.

Previously this relied on a gist file that we would write to in CI.
However, this has more recently started resulting in 401s.

The actual reason for the 401s is the Turbo task wasn't propagating the
required environment variable to the task. It was mostly working by
accident, because we would store timing data on disk for the runner,
which would have been satisfied by a job that ran before it.

However despite that, relying on a gist file to read/write timing data
didn't feel like the write abstraction. I decided to refactor it to use
KV instead.

This also makes the handling more resilient to missing timing data. We
shouldn't fail the build if we can't fetch timings, as there's already
handling to fallback to round robin.
2025-09-12 15:13:50 -07:00
Hendrik Liebau 6b0559f0b8 [CI] Fix GitHub Actions matrix configuration for React versions (#83677)
The `build-and-test` workflow runs on `canary` are currently annotated
with the following error
([x-ref](https://github.com/vercel/next.js/actions/runs/17629372493)):

```
Error when evaluating 'strategy' for job 'test-rspack-production'. .github/workflows/build_and_test.yml (Line: 412, Col: 13): Matrix exclude key 'react' does not match any key within the matrix
```

This addresses the issue for `test-rspack-production`, and also fixes
inconsistencies in other jobs regarding the handling of this matrix
dimension.
2025-09-11 15:59:22 +02:00
Niklas Mischkulnig 83ff3d487c Turbopack: run NFT unit test (#83233)
Port the unit tests from https://github.com/vercel/nft/tree/941be1cb3b9d38fbc99a8a6f07af568a64ed0f12/test/unit
2025-09-10 14:35:46 +02:00
Jiwon Choi d165670ed1 feat: use Node.js native TS resolver for next.config.ts (#83240)
### Why?

Since `next.config.ts` was resolved via require-hook, it had a
restriction with Native ESM syntax, like top-level await, dynamic
import, and Node.js ESM APIs like `import.meta.url`. There were previous
attempts to resolve this via the ESM loader, but those approaches
(https://github.com/vercel/next.js/pull/68365,
https://github.com/vercel/next.js/pull/83120) ended up adding ~39ms
compared to the require-hook due to the loader registration time.

However, Node.js natively supports TS since v22.7.0 under the
experimental flag, and was enabled by default since v23.6.0. Therefore,
this PR feature detects the Node.js version and uses its feature to
resolve `next.config.ts` and allows native ESM syntax.

As a comparison, the usage of ESM loader vs Native TS on a "Large App":

- Duration: ~65% faster (186 ms → 66 ms)
- RSS: ~41% lower (80 MB → 47 MB)
- Heap: ~78% lower (18 MB → 4 MB)

<details><summary>Benchmark Details</summary>
<p>

| Type | Transpile Duration (ms) | Resident Set Size (MB) | Heap Used
(MB) |

|---------|--------------------------|------------------------|----------------|
| ESM | 186.04 | 79.94 | 17.68 |
| Native | 66.09 | 47.32 | 3.81 |
| **Δ (Abs)** | -119.95 | -32.62 | -13.87 |
| **Δ (%)** | -64.5% | -40.8% | -78.4% |

</p>
</details> 

### How?

Used Node.js Native TS support (since v22.7.0). Feature detected with
`process.features.typescript` (since v22.10.0), and fallback to the
legacy resolution for the current session if it throws. This feature
follows the restriction of the Native TS support. The notable
restrictions are:

- Requires extensions for file imports
- Doesn't read tsconfig.json (no import alias)
- Requires `with { type: 'json' }` when importing JSON

For details, see [Node.js Type
stripping](https://nodejs.org/api/typescript.html#type-stripping).

See the changes below to get the idea of what is restricted or newly
allowed.

- Changes to fixtures due to restrictions:
https://github.com/vercel/next.js/pull/83240/commits/de1bec89f1976aa6f0cba03aa38cae4c1977abec
- Additions to fixtures due to ESM support:
https://github.com/vercel/next.js/pull/83240/commits/622a2a828693422aa511793af56734f40569d9f5

Added `next-config-ts-native-ts` tests on CI to run on Node.js v22 and
v24.

## Benchmark

#### Hello World App

- Duration: ~68% faster (102 ms → 32 ms)
- RSS: ~65% lower (72 MB → 25 MB)
- Heap: ~87% lower (31 MB → 4 MB)

<details><summary>Benchmark Details</summary>
<p>

| Attempt | Transpile Duration (ms) | Resident Set Size (MB) | Heap Used
(MB) |

|-----------|--------------------------|------------------------|----------------|
| CJS 1 | 104.03 | 69.16 | 30.32 |
| CJS 2 | 100.35 | 59.95 | 30.14 |
| CJS 3 | 100.77 | 75.83 | 32.18 |
| CJS 4 | 103.43 | 77.33 | 30.13 |
| CJS 5 | 100.82 | 76.30 | 30.22 |
| Native 1 | 33.75 | 25.19 | 3.84 |
| Native 2 | 28.71 | 21.72 | 3.85 |
| Native 3 | 33.49 | 28.95 | 3.85 |
| Native 4 | 32.78 | 24.97 | 3.85 |
| Native 5 | 33.43 | 24.89 | 3.85 |
| **CJS Avg** | 101.88 | 71.71 | 30.60 |
| **Native Avg**| 32.43 | 25.14 | 3.85 |
| **Δ (Abs)** | -69.45 | -46.57 | -26.75 |
| **Δ (%)** | -68.2% | -64.9% | -87.4% |

</p>
</details> 

#### Large App

> Benchmarked from a large repository that imports packages like
`@next/bundle-analyzer`.

- Duration: ~56% faster (152 ms → 66 ms)
- RSS: ~30% lower (68 MB → 47 MB)
- Heap: ~78% lower (17 MB → 4 MB)

<details><summary>Benchmark Details</summary>
<p>

| Attempt | Transpile Duration (ms) | Resident Set Size (MB) | Heap Used
(MB) |

|-----------|--------------------------|------------------------|----------------|
| CJS 1 | 154.35 | 67.73 | 17.16 |
| CJS 2 | 148.02 | 61.33 | 17.32 |
| CJS 3 | 152.44 | 66.06 | 17.14 |
| CJS 4 | 149.89 | 74.33 | 17.17 |
| CJS 5 | 156.27 | 68.20 | 17.25 |
| Native 1 | 68.01 | 34.66 | 5.51 |
| Native 2 | 66.41 | 53.83 | 5.48 |
| Native 3 | 62.39 | 45.80 | 1.48 |
| Native 4 | 65.20 | 52.02 | 1.35 |
| Native 5 | 68.44 | 50.31 | 5.25 |
| **CJS Avg** | 152.19 | 67.53 | 17.21 |
| **Native Avg**| 66.09 | 47.32 | 3.81 |
| **Δ (Abs)** | -86.10 | -20.21 | -13.39 |
| **Δ (%)** | -56.6% | -29.9% | -77.8% |

</p>
</details>

Fixes https://github.com/vercel/next.js/issues/67765
Fixes https://github.com/vercel/next.js/issues/71705
Closes [NDX-494](https://linear.app/vercel/issue/NDX-494)

---------

Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Sebastian "Sebbie" Silbermann <silbermann.sebastian@gmail.com>
2025-09-08 10:56:12 +02:00
Niklas Mischkulnig b03deadcf3 Cleanup stray package-lock after CI run (#83419)
`/tmp/package-lock.json` messes up the tests because it influences the build root auto detection.
2025-09-04 12:12:01 +02:00
Jiwon Choi 607cce95f9 Revert "Revert "[Breaking] Bump minimum Node.js version to >=20.9.0" ( #83243)" (#83411)
Reverts vercel/next.js#83243

x-ref: [slack
thread](https://vercel.slack.com/archives/C02CDC2ALJH/p1756938180494949?thread_ts=1756307884.016309&cid=C02CDC2ALJH)
2025-09-04 10:56:40 +02:00
Jiwon Choi 4bbc8c7ac8 Revert "[Breaking] Bump minimum Node.js version to >=20.9.0" (#83243) 2025-08-29 23:05:10 +02:00
Jiwon Choi 11762a78fb [Breaking] Bump minimum Node.js version to >=20.9.0 (#83113)
As Node.js v18 is EOL, bump the minimum Node.js version to v20. `v20.9.0` since it's the first LTS version.

x-ref: https://nodejs.org/en/blog/release/v20.9.0
2025-08-29 17:17:15 +02:00
Wyatt Johnson 8d78f8f110 feat(test): add proxy support for e2e deployment tests (#83118)
### What?

Adds proxy configuration support for e2e deployment tests, allowing test
traffic to be routed through a specified proxy server.

### Why?

Some testing environments require network traffic to be routed through
specific proxy servers or load balancers. This change enables the e2e
deployment test infrastructure to support such configurations by:

- Allowing specification of a proxy IP address via the
`NEXT_TEST_PROXY_ADDRESS` environment variable
- Automatically managing `/etc/hosts` entries to route deployment
domains through the proxy
- Providing proper cleanup when tests complete
2025-08-28 08:41:35 -06:00
Sebastian "Sebbie" Silbermann 6964259f6e [test] Rename "cache component" CI shards to "experimental" (#83101) 2025-08-28 11:44:00 +02:00
Wyatt Johnson 1a4bd7050c ci: optimize e2e deploy test performance and resource usage (#83058)
### What?

Optimize CI workflow performance by moving e2e test project reset to a
weekly cron schedule and increasing deploy test parallelization.

### Why?

The current workflow runs project reset on every deploy test execution,
making parallel investigations by manual dispatch impossible.
Additionally, deploy tests were limited to 6 parallel groups, creating a
bottleneck.

### How?

- Created new weekly cron workflow (`test_e2e_project_reset_cron.yml`)
that runs every Sunday at 5AM UTC
- Removed inline project reset step from deploy test workflow
- Increased deploy test matrix from 6 to 8 parallel groups for faster
execution
- Added manual workflow dispatch option for emergency resets
2025-08-26 13:44:49 -06:00
Niklas Mischkulnig 39f4d15fa8 chore: set Turborepo version correctly (#82680)
Forgot to do this in #82652
2025-08-15 16:12:02 +02:00
Niklas Mischkulnig 0ec5511da4 Turbopack: fix CSS module references, take 2 (#82448)
Replaces and closes https://github.com/vercel/next.js/pull/78058
Closes PACK-4324

Before, you got duplicate modules because
`transition_to_client(postcss(webpack(source in rsc)) != postcss(webpack(transition_to_client(source in rsc))`

Now, we have:
```
rsc layer
--ESM import->
CSSModuleAsset(in rsc, contains raw SCSS source)
--CssReferenceSubType::Inner->
CssAsset(first in client layer, then processed with Webpack loader)
```

This aligns it with when you import CSS from a client component, in both cases the CSS module is first transitioned into the client layer, and then processed with Webpack
2025-08-11 20:16:10 +02:00
Maia Teegarden 09227b58bc use correct workflow id for v0 (#82484) 2025-08-09 01:22:38 +00:00
JJ Kasper 9b4cb03e9a Update to run rspack tests on release (#82453)
As discussed we can move these tests to run on canary release instead of
on every PR.

x-ref: [slack
thread](https://vercel.slack.com/archives/C02CDC2ALJH/p1754522330101839?thread_ts=1754493332.436339&cid=C02CDC2ALJH)
2025-08-07 16:15:29 -07:00
Maia Teegarden 30a7204c3a chore(Next.js sync): open draft PRs immediately (#82424)
Before:
Cron runs would open a Draft PR if they happened to run before
deployment tests finished. Once deployment tests completed, the system
would either open a PR and immediately close it (if tests failed) or
open it as ready for review (if tests passed).

After:
Both cron runs and new releases will open Draft PRs. Once deployment
tests run and pass, these PRs will be marked as ready for review. If
tests fail, the PRs remain as drafts.

Related PRS:
https://github.com/vercel/v0/pull/12992
https://github.com/vercel/front/pull/50036
2025-08-07 16:36:09 +00:00
JJ Kasper 7da8776427 Update create-release-branch to disable test-new-tests (#82182)
This updates to disable the `test-new-tests-` jobs for release branches
as they have a lot of diffs and can stall CI heavily un-necessarily.
2025-07-29 15:56:47 -07:00
Jiachi Liu 165b2a0969 [segment explorer] windows compatibility (#82147)
Let segment explorer tests running on windows CI to ensure it works with windows.

Closes NEXT-4633
2025-07-29 18:39:54 +02:00
JJ Kasper 9d45ade9f6 Allow specifying CLI version for e2e deploy (#81998)
This just allows testing specific CLI versions as well, leaving our
default of latest the same
2025-07-23 20:11:48 -07:00
Zack Tanner 64eadceeb9 CI: add workflow_branch data to deploy test failure message (#81949)
These can be triggered on PRs or release branches, so provides
additional metadata about where the failure comes from.
2025-07-23 07:01:39 -07:00
Niklas Mischkulnig 443a31b990 Turbopack: fix dist dir on Windows (#81758)
Regression from #80683

Closes PACK-5071
Closes https://github.com/vercel/next.js/issues/81628
2025-07-19 07:56:41 +02:00
Maia Teegarden 53a92f8722 Add trigger for v0 sync workflow (#81645)
<!-- 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 #

-->
2025-07-17 15:53:03 -07:00
JJ Kasper e210360bb9 Add create release branch workflow (#81687)
This creates a new workflow to create a release branch and apply the
necessary configs to allow releasing from that branch as this is quite
common for backports.
2025-07-15 14:55:42 -07:00
Steven 90c71b4608 chore(bot): update comment (#81672)
The stale bot comment says 2 years even though its 1.5 years (or 545
days to be precise).

The exact amount of time is not as important in this message so we can
remove it to avoid drift between the message and actual stale time.
2025-07-15 14:22:21 +00:00
JJ Kasper f1b95e04e9 Update rust-cache action to v1.0.9 (#81555)
Adds a 60s timeout for fetching the cache to avoid this blocking
continuing

x-ref:
https://github.com/ijjk/rust-cache/commit/a34594c450817c9860143c79797a8770c4e587f5
2025-07-11 11:33:50 -07:00
Benjamin Woodruff a4a754d01c fix(CI): On musl/alpine builds, pin llvm to llvm20, add llvm bin directory to path (#81519)
Alpine Edge recently removed `llvm-config` from the PATH:

- 3.22:
https://pkgs.alpinelinux.org/contents?file=llvm-config&path=&name=&branch=v3.22&repo=&arch=x86_64
- Edge:
https://pkgs.alpinelinux.org/contents?file=llvm-config&path=&name=&branch=edge&repo=&arch=x86_64

CI job: https://github.com/vercel/next.js/actions/runs/16208743604

Also, fix a bunch of escaping problems with how we invoke bash inside of
docker...

Co-authored-by: Will Binns-Smith <wbinnssmith@gmail.com>
2025-07-10 17:38:49 -07:00
Wyatt Johnson f219487dcd feat(test): introduce cache components testing infrastructure (#81394)
### What?

Introduces a testing infrastructure to validate Next.js behavior with
the experimental Cache Components feature (`dynamicIO`) enabled. This PR
adds dedicated CI jobs and configuration to run a subset of existing
tests with Cache Components activated.

This has 271 more disabled test suites than the Legacy PPR test suite
manifest. The expectation is that we will be resolving the test failures
in followup PRs.

### Why?

Cache Components (dynamicIO) represents a significant architectural
change in how Next.js handles component caching and rendering. To ensure
a smooth transition when this becomes the default behavior, we need to:

1. **Validate compatibility** - Ensure existing applications continue to
work correctly when Cache Components is enabled
2. **Identify edge cases** - Catch potential issues early by running
tests in this new mode
3. **Build confidence** - Provide a safety net for the eventual
migration to Cache Components as the default

The manifest-based approach allows us to incrementally expand test
coverage as we fix compatibility issues, rather than attempting to run
all tests at once which would be overwhelming and block progress.

### How?

- **Test manifest** (`test/cache-components-tests-manifest.json`):
Defines which tests to run and tracks known failures that need
addressing
- **CI workflow changes**: Adds three new job groups that mirror
existing test jobs but with Cache Components enabled:
  - `test-cache-components-integration`
  - `test-cache-components-dev` (parallelized across 6 groups)
  - `test-cache-components-prod` (parallelized across 7 groups)
- **Conditional feature activation**: When
`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS=true` is set during testing,
`dynamicIO` is automatically enabled unless explicitly disabled
- **Test adjustments**: Updates error message expectations in tests to
handle the different environment label ("Prerender" vs "Server") when
Cache Components is active

The infrastructure is designed to be temporary and will be removed once
Cache Components becomes the default behavior.

NAR-172
2025-07-10 11:48:57 -06:00
Maia Teegarden 5ac55fc899 Check if target workflow is enabled before triggering front sync (#81432)
This change adds a check to ensure the front sync workflow is enabled
before attempting to trigger it. Previously, when the workflow was
disabled, the dispatch would fail and cause false alerts about
deployment test failures.

Now, if the workflow is disabled, the sync trigger is skipped with clear
logging. The on-call person should be aware that the workflow is
disabled and can manually rerun the sync once the workflow is
re-enabled.

I tested this by commenting out the tests and just running the check if
workflow is enabled step and it worked:
![CleanShot 2025-07-08 at 14 57
48](https://github.com/user-attachments/assets/e56e3e2c-61c2-4c56-935a-025d508d3fa2)
2025-07-08 15:46:49 -07:00