From 1fedf5b0d348237446505c2950e0b53fd1639ca3 Mon Sep 17 00:00:00 2001 From: nextjs-bot Date: Sat, 21 Feb 2026 23:25:51 +0000 Subject: [PATCH 1/2] v16.2.0-canary.57 --- lerna.json | 2 +- packages/create-next-app/package.json | 2 +- packages/eslint-config-next/package.json | 4 ++-- packages/eslint-plugin-internal/package.json | 2 +- packages/eslint-plugin-next/package.json | 2 +- packages/font/package.json | 2 +- packages/next-bundle-analyzer/package.json | 2 +- packages/next-codemod/package.json | 2 +- packages/next-env/package.json | 2 +- packages/next-mdx/package.json | 2 +- packages/next-plugin-storybook/package.json | 2 +- packages/next-polyfill-module/package.json | 2 +- packages/next-polyfill-nomodule/package.json | 2 +- packages/next-routing/package.json | 2 +- packages/next-rspack/package.json | 2 +- packages/next-swc/package.json | 2 +- packages/next/package.json | 14 +++++++------- packages/react-refresh-utils/package.json | 2 +- packages/third-parties/package.json | 4 ++-- pnpm-lock.yaml | 16 ++++++++-------- 20 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 7ebb0d7d355d12..1a189ff0b53083 100644 --- a/lerna.json +++ b/lerna.json @@ -15,5 +15,5 @@ "registry": "https://registry.npmjs.org/" } }, - "version": "16.2.0-canary.56" + "version": "16.2.0-canary.57" } \ No newline at end of file diff --git a/packages/create-next-app/package.json b/packages/create-next-app/package.json index de2696efa7eac7..9cc3bbd401bfdb 100644 --- a/packages/create-next-app/package.json +++ b/packages/create-next-app/package.json @@ -1,6 +1,6 @@ { "name": "create-next-app", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "keywords": [ "react", "next", diff --git a/packages/eslint-config-next/package.json b/packages/eslint-config-next/package.json index 71d384d3c69759..30563c09049a8b 100644 --- a/packages/eslint-config-next/package.json +++ b/packages/eslint-config-next/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-next", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "ESLint configuration used by Next.js.", "license": "MIT", "repository": { @@ -12,7 +12,7 @@ "dist" ], "dependencies": { - "@next/eslint-plugin-next": "16.2.0-canary.56", + "@next/eslint-plugin-next": "16.2.0-canary.57", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 473f69f99ac9d6..b241692dab3c12 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -1,7 +1,7 @@ { "name": "@next/eslint-plugin-internal", "private": true, - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "ESLint plugin for working on Next.js.", "exports": { ".": "./src/eslint-plugin-internal.js" diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json index fee71e27886685..8c897c2f46f086 100644 --- a/packages/eslint-plugin-next/package.json +++ b/packages/eslint-plugin-next/package.json @@ -1,6 +1,6 @@ { "name": "@next/eslint-plugin-next", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "ESLint plugin for Next.js.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/font/package.json b/packages/font/package.json index 558c71831ee9b3..813e7d8baa70b0 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,7 +1,7 @@ { "name": "@next/font", "private": true, - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "repository": { "url": "vercel/next.js", "directory": "packages/font" diff --git a/packages/next-bundle-analyzer/package.json b/packages/next-bundle-analyzer/package.json index bfb750c9ebe6c9..cf9ebe0d4df3c1 100644 --- a/packages/next-bundle-analyzer/package.json +++ b/packages/next-bundle-analyzer/package.json @@ -1,6 +1,6 @@ { "name": "@next/bundle-analyzer", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "main": "index.js", "types": "index.d.ts", "license": "MIT", diff --git a/packages/next-codemod/package.json b/packages/next-codemod/package.json index 674ec8552eae4d..06b4bd00eced0e 100644 --- a/packages/next-codemod/package.json +++ b/packages/next-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@next/codemod", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "license": "MIT", "repository": { "type": "git", diff --git a/packages/next-env/package.json b/packages/next-env/package.json index 958f83c551f98f..0dbfafbb1ea6f9 100644 --- a/packages/next-env/package.json +++ b/packages/next-env/package.json @@ -1,6 +1,6 @@ { "name": "@next/env", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "keywords": [ "react", "next", diff --git a/packages/next-mdx/package.json b/packages/next-mdx/package.json index 67d19ebb690bda..aed0ae6bc09fb1 100644 --- a/packages/next-mdx/package.json +++ b/packages/next-mdx/package.json @@ -1,6 +1,6 @@ { "name": "@next/mdx", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "main": "index.js", "license": "MIT", "repository": { diff --git a/packages/next-plugin-storybook/package.json b/packages/next-plugin-storybook/package.json index 37eb38063b74e0..cd909117bf4fe8 100644 --- a/packages/next-plugin-storybook/package.json +++ b/packages/next-plugin-storybook/package.json @@ -1,6 +1,6 @@ { "name": "@next/plugin-storybook", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "repository": { "url": "vercel/next.js", "directory": "packages/next-plugin-storybook" diff --git a/packages/next-polyfill-module/package.json b/packages/next-polyfill-module/package.json index 5ba877a46d8107..22362e9398a48c 100644 --- a/packages/next-polyfill-module/package.json +++ b/packages/next-polyfill-module/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-module", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)", "main": "dist/polyfill-module.js", "license": "MIT", diff --git a/packages/next-polyfill-nomodule/package.json b/packages/next-polyfill-nomodule/package.json index 970aa5e3fe10fc..b30ef1e340dc80 100644 --- a/packages/next-polyfill-nomodule/package.json +++ b/packages/next-polyfill-nomodule/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-nomodule", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "A polyfill for non-dead, nomodule browsers.", "main": "dist/polyfill-nomodule.js", "license": "MIT", diff --git a/packages/next-routing/package.json b/packages/next-routing/package.json index 281b24886a4ea2..17c8c8aafdd6cd 100644 --- a/packages/next-routing/package.json +++ b/packages/next-routing/package.json @@ -1,6 +1,6 @@ { "name": "@next/routing", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "keywords": [ "react", "next", diff --git a/packages/next-rspack/package.json b/packages/next-rspack/package.json index 3c1b00f0afd599..889827ca753689 100644 --- a/packages/next-rspack/package.json +++ b/packages/next-rspack/package.json @@ -1,6 +1,6 @@ { "name": "next-rspack", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "repository": { "url": "vercel/next.js", "directory": "packages/next-rspack" diff --git a/packages/next-swc/package.json b/packages/next-swc/package.json index f36a82cf9e084e..c9b52da4f7513a 100644 --- a/packages/next-swc/package.json +++ b/packages/next-swc/package.json @@ -1,6 +1,6 @@ { "name": "@next/swc", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "private": true, "files": [ "native/" diff --git a/packages/next/package.json b/packages/next/package.json index 76cf6fd85fe562..38c5c0fcab1d2f 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -1,6 +1,6 @@ { "name": "next", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "The React Framework", "main": "./dist/server/next.js", "license": "MIT", @@ -97,7 +97,7 @@ ] }, "dependencies": { - "@next/env": "16.2.0-canary.56", + "@next/env": "16.2.0-canary.57", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", @@ -162,11 +162,11 @@ "@modelcontextprotocol/sdk": "1.18.1", "@mswjs/interceptors": "0.23.0", "@napi-rs/triples": "1.2.0", - "@next/font": "16.2.0-canary.56", - "@next/polyfill-module": "16.2.0-canary.56", - "@next/polyfill-nomodule": "16.2.0-canary.56", - "@next/react-refresh-utils": "16.2.0-canary.56", - "@next/swc": "16.2.0-canary.56", + "@next/font": "16.2.0-canary.57", + "@next/polyfill-module": "16.2.0-canary.57", + "@next/polyfill-nomodule": "16.2.0-canary.57", + "@next/react-refresh-utils": "16.2.0-canary.57", + "@next/swc": "16.2.0-canary.57", "@opentelemetry/api": "1.6.0", "@playwright/test": "1.51.1", "@rspack/core": "1.6.7", diff --git a/packages/react-refresh-utils/package.json b/packages/react-refresh-utils/package.json index 242386a76535b6..8caebbf9c067e3 100644 --- a/packages/react-refresh-utils/package.json +++ b/packages/react-refresh-utils/package.json @@ -1,6 +1,6 @@ { "name": "@next/react-refresh-utils", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "description": "An experimental package providing utilities for React Refresh.", "repository": { "url": "vercel/next.js", diff --git a/packages/third-parties/package.json b/packages/third-parties/package.json index fa769f3125dd30..7236dee8665126 100644 --- a/packages/third-parties/package.json +++ b/packages/third-parties/package.json @@ -1,6 +1,6 @@ { "name": "@next/third-parties", - "version": "16.2.0-canary.56", + "version": "16.2.0-canary.57", "repository": { "url": "vercel/next.js", "directory": "packages/third-parties" @@ -26,7 +26,7 @@ "third-party-capital": "1.0.20" }, "devDependencies": { - "next": "16.2.0-canary.56", + "next": "16.2.0-canary.57", "outdent": "0.8.0", "prettier": "2.5.1", "typescript": "5.9.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7500940b83320..f5169c501f4da2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1011,7 +1011,7 @@ importers: packages/eslint-config-next: dependencies: '@next/eslint-plugin-next': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../eslint-plugin-next eslint: specifier: '>=9.0.0' @@ -1088,7 +1088,7 @@ importers: packages/next: dependencies: '@next/env': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../next-env '@swc/helpers': specifier: 0.5.15 @@ -1216,19 +1216,19 @@ importers: specifier: 1.2.0 version: 1.2.0 '@next/font': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../font '@next/polyfill-module': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../next-polyfill-module '@next/polyfill-nomodule': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../next-polyfill-nomodule '@next/react-refresh-utils': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../react-refresh-utils '@next/swc': - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../next-swc '@opentelemetry/api': specifier: 1.6.0 @@ -1943,7 +1943,7 @@ importers: version: 1.0.20 devDependencies: next: - specifier: 16.2.0-canary.56 + specifier: 16.2.0-canary.57 version: link:../next outdent: specifier: 0.8.0 From 54d12035a043c8ce9df63ee460b84d794fca2fd2 Mon Sep 17 00:00:00 2001 From: Jiwon Choi Date: Sat, 21 Feb 2026 17:13:22 -0800 Subject: [PATCH 2/2] Fix route.replace crash with --debug-build-paths (#90312) ## Summary - Fixes `route.replace is not a function` error when running `next build --debug-build-paths` on projects with parallel routes **Root cause:** Turbopack filters routes at the route level (e.g., `/parallel-test` includes all page entries), while JS route discovery filters at the file path level (e.g., only `app/parallel-test/page.tsx`). This causes the `appPathsManifest` to contain entries (like `/@sidebar/page`) that `mappedAppPages` doesn't have. The unguarded lookup at `mappedAppPages[originalPath].replace(...)` crashes on `undefined`. **Fix:** Added a guard to skip manifest entries that don't exist in `mappedAppPages`. ## Test plan - [x] Verified `next build --debug-build-paths 'app/parallel-test/**/page.tsx'` succeeds on test fixture - [x] Verified other `--debug-build-paths` patterns still work (multi-page, pages-only, etc.) --- packages/next/src/build/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/next/src/build/index.ts b/packages/next/src/build/index.ts index d2d9bf4fe90128..3dd1aa5e17e1b2 100644 --- a/packages/next/src/build/index.ts +++ b/packages/next/src/build/index.ts @@ -2185,7 +2185,10 @@ export default async function build( for (const [originalPath, normalizedPath] of Object.entries( appPathRoutes )) { - if (normalizedPath === page) { + if ( + normalizedPath === page && + mappedAppPages[originalPath] + ) { pagePath = mappedAppPages[originalPath].replace( /^private-next-app-dir/, ''