Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/build_reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -317,9 +317,10 @@ jobs:
timeout-minutes: ${{ inputs.timeout_minutes }}

# This file messes up the tests because it influences the build root autodetection.
# Jest has a global cache, so PRs that poison the cache can bring down CI
- name: Clean up stray files
if: ${{ always() }}
run: rm -f /tmp/package-lock.json
run: rm -f /tmp/package-lock.json .jest-cache

- name: Upload artifact
uses: actions/upload-artifact@v4
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/test_e2e_deploy_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ on:
description: Override the proxy address to use for the test
default: ''
type: string
deployScriptPath:
description: Custom deploy script path (NEXT_TEST_DEPLOY_SCRIPT_PATH)
default: ''
type: string
deployLogsScriptPath:
description: Custom deploy logs script path (NEXT_TEST_DEPLOY_LOGS_SCRIPT_PATH)
default: ''
type: string

env:
DD_ENV: 'ci'
Expand Down Expand Up @@ -84,6 +92,8 @@ jobs:
NEXT_EXTERNAL_TESTS_FILTERS="test/deploy-tests-manifest.json" \
NEXT_TEST_VERSION="${{ github.event.inputs.nextVersion || needs.setup.outputs.next-version || 'canary' }}" \
VERCEL_CLI_VERSION="${{ github.event.inputs.vercelCliVersion || 'vercel@latest' }}" \
NEXT_TEST_DEPLOY_SCRIPT_PATH="${{ github.event.inputs.deployScriptPath || '' }}" \
NEXT_TEST_DEPLOY_LOGS_SCRIPT_PATH="${{ github.event.inputs.deployLogsScriptPath || '' }}" \
node run-tests.js --timings -g ${{ matrix.group }} -c 2 --type e2e
skipNativeBuild: 'yes'
skipNativeInstall: 'no'
Expand All @@ -95,6 +105,7 @@ jobs:
test-deploy-adapter:
name: Run Deploy Adapter Tests
needs: setup
if: ${{ github.event.inputs.deployScriptPath == '' }}
uses: ./.github/workflows/build_reusable.yml
secrets: inherit
strategy:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ test-timings.json
*.tsbuildinfo
.swc/
.turbo
.jest-cache/

# Storybook
*storybook.log
Expand Down
6 changes: 3 additions & 3 deletions crates/next-api/src/project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -779,9 +779,9 @@ pub struct Project {
/// E.g. `.next`
dist_dir: RcStr,

/// The root directory of the distDir. Generally the same as `distDir` but when
/// `isolatedDevBuild` is true it is the parent directory of `distDir`. This is used to
/// ensure that the bundler doesn't traverse into the output directory.
/// The root directory of the distDir. In development mode, this is the parent directory of
/// `distDir` since development builds use `{distDir}/dev`. This is used to ensure that the
/// bundler doesn't traverse into the output directory.
dist_dir_root: RcStr,

/// Filesystem watcher options.
Expand Down
3 changes: 2 additions & 1 deletion crates/next-core/src/next_client/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,8 @@ pub async fn get_client_chunking_context(
.module_id_strategy(module_id_strategy.to_resolved().await?)
.debug_ids(*debug_ids.await?)
.should_use_absolute_url_references(*should_use_absolute_url_references.await?)
.nested_async_availability(*nested_async_chunking.await?);
.nested_async_availability(*nested_async_chunking.await?)
.worker_forwarded_globals(vec![rcstr!("NEXT_DEPLOYMENT_ID")]);

if next_mode.is_development() {
builder = builder
Expand Down
6 changes: 4 additions & 2 deletions crates/next-core/src/next_edge/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,8 @@ pub async fn get_edge_chunking_context_with_client_assets(
.module_id_strategy(module_id_strategy.to_resolved().await?)
.export_usage(*export_usage.await?)
.unused_references(unused_references.to_resolved().await?)
.nested_async_availability(*nested_async_chunking.await?);
.nested_async_availability(*nested_async_chunking.await?)
.worker_forwarded_globals(vec![rcstr!("NEXT_DEPLOYMENT_ID")]);

if !next_mode.is_development() {
builder = builder
Expand Down Expand Up @@ -346,7 +347,8 @@ pub async fn get_edge_chunking_context(
.module_id_strategy(module_id_strategy.to_resolved().await?)
.export_usage(*export_usage.await?)
.unused_references(unused_references.to_resolved().await?)
.nested_async_availability(*nested_async_chunking.await?);
.nested_async_availability(*nested_async_chunking.await?)
.worker_forwarded_globals(vec![rcstr!("NEXT_DEPLOYMENT_ID")]);

if !next_mode.is_development() {
builder = builder
Expand Down
2 changes: 1 addition & 1 deletion docs/01-app/02-guides/local-development.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ It provides detailed information about the time taken for each module to compile
1. Once the trace server is running you can view the trace at https://trace.nextjs.org/.
1. By default the trace viewer will aggregate timings, in order to see each individual time you can switch from "Aggregated in order" to "Spans in order" at the top right of the viewer.

> **Good to know**: The trace file is place under the development server directory, which defaults to `.next/dev`. This is controllable using the [`isolatedDevBuild`](/docs/app/api-reference/config/next-config-js/isolatedDevBuild) flag in your Next config file.
> **Good to know**: The trace file is placed under the development server directory, which defaults to `.next/dev`.

### Still having problems?

Expand Down
2 changes: 1 addition & 1 deletion docs/01-app/02-guides/upgrading/version-16.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,7 @@ module.exports = {

## Concurrent `dev` and `build`

`next dev` and `next build` now use separate output directories, enabling concurrent execution. The `next dev` command outputs to `.next/dev`. This is the new default behavior, controlled by [isolatedDevBuild](/docs/app/api-reference/config/next-config-js/isolatedDevBuild).
`next dev` and `next build` now use separate output directories, enabling concurrent execution. The `next dev` command outputs to `.next/dev`.

Additionally, a lockfile mechanism prevents multiple `next dev` or `next build` instances on the same project.

Expand Down

This file was deleted.

8 changes: 6 additions & 2 deletions docs/01-app/03-api-reference/06-cli/next.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ The following commands are available:

### `next dev` options

`next dev` starts the application in development mode with Hot Module Reloading (HMR), error reporting, and more. The following options are available when running `next dev`:
`next dev` starts the application in development mode with Hot Module Reloading (HMR), error reporting, and more.

> **Good to know**: Development builds output to `.next/dev` instead of `.next`. This allows you to run `next dev` and `next build` concurrently without conflicts.

The following options are available when running `next dev`:

| Option | Description |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
Expand Down Expand Up @@ -175,7 +179,7 @@ The following options are available for the `next typegen` command:
| `-h, --help` | Show all available options. |
| `[directory]` | A directory on which to generate types. If not provided, the current directory will be used. |

Output files are written to `<distDir>/types` (typically: `.next/dev/types` or `.next/types`, see [`isolatedDevBuild`](/docs/app/api-reference/config/next-config-js/isolatedDevBuild)):
Output files are written to `<distDir>/types` (typically: `.next/dev/types` in development or `.next/types` in production):

```bash filename="Terminal"
next typegen
Expand Down
2 changes: 1 addition & 1 deletion docs/01-app/03-api-reference/08-turbopack.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ NEXT_TURBOPACK_TRACING=1 next dev

This will produce a `.next/dev/trace-turbopack` file. Include that file when creating a GitHub issue on the [Next.js repo](https://github.com/vercel/next.js) to help us investigate.

By default the development server outputs to `.next/dev`. Read more about [isolatedDevBuild](/docs/app/api-reference/config/next-config-js/isolatedDevBuild).
By default the development server outputs to `.next/dev`.

## Summary

Expand Down

This file was deleted.

5 changes: 5 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const path = require('path')
const nextJest = require('next/jest')

const createJestConfig = nextJest()
Expand Down Expand Up @@ -27,6 +28,10 @@ const customJestConfig = {
},
}

if (process.env.CI) {
customJestConfig.cacheDirectory = path.join(__dirname, '.jest-cache')
}

// Check if the environment variable is set to enable test report,
// Insert a reporter to generate a junit report to upload.
//
Expand Down
35 changes: 18 additions & 17 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@
"eslint-plugin-jsdoc": "48.0.4",
"eslint-plugin-mdx": "3.1.5",
"eslint-plugin-react": "7.37.0",
"eslint-plugin-react-hooks": "0.0.0-experimental-10680271-20260126",
"eslint-plugin-react-hooks": "0.0.0-experimental-230772f9-20260128",
"event-stream": "4.0.1",
"execa": "2.0.3",
"expect": "29.7.0",
Expand Down Expand Up @@ -258,16 +258,16 @@
"pretty-ms": "7.0.0",
"random-seed": "0.3.0",
"react": "19.0.0",
"react-builtin": "npm:react@19.3.0-canary-10680271-20260126",
"react-builtin": "npm:react@19.3.0-canary-230772f9-20260128",
"react-dom": "19.0.0",
"react-dom-builtin": "npm:react-dom@19.3.0-canary-10680271-20260126",
"react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-10680271-20260126",
"react-experimental-builtin": "npm:react@0.0.0-experimental-10680271-20260126",
"react-is-builtin": "npm:react-is@19.3.0-canary-10680271-20260126",
"react-server-dom-turbopack": "19.3.0-canary-10680271-20260126",
"react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-10680271-20260126",
"react-server-dom-webpack": "19.3.0-canary-10680271-20260126",
"react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-10680271-20260126",
"react-dom-builtin": "npm:react-dom@19.3.0-canary-230772f9-20260128",
"react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-230772f9-20260128",
"react-experimental-builtin": "npm:react@0.0.0-experimental-230772f9-20260128",
"react-is-builtin": "npm:react-is@19.3.0-canary-230772f9-20260128",
"react-server-dom-turbopack": "19.3.0-canary-230772f9-20260128",
"react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-230772f9-20260128",
"react-server-dom-webpack": "19.3.0-canary-230772f9-20260128",
"react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-230772f9-20260128",
"react-ssr-prepass": "1.0.8",
"react-virtualized": "9.22.3",
"relay-compiler": "13.0.2",
Expand All @@ -277,8 +277,8 @@
"resolve-from": "5.0.0",
"sass": "1.54.0",
"satori": "0.15.2",
"scheduler-builtin": "npm:scheduler@0.28.0-canary-10680271-20260126",
"scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-10680271-20260126",
"scheduler-builtin": "npm:scheduler@0.28.0-canary-230772f9-20260128",
"scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-230772f9-20260128",
"seedrandom": "3.0.5",
"semver": "7.3.7",
"serve-handler": "6.1.6",
Expand Down Expand Up @@ -323,10 +323,10 @@
"@types/react-dom": "19.2.3",
"@types/retry": "0.12.0",
"jest-snapshot": "30.0.0-alpha.6",
"react": "19.3.0-canary-10680271-20260126",
"react-dom": "19.3.0-canary-10680271-20260126",
"react-is": "19.3.0-canary-10680271-20260126",
"scheduler": "0.28.0-canary-10680271-20260126"
"react": "19.3.0-canary-230772f9-20260128",
"react-dom": "19.3.0-canary-230772f9-20260128",
"react-is": "19.3.0-canary-230772f9-20260128",
"scheduler": "0.28.0-canary-230772f9-20260128"
},
"packageExtensions": {
"eslint-plugin-react-hooks@0.0.0-experimental-6de32a5a-20250822": {
Expand All @@ -339,7 +339,8 @@
"webpack-sources@3.2.3": "patches/webpack-sources@3.2.3.patch",
"stacktrace-parser@0.1.10": "patches/stacktrace-parser@0.1.10.patch",
"@types/node@20.17.6": "patches/@types__node@20.17.6.patch",
"taskr@1.1.0": "patches/taskr@1.1.0.patch"
"taskr@1.1.0": "patches/taskr@1.1.0.patch",
"minizlib@3.1.0": "patches/minizlib@3.1.0.patch"
}
}
}
3 changes: 1 addition & 2 deletions packages/create-next-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
"@types/cross-spawn": "6.0.0",
"@types/node": "20.14.2",
"@types/prompts": "2.4.2",
"@types/tar": "6.1.13",
"@types/validate-npm-package-name": "4.0.2",
"@vercel/ncc": "0.38.1",
"async-retry": "1.3.1",
Expand All @@ -44,7 +43,7 @@
"picocolors": "1.0.0",
"prettier-plugin-tailwindcss": "0.6.2",
"prompts": "2.4.2",
"tar": "7.4.3",
"tar": "7.5.7",
"update-check": "1.5.4",
"validate-npm-package-name": "5.0.1"
},
Expand Down
3 changes: 1 addition & 2 deletions packages/next/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@
"@types/send": "0.14.4",
"@types/serve-handler": "6.1.4",
"@types/shell-quote": "1.7.1",
"@types/tar": "6.1.5",
"@types/text-table": "0.2.1",
"@types/ua-parser-js": "0.7.36",
"@types/webpack-sources1": "npm:@types/webpack-sources@0.1.5",
Expand Down Expand Up @@ -333,7 +332,7 @@
"strip-ansi": "6.0.0",
"style-loader": "4.0.0",
"superstruct": "1.0.3",
"tar": "6.1.15",
"tar": "7.5.7",
"taskr": "1.1.0",
"terser": "5.27.0",
"terser-webpack-plugin": "5.3.9",
Expand Down
4 changes: 0 additions & 4 deletions packages/next/src/build/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2835,10 +2835,6 @@ export default async function build(
featureName: 'experimental/ppr',
invocationCount: config.experimental.ppr ? 1 : 0,
},
{
featureName: 'experimental/isolatedDevBuild',
invocationCount: config.experimental.isolatedDevBuild ? 1 : 0,
},
{
featureName: 'turbopackFileSystemCache',
invocationCount: isFileSystemCacheEnabledForBuild(config) ? 1 : 0,
Expand Down
3 changes: 0 additions & 3 deletions packages/next/src/build/type-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ function verifyTypeScriptSetup(
enableWorkerThreads: boolean | undefined,
hasAppDir: boolean,
hasPagesDir: boolean,
isolatedDevBuild: boolean | undefined,
appDir: string | undefined,
pagesDir: string | undefined,
debugBuildPaths: { app: string[]; pages: string[] } | undefined
Expand Down Expand Up @@ -60,7 +59,6 @@ function verifyTypeScriptSetup(
cacheDir,
hasAppDir,
hasPagesDir,
isolatedDevBuild,
appDir,
pagesDir,
debugBuildPaths,
Expand Down Expand Up @@ -130,7 +128,6 @@ export async function startTypeChecking({
config.experimental.workerThreads,
!!appDir,
!!pagesDir,
config.experimental.isolatedDevBuild,
appDir,
pagesDir,
debugBuildPaths
Expand Down
1 change: 0 additions & 1 deletion packages/next/src/cli/next-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ async function runPlaywright(
disableStaticImages: nextConfig.images.disableStaticImages,
hasAppDir: !!appDir,
hasPagesDir: !!pagesDir,
isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,
appDir: appDir || undefined,
pagesDir: pagesDir || undefined,
})
Expand Down
1 change: 0 additions & 1 deletion packages/next/src/cli/next-typegen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ const nextTypegen = async (
disableStaticImages: nextConfig.images.disableStaticImages,
hasAppDir: !!appDir,
hasPagesDir: !!pagesDir,
isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,
appDir: appDir || undefined,
pagesDir: pagesDir || undefined,
})
Expand Down
Loading
Loading