chore: upgrade to next 16 + react 19

- next 14.2 -> 16.2, react/react-dom 18 -> 19, eslint 8 -> 9,
  typescript-eslint 6 -> 8, typescript 5.3 -> 5.7, @types/react* -> 19
- remove i18n config from next.config.js (unsupported in App Router; it
  forced a pages-router _document and broke the 404 prerender)
- Next 16 reconfigured tsconfig (moduleResolution bundler, jsx react-jsx)

Build, unit tests, and e2e all green on the new stack.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
isra el
2026-07-11 01:10:35 +03:00
parent c92740c401
commit ea1b00ce3f
5 changed files with 2595 additions and 1511 deletions

3
web/next-env.d.ts vendored
View File

@@ -1,5 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/dev/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

View File

@@ -1,10 +1,6 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
i18n: {
locales: ['en-US'],
defaultLocale: 'en-US',
},
output: 'standalone',
async redirects() {

View File

@@ -44,14 +44,14 @@
"cmdk": "^1.1.1",
"date-fns": "^4.1.0",
"lucide-react": "^0.453.0",
"next": "14.2.26",
"next": "16.2.10",
"next-auth": "^4.24.10",
"next-themes": "^0.4.3",
"papaparse": "^5.4.1",
"prisma": "^5.22.0",
"react": "^18.2.0",
"react": "^19.2.0",
"react-day-picker": "^9.9.0",
"react-dom": "^18.2.0",
"react-dom": "^19.2.0",
"react-dropzone": "^14.3.5",
"react-hook-form": "^7.53.1",
"react-qr-code": "^2.0.12",
@@ -75,16 +75,16 @@
"jsdom": "^25.0.1",
"msw": "^2.7.0",
"vitest": "^2.1.8",
"@types/node": "20.11.5",
"@types/react": "18.2.48",
"@types/react-dom": "18.2.18",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"@types/node": "^20.11.5",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@typescript-eslint/eslint-plugin": "^8.18.0",
"@typescript-eslint/parser": "^8.18.0",
"autoprefixer": "^10.4.20",
"eslint": "8.56.0",
"eslint-config-next": "14.1.0",
"eslint": "^9.17.0",
"eslint-config-next": "16.2.10",
"postcss": "^8.4.47",
"tailwindcss": "^3.4.14",
"typescript": "5.3.3"
"typescript": "^5.7.2"
}
}

4049
web/pnpm-lock.yaml generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,16 @@
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"baseUrl": ".",
"paths": {
"@/*": ["./*"]
"@/*": [
"./*"
]
},
"allowJs": true,
"skipLibCheck": true,
@@ -13,18 +19,26 @@
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"jsx": "react-jsx",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"strictNullChecks": false,
"strictNullChecks": false
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
".next/dev/types/**/*.ts"
],
"exclude": [
"node_modules"
]
}