Skip to content

refactor(deps): lift Next 15→16, vitest 2→4, ESLint 9→10, TS 5→6, @types/node 20→26 - #16

Merged
github-actions[bot] merged 2 commits into
mainfrom
refactor/framework-lift
Aug 31, 2026
Merged

refactor(deps): lift Next 15→16, vitest 2→4, ESLint 9→10, TS 5→6, @types/node 20→26#16
github-actions[bot] merged 2 commits into
mainfrom
refactor/framework-lift

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

What moved

Package From To
next ^15.0.0 ^16 (16.3.3)
eslint-config-next ^15.0.0 ^16
vitest ^2.1.5 ^4 (4.1.11)
eslint ^9 ^10 (10.9.1)
typescript ^5 ^6 (6.0.3)
@types/node ^20 ^26 (26.4.0)

Traps handled

  • next lint removed in Next 16 → lint script is now eslint ..
  • ESLint 10 dropped eslintrc: eslint.config.mjs rewritten from FlatCompat to eslint-config-next v16's native flat exports (core-web-vitals + typescript); @eslint/eslintrc devDep removed.
  • eslint-plugin-react version: 'detect' crashes under ESLint 10 (getFilename is not a function) → pinned settings.react.version: '19'.
  • vitest 4: no workspace config in this repo (plain single-project vitest.config.ts), mocks unaffected — all 6 tests pass unchanged.
  • Next 16 tsconfig reconfiguration: build set jsx: react-jsx (mandatory) and added .next/dev/types/**/*.ts to include; committed as reformatted by prettier.
  • No middleware.ts; next.config.ts is empty — no removed options.

Verification

Ran locally against a schema-migrated scratch Postgres (same shape CI's service container provides):

  • npm run format:check
  • npm run lint ✓ (0 errors)
  • npm run typecheck
  • npm test ✓ 6/6
  • npm run db:migrate
  • npm run build ✓ (Next 16.3.3, all routes compile)

🤖 Generated with Claude Code

https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn

catomean and others added 2 commits August 31, 2026 14:09
…pes/node 20→26

- next ^15.0.0 → ^16 (16.3.3), eslint-config-next ^15.0.0 → ^16
- vitest ^2.1.5 → ^4 (4.1.11) — plain single-project config, no
  workspace file; 6/6 tests pass unchanged
- eslint ^9 → ^10 (10.9.1): eslint.config.mjs rewritten from
  FlatCompat (@eslint/eslintrc, now dropped from devDeps) to
  eslint-config-next v16's native flat exports
- lint script: `next lint` (removed in Next 16) → `eslint .`
- settings.react.version pinned to '19' — eslint-plugin-react's
  'detect' calls getFilename(), removed in ESLint 10
- typescript ^5 → ^6 (6.0.3), @types/node ^20 → ^26 (26.4.0)
- tsconfig: Next 16 build set jsx→react-jsx and added
  .next/dev/types to include (mandatory Next 16 changes)

Verified locally against a schema-migrated Postgres (same shape as CI):
format:check, lint, typecheck, 6/6 tests, db:migrate, next build all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn
The first lockfile write hit two npm 11 bugs in one file: the nested
esbuild@0.28.2 tree under vitest was missing its per-platform optional
packages entirely (CI: "Missing: @esbuild/linux-x64@0.28.2 from lock
file"), and after a full regeneration the same 26 nested entries were
written WITHOUT "optional": true, making npm ci fail EBADPLATFORM on
@esbuild/aix-ppc64. Regenerated from scratch, then marked the 26 nested
@esbuild/* platform entries optional (matching how npm recorded the
identical entries under tsx). Verified: rm -rf node_modules && npm ci
green, verify + build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn
@github-actions
github-actions Bot merged commit ee1e492 into main Aug 31, 2026
1 check passed
@github-actions
github-actions Bot deleted the refactor/framework-lift branch August 31, 2026 12:22
github-actions Bot pushed a commit that referenced this pull request Aug 31, 2026
Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn

Co-authored-by: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant