next 16.0.0-beta.0 → 16.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +3 -3
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/index.js +1 -1
  7. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
  8. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
  9. package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
  10. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  11. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  12. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  13. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  14. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  15. package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
  16. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  17. package/dist/compiled/next-server/pages.runtime.prod.js +1 -1
  18. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  19. package/dist/esm/build/index.js +3 -3
  20. package/dist/esm/build/swc/index.js +1 -1
  21. package/dist/esm/build/webpack-config.js +2 -2
  22. package/dist/esm/client/app-bootstrap.js +1 -1
  23. package/dist/esm/client/index.js +1 -1
  24. package/dist/esm/lib/turbopack-warning.js +3 -1
  25. package/dist/esm/lib/turbopack-warning.js.map +1 -1
  26. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  27. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  28. package/dist/esm/server/lib/app-info-log.js +1 -1
  29. package/dist/esm/server/lib/start-server.js +1 -1
  30. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  31. package/dist/lib/turbopack-warning.js +3 -1
  32. package/dist/lib/turbopack-warning.js.map +1 -1
  33. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  34. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  35. package/dist/server/lib/app-info-log.js +1 -1
  36. package/dist/server/lib/start-server.js +1 -1
  37. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  38. package/dist/telemetry/anonymous-meta.js +1 -1
  39. package/dist/telemetry/events/session-stopped.js +2 -2
  40. package/dist/telemetry/events/version.js +2 -2
  41. package/package.json +15 -15
@@ -304,7 +304,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
304
304
  try {
305
305
  const nextBuildSpan = trace('next-build', undefined, {
306
306
  buildMode: experimentalBuildMode,
307
- version: "16.0.0-beta.0"
307
+ version: "16.0.0-canary.0"
308
308
  });
309
309
  NextBuildContext.nextBuildSpan = nextBuildSpan;
310
310
  NextBuildContext.dir = dir;
@@ -791,7 +791,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
791
791
  // Files outside of the distDir can be "type": "module"
792
792
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
793
793
  // These are written to distDir, so they need to come after creating and cleaning distDr.
794
- await recordFrameworkVersion("16.0.0-beta.0");
794
+ await recordFrameworkVersion("16.0.0-canary.0");
795
795
  await updateBuildDiagnostics({
796
796
  buildStage: 'start'
797
797
  });
@@ -2457,7 +2457,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
2457
2457
  config,
2458
2458
  configOutDir: path.join(dir, configOutDir),
2459
2459
  staticPages,
2460
- nextVersion: "16.0.0-beta.0",
2460
+ nextVersion: "16.0.0-canary.0",
2461
2461
  tracingRoot: outputFileTracingRoot,
2462
2462
  hasNodeMiddleware,
2463
2463
  hasInstrumentationHook,
@@ -10,7 +10,7 @@ import { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc';
10
10
  import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
13
- const nextVersion = "16.0.0-beta.0";
13
+ const nextVersion = "16.0.0-canary.0";
14
14
  const ArchName = arch();
15
15
  const PlatformName = platform();
16
16
  function infoLog(...args) {
@@ -1599,7 +1599,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1599
1599
  isClient && new CopyFilePlugin({
1600
1600
  // file path to build output of `@next/polyfill-nomodule`
1601
1601
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1602
- cacheKey: "16.0.0-beta.0",
1602
+ cacheKey: "16.0.0-canary.0",
1603
1603
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1604
1604
  minimize: false,
1605
1605
  info: {
@@ -1782,7 +1782,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1782
1782
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1783
1783
  // - Next.js version
1784
1784
  // - next.config.js keys that affect compilation
1785
- version: `${__dirname}|${"16.0.0-beta.0"}|${configVars}`,
1785
+ version: `${__dirname}|${"16.0.0-canary.0"}|${configVars}`,
1786
1786
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1787
1787
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1788
1788
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -5,7 +5,7 @@
5
5
  * - next/script with `beforeInteractive` strategy
6
6
  */ import { getAssetPrefix } from './asset-prefix';
7
7
  import { setAttributesFromProps } from './set-attributes-from-props';
8
- const version = "16.0.0-beta.0";
8
+ const version = "16.0.0-canary.0";
9
9
  window.next = {
10
10
  version,
11
11
  appDir: true
@@ -25,7 +25,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
25
25
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
26
26
  import tracer from './tracing/tracer';
27
27
  import { isNextRouterError } from './components/is-next-router-error';
28
- export const version = "16.0.0-beta.0";
28
+ export const version = "16.0.0-canary.0";
29
29
  export let router;
30
30
  export const emitter = mitt();
31
31
  const looseToArray = (input)=>[].slice.call(input);
@@ -30,7 +30,9 @@ const unsupportedTurbopackNextConfigOptions = [
30
30
  'experimental.forceSwcTransforms',
31
31
  'experimental.fullySpecified',
32
32
  'experimental.urlImports',
33
- 'experimental.slowModuleDetection'
33
+ 'experimental.slowModuleDetection',
34
+ // We always use lightningcss
35
+ 'experimental.useLightningcss'
34
36
  ];
35
37
  /** */ export async function validateTurboNextConfig({ dir, isDev }) {
36
38
  const { defaultConfig } = require('../server/config-shared');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n hasWebpackConfig = Boolean(rawNextConfig.webpack)\n hasTurboConfig = Boolean(rawNextConfig.turbopack)\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n const value = obj?.[key]\n if (typeof value === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n keys = keys.concat(flattenKeys(value, pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n for (const key of customKeys) {\n if (key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedTurbopackNextConfigOptions.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config.\n This may be a mistake.\n\n As of Next.js 16 Turbopack is enabled by default and\n custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration,\n if that is the case for you, you can silence this error by passing the\n \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an \n empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["loadConfig","Log","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","unsupportedTurbopackNextConfigOptions","validateTurboNextConfig","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","rawConfig","Boolean","webpack","turbopack","flattenKeys","obj","prefix","keys","key","value","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","startsWith","isUnsupported","some","unsupportedKey","e","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n\n // We always use lightningcss\n 'experimental.useLightningcss',\n]\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n hasWebpackConfig = Boolean(rawNextConfig.webpack)\n hasTurboConfig = Boolean(rawNextConfig.turbopack)\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n const value = obj?.[key]\n if (typeof value === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n keys = keys.concat(flattenKeys(value, pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n for (const key of customKeys) {\n if (key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedTurbopackNextConfigOptions.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config.\n This may be a mistake.\n\n As of Next.js 16 Turbopack is enabled by default and\n custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration,\n if that is the case for you, you can silence this error by passing the\n \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an \n empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["loadConfig","Log","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","unsupportedTurbopackNextConfigOptions","validateTurboNextConfig","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","rawConfig","Boolean","webpack","turbopack","flattenKeys","obj","prefix","keys","key","value","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","startsWith","isUnsupported","some","unsupportedKey","e","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":"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","ignoreList":[0]}
@@ -95,7 +95,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
95
95
  }
96
96
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
97
97
  const hotReloaderSpan = trace('hot-reloader', undefined, {
98
- version: "16.0.0-beta.0"
98
+ version: "16.0.0-canary.0"
99
99
  });
100
100
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
101
101
  // of the current `next dev` invocation.
@@ -160,7 +160,7 @@ export default class HotReloaderWebpack {
160
160
  this.previewProps = previewProps;
161
161
  this.rewrites = rewrites;
162
162
  this.hotReloaderSpan = trace('hot-reloader', undefined, {
163
- version: "16.0.0-beta.0"
163
+ version: "16.0.0-canary.0"
164
164
  });
165
165
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
166
166
  // of the current `next dev` invocation.
@@ -15,7 +15,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
15
15
  bundlerSuffix = ' (webpack)';
16
16
  }
17
17
  }
18
- Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.0-beta.0"}`))}${bundlerSuffix}`);
18
+ Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.0-canary.0"}`))}${bundlerSuffix}`);
19
19
  if (appUrl) {
20
20
  Log.bootstrap(`- Local: ${appUrl}`);
21
21
  }
@@ -111,7 +111,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
111
111
  export async function startServer(serverOptions) {
112
112
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
113
113
  let { port } = serverOptions;
114
- process.title = `next-server (v${"16.0.0-beta.0"})`;
114
+ process.title = `next-server (v${"16.0.0-canary.0"})`;
115
115
  let handlersReady = ()=>{};
116
116
  let handlersError = ()=>{};
117
117
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -1,5 +1,5 @@
1
1
  export function isStableBuild() {
2
- return !"16.0.0-beta.0"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
2
+ return !"16.0.0-canary.0"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
3
  }
4
4
  export class CanaryOnlyConfigError extends Error {
5
5
  constructor(arg){
@@ -86,7 +86,9 @@ const unsupportedTurbopackNextConfigOptions = [
86
86
  'experimental.forceSwcTransforms',
87
87
  'experimental.fullySpecified',
88
88
  'experimental.urlImports',
89
- 'experimental.slowModuleDetection'
89
+ 'experimental.slowModuleDetection',
90
+ // We always use lightningcss
91
+ 'experimental.useLightningcss'
90
92
  ];
91
93
  async function validateTurboNextConfig({ dir, isDev }) {
92
94
  const { defaultConfig } = require('../server/config-shared');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n hasWebpackConfig = Boolean(rawNextConfig.webpack)\n hasTurboConfig = Boolean(rawNextConfig.turbopack)\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n const value = obj?.[key]\n if (typeof value === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n keys = keys.concat(flattenKeys(value, pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n for (const key of customKeys) {\n if (key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedTurbopackNextConfigOptions.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config.\n This may be a mistake.\n\n As of Next.js 16 Turbopack is enabled by default and\n custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration,\n if that is the case for you, you can silence this error by passing the\n \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an \n empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["validateTurboNextConfig","unsupportedTurbopackNextConfigOptions","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","loadConfig","rawConfig","Boolean","webpack","turbopack","flattenKeys","obj","prefix","keys","key","value","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","startsWith","isUnsupported","some","unsupportedKey","e","Log","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n\n // We always use lightningcss\n 'experimental.useLightningcss',\n]\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n hasWebpackConfig = Boolean(rawNextConfig.webpack)\n hasTurboConfig = Boolean(rawNextConfig.turbopack)\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n const value = obj?.[key]\n if (typeof value === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n keys = keys.concat(flattenKeys(value, pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n for (const key of customKeys) {\n if (key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedTurbopackNextConfigOptions.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config.\n This may be a mistake.\n\n As of Next.js 16 Turbopack is enabled by default and\n custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration,\n if that is the case for you, you can silence this error by passing the\n \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an \n empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["validateTurboNextConfig","unsupportedTurbopackNextConfigOptions","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","loadConfig","rawConfig","Boolean","webpack","turbopack","flattenKeys","obj","prefix","keys","key","value","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","startsWith","isUnsupported","some","unsupportedKey","e","Log","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":"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","ignoreList":[0]}
@@ -151,7 +151,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
151
151
  }
152
152
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
153
153
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
154
- version: "16.0.0-beta.0"
154
+ version: "16.0.0-canary.0"
155
155
  });
156
156
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
157
157
  // of the current `next dev` invocation.
@@ -228,7 +228,7 @@ class HotReloaderWebpack {
228
228
  this.previewProps = previewProps;
229
229
  this.rewrites = rewrites;
230
230
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
231
- version: "16.0.0-beta.0"
231
+ version: "16.0.0-canary.0"
232
232
  });
233
233
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
234
234
  // of the current `next dev` invocation.
@@ -83,7 +83,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
83
83
  bundlerSuffix = ' (webpack)';
84
84
  }
85
85
  }
86
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.0-beta.0"}`))}${bundlerSuffix}`);
86
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.0-canary.0"}`))}${bundlerSuffix}`);
87
87
  if (appUrl) {
88
88
  _log.bootstrap(`- Local: ${appUrl}`);
89
89
  }
@@ -179,7 +179,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
179
179
  async function startServer(serverOptions) {
180
180
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
181
181
  let { port } = serverOptions;
182
- process.title = `next-server (v${"16.0.0-beta.0"})`;
182
+ process.title = `next-server (v${"16.0.0-canary.0"})`;
183
183
  let handlersReady = ()=>{};
184
184
  let handlersError = ()=>{};
185
185
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -21,7 +21,7 @@ _export(exports, {
21
21
  }
22
22
  });
23
23
  function isStableBuild() {
24
- return !"16.0.0-beta.0"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
24
+ return !"16.0.0-canary.0"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
25
25
  }
26
26
  class CanaryOnlyConfigError extends Error {
27
27
  constructor(arg){
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "16.0.0-beta.0"
84
+ nextVersion: "16.0.0-canary.0"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
11
11
  const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
12
12
  function eventCliSessionStopped(event) {
13
13
  // This should be an invariant, if it fails our build tooling is broken.
14
- if (typeof "16.0.0-beta.0" !== 'string') {
14
+ if (typeof "16.0.0-canary.0" !== 'string') {
15
15
  return [];
16
16
  }
17
17
  const payload = {
18
- nextVersion: "16.0.0-beta.0",
18
+ nextVersion: "16.0.0-canary.0",
19
19
  nodeVersion: process.version,
20
20
  cliCommand: event.cliCommand,
21
21
  durationMilliseconds: event.durationMilliseconds,
@@ -12,12 +12,12 @@ const EVENT_VERSION = 'NEXT_CLI_SESSION_STARTED';
12
12
  function eventCliSession(nextConfig, event) {
13
13
  var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_reactCompiler, _nextConfig_reactCompiler1;
14
14
  // This should be an invariant, if it fails our build tooling is broken.
15
- if (typeof "16.0.0-beta.0" !== 'string') {
15
+ if (typeof "16.0.0-canary.0" !== 'string') {
16
16
  return [];
17
17
  }
18
18
  const { images, i18n } = nextConfig || {};
19
19
  const payload = {
20
- nextVersion: "16.0.0-beta.0",
20
+ nextVersion: "16.0.0-canary.0",
21
21
  nodeVersion: process.version,
22
22
  cliCommand: event.cliCommand,
23
23
  isSrcDir: event.isSrcDir,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next",
3
- "version": "16.0.0-beta.0",
3
+ "version": "16.0.0-canary.0",
4
4
  "description": "The React Framework",
5
5
  "main": "./dist/server/next.js",
6
6
  "license": "MIT",
@@ -98,7 +98,7 @@
98
98
  ]
99
99
  },
100
100
  "dependencies": {
101
- "@next/env": "16.0.0-beta.0",
101
+ "@next/env": "16.0.0-canary.0",
102
102
  "@swc/helpers": "0.5.15",
103
103
  "caniuse-lite": "^1.0.30001579",
104
104
  "postcss": "8.4.31",
@@ -128,14 +128,14 @@
128
128
  },
129
129
  "optionalDependencies": {
130
130
  "sharp": "^0.34.4",
131
- "@next/swc-darwin-arm64": "16.0.0-beta.0",
132
- "@next/swc-darwin-x64": "16.0.0-beta.0",
133
- "@next/swc-linux-arm64-gnu": "16.0.0-beta.0",
134
- "@next/swc-linux-arm64-musl": "16.0.0-beta.0",
135
- "@next/swc-linux-x64-gnu": "16.0.0-beta.0",
136
- "@next/swc-linux-x64-musl": "16.0.0-beta.0",
137
- "@next/swc-win32-arm64-msvc": "16.0.0-beta.0",
138
- "@next/swc-win32-x64-msvc": "16.0.0-beta.0"
131
+ "@next/swc-darwin-arm64": "16.0.0-canary.0",
132
+ "@next/swc-darwin-x64": "16.0.0-canary.0",
133
+ "@next/swc-linux-arm64-gnu": "16.0.0-canary.0",
134
+ "@next/swc-linux-arm64-musl": "16.0.0-canary.0",
135
+ "@next/swc-linux-x64-gnu": "16.0.0-canary.0",
136
+ "@next/swc-linux-x64-musl": "16.0.0-canary.0",
137
+ "@next/swc-win32-arm64-msvc": "16.0.0-canary.0",
138
+ "@next/swc-win32-x64-msvc": "16.0.0-canary.0"
139
139
  },
140
140
  "devDependencies": {
141
141
  "@babel/code-frame": "7.26.2",
@@ -170,11 +170,11 @@
170
170
  "@modelcontextprotocol/sdk": "1.18.1",
171
171
  "@mswjs/interceptors": "0.23.0",
172
172
  "@napi-rs/triples": "1.2.0",
173
- "@next/font": "16.0.0-beta.0",
174
- "@next/polyfill-module": "16.0.0-beta.0",
175
- "@next/polyfill-nomodule": "16.0.0-beta.0",
176
- "@next/react-refresh-utils": "16.0.0-beta.0",
177
- "@next/swc": "16.0.0-beta.0",
173
+ "@next/font": "16.0.0-canary.0",
174
+ "@next/polyfill-module": "16.0.0-canary.0",
175
+ "@next/polyfill-nomodule": "16.0.0-canary.0",
176
+ "@next/react-refresh-utils": "16.0.0-canary.0",
177
+ "@next/swc": "16.0.0-canary.0",
178
178
  "@opentelemetry/api": "1.6.0",
179
179
  "@playwright/test": "1.51.1",
180
180
  "@rspack/core": "1.5.0",