diff --git a/CHANGELOG.md b/CHANGELOG.md index d8d02531d..4d21a64d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,11 @@ and this project adheres to - 🐛(backend) create a link_trace record for on-boarding documents - 🐛(backend) manage race condition when creating sandbox document +### Changed + +⬆️(frontend) upgrade Next.js to v16 #1980 + + ## [v4.7.0] - 2026-03-09 ### Added diff --git a/renovate.json b/renovate.json index 0a8f52d67..ccc138a43 100644 --- a/renovate.json +++ b/renovate.json @@ -54,10 +54,7 @@ "groupName": "ignored js dependencies", "matchManagers": ["npm"], "matchPackageNames": [ - "@next/eslint-plugin-next", - "eslint-config-next", "fetch-mock", - "next", "node", "node-fetch", "react-resizable-panels", diff --git a/src/frontend/apps/impress/.gitignore b/src/frontend/apps/impress/.gitignore index 05ad4832b..5bb7b6eff 100644 --- a/src/frontend/apps/impress/.gitignore +++ b/src/frontend/apps/impress/.gitignore @@ -12,6 +12,7 @@ # next.js /.next/ /out/ +next-env.d.ts # production /build diff --git a/src/frontend/apps/impress/next-env.d.ts b/src/frontend/apps/impress/next-env.d.ts deleted file mode 100644 index d06eebcf1..000000000 --- a/src/frontend/apps/impress/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/src/frontend/apps/impress/next.config.js b/src/frontend/apps/impress/next.config.js index bbf2df6bb..13d7053fb 100644 --- a/src/frontend/apps/impress/next.config.js +++ b/src/frontend/apps/impress/next.config.js @@ -21,6 +21,17 @@ const nextConfig = { env: { NEXT_PUBLIC_BUILD_ID: buildId, }, + /** + * In dev mode, Next.js doesn't use Webpack, but Turbopack. + */ + turbopack: { + rules: { + '*.svg': { + loaders: ['@svgr/webpack'], + as: '*.js', + }, + }, + }, webpack(config, { isServer }) { // Grab the existing rule that handles SVG imports const fileLoaderRule = config.module.rules.find((rule) => diff --git a/src/frontend/apps/impress/package.json b/src/frontend/apps/impress/package.json index 2d3d8f0fa..f39ce387d 100644 --- a/src/frontend/apps/impress/package.json +++ b/src/frontend/apps/impress/package.json @@ -7,7 +7,10 @@ "private": true, "scripts": { "dev": "next dev", - "build": "prettier --check . && yarn stylelint && next build", + "predev": "node scripts/prebuild.mjs", + "build": "prettier --check . && yarn stylelint && next build --webpack", + "prebuild": "node scripts/prebuild.mjs", + "postbuild": "node scripts/postbuild.mjs", "build:ci": "cp .env.development .env.local && yarn build", "build-theme": "cunningham -g css,ts -o src/cunningham --utility-classes && yarn prettier && yarn stylelint --fix", "start": "npx -y serve@latest out", @@ -59,7 +62,7 @@ "idb": "8.0.3", "lodash": "4.17.23", "luxon": "3.7.2", - "next": "15.5.10", + "next": "16.1.6", "posthog-js": "1.347.2", "react": "*", "react-aria-components": "1.15.1", diff --git a/src/frontend/apps/impress/scripts/postbuild.mjs b/src/frontend/apps/impress/scripts/postbuild.mjs new file mode 100644 index 000000000..e565864d3 --- /dev/null +++ b/src/frontend/apps/impress/scripts/postbuild.mjs @@ -0,0 +1,4 @@ +/** + * Post-build script: runs all tasks required after `next build`. + * Add future post-build steps here. + */ diff --git a/src/frontend/apps/impress/scripts/prebuild.mjs b/src/frontend/apps/impress/scripts/prebuild.mjs new file mode 100644 index 000000000..ccd69bb80 --- /dev/null +++ b/src/frontend/apps/impress/scripts/prebuild.mjs @@ -0,0 +1,4 @@ +/** + * Pre-build script: runs all setup tasks required before `next build`. + * Add future build preparation steps here. + */ diff --git a/src/frontend/apps/impress/src/custom-next.d.ts b/src/frontend/apps/impress/src/custom-next.d.ts index f6610a52f..7db18713b 100644 --- a/src/frontend/apps/impress/src/custom-next.d.ts +++ b/src/frontend/apps/impress/src/custom-next.d.ts @@ -1,3 +1,6 @@ +/// +/// + declare module '*.svg' { import * as React from 'react'; diff --git a/src/frontend/apps/impress/tsconfig.json b/src/frontend/apps/impress/tsconfig.json index 886605533..cd08843a6 100644 --- a/src/frontend/apps/impress/tsconfig.json +++ b/src/frontend/apps/impress/tsconfig.json @@ -11,7 +11,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -23,12 +23,6 @@ "@/docs/*": ["./src/features/docs/*"] } }, - "include": [ - "src/custom-next.d.ts", - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - ".next/types/**/*.ts" - ], + "include": ["src/custom-next.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] } diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index e236726b2..f4defae92 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -2868,10 +2868,10 @@ "@emnapi/runtime" "^1.4.3" "@tybys/wasm-util" "^0.10.0" -"@next/env@15.5.10": - version "15.5.10" - resolved "https://registry.yarnpkg.com/@next/env/-/env-15.5.10.tgz#3b0506c57d0977e60726a1663f36bc96d42c295b" - integrity sha512-plg+9A/KoZcTS26fe15LHg+QxReTazrIOoKKUC3Uz4leGGeNPgLHdevVraAAOX0snnUs3WkRx3eUQpj9mreG6A== +"@next/env@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-16.1.6.tgz#0f85979498249a94ef606ef535042a831f905e89" + integrity sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ== "@next/eslint-plugin-next@15.5.10": version "15.5.10" @@ -2880,45 +2880,45 @@ dependencies: fast-glob "3.3.1" -"@next/swc-darwin-arm64@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.7.tgz#f0c9ccfec2cd87cbd4b241ce4c779a7017aed958" - integrity sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw== +"@next/swc-darwin-arm64@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz#fbe1e360efdcc9ebd0a10301518275bc59e12a91" + integrity sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw== -"@next/swc-darwin-x64@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.7.tgz#18009e9fcffc5c0687cc9db24182ddeac56280d9" - integrity sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg== +"@next/swc-darwin-x64@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz#0e3781ef3abc8251c2a21addc733d9a87f44829b" + integrity sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ== -"@next/swc-linux-arm64-gnu@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.7.tgz#fe7c7e08264cf522d4e524299f6d3e63d68d579a" - integrity sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA== +"@next/swc-linux-arm64-gnu@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz#b24511af2c6129f2deaf5c8c04d297fe09cd40d7" + integrity sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw== -"@next/swc-linux-arm64-musl@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.7.tgz#94228fe293475ec34a5a54284e1056876f43a3cf" - integrity sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw== +"@next/swc-linux-arm64-musl@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz#9d4ed0565689fc6a867250f994736a5b8c542ccb" + integrity sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ== -"@next/swc-linux-x64-gnu@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.7.tgz#078c71201dfe7fcfb8fa6dc92aae6c94bc011cdc" - integrity sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw== +"@next/swc-linux-x64-gnu@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz#cc757f4384e7eab7d3dba704a97f737518bae0d2" + integrity sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ== -"@next/swc-linux-x64-musl@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.7.tgz#72947f5357f9226292353e0bb775643da3c7a182" - integrity sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA== +"@next/swc-linux-x64-musl@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz#ef1341740f29717deea7c6ec27ae6269386e20d1" + integrity sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg== -"@next/swc-win32-arm64-msvc@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.7.tgz#397b912cd51c6a80e32b9c0507ecd82514353941" - integrity sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ== +"@next/swc-win32-arm64-msvc@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz#fee8719242aecf9c39c3a66f1f73821f7884dd16" + integrity sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw== -"@next/swc-win32-x64-msvc@15.5.7": - version "15.5.7" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.7.tgz#e02b543d9dc6c1631d4ac239cb1177245dfedfe4" - integrity sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw== +"@next/swc-win32-x64-msvc@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz#60c27323c30f35722b20fd6d62449fbb768e46d9" + integrity sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A== "@noble/hashes@^2.0.1": version "2.0.1" @@ -8494,6 +8494,11 @@ base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +baseline-browser-mapping@^2.8.3: + version "2.10.0" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9" + integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== + baseline-browser-mapping@^2.8.9: version "2.8.19" resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.19.tgz#8d99bb7f06bc6ea5c9c1b961e631a1713069bbe0" @@ -13238,26 +13243,27 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next@15.5.10: - version "15.5.10" - resolved "https://registry.yarnpkg.com/next/-/next-15.5.10.tgz#5e3824d8f00dcd66ca4e79c38834f766976116bd" - integrity sha512-r0X65PNwyDDyOrWNKpQoZvOatw7BcsTPRKdwEqtc9cj3wv7mbBIk9tKed4klRaFXJdX0rugpuMTHslDrAU1bBg== +next@16.1.6: + version "16.1.6" + resolved "https://registry.yarnpkg.com/next/-/next-16.1.6.tgz#24a861371cbe211be7760d9a89ddf2415e3824de" + integrity sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw== dependencies: - "@next/env" "15.5.10" + "@next/env" "16.1.6" "@swc/helpers" "0.5.15" + baseline-browser-mapping "^2.8.3" caniuse-lite "^1.0.30001579" postcss "8.4.31" styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "15.5.7" - "@next/swc-darwin-x64" "15.5.7" - "@next/swc-linux-arm64-gnu" "15.5.7" - "@next/swc-linux-arm64-musl" "15.5.7" - "@next/swc-linux-x64-gnu" "15.5.7" - "@next/swc-linux-x64-musl" "15.5.7" - "@next/swc-win32-arm64-msvc" "15.5.7" - "@next/swc-win32-x64-msvc" "15.5.7" - sharp "^0.34.3" + "@next/swc-darwin-arm64" "16.1.6" + "@next/swc-darwin-x64" "16.1.6" + "@next/swc-linux-arm64-gnu" "16.1.6" + "@next/swc-linux-arm64-musl" "16.1.6" + "@next/swc-linux-x64-gnu" "16.1.6" + "@next/swc-linux-x64-musl" "16.1.6" + "@next/swc-win32-arm64-msvc" "16.1.6" + "@next/swc-win32-x64-msvc" "16.1.6" + sharp "^0.34.4" no-case@^3.0.4: version "3.0.4" @@ -15286,7 +15292,7 @@ shallowequal@1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -sharp@^0.34.3: +sharp@^0.34.4: version "0.34.5" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.5.tgz#b6f148e4b8c61f1797bde11a9d1cfebbae2c57b0" integrity sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==