Skip to main content

Major Dependency Upgrades

Version: 3.0.0 Date: 2026-05-07

Goal: Keep the stack up to date for security, performance, and maintainability.

Solution: Applied dependency updates in three risk-based waves, with code adjustments for breaking changes.

Implementation Details:

  • Safe group: patch/minor only (ncu -t minor) on root and ui
  • Moderate group: Jest 30, Joi 18, ssh2-sftp-client 12, @types/express 5, @types/node 25, @nestjs/axios 4, @nestjs/config 4, @nestjs/schedule 6; @hookform/resolvers 5, react-markdown 10, @vitejs/plugin-react 5
  • Critical group: React 19, Vite 7, MUI 7, NestJS 11, @nestjs/serve-static 5, React Router 7, ESLint 10 (flat config on root)
  • Logger winston typed with TransformableInfo
  • React 19: defaultProps → default params, JSX namespace, cloneElement props typing
  • MUI 7: InputLabelPropsslotProps.inputLabel; CustomMenu typed via HandlerProps
  • ESLint flat config (eslint.config.js) replaces .eslintrc.js at root
  • ui/eslint.config.cjs added for the ui subtree
  • Cosmetic lint rules set to warn to avoid CI breakage

Not updated (and why):

  • OpenTelemetry: peer conflict (auto-instrumentations-node@0.70 requires @opentelemetry/core@^2.x, incompatible with current exporters)
  • ESLint 10 ui: eslint-plugin-react-hooks 4.x uses context.getSource() removed in ESLint 9+
  • @mui/joy: kept at beta.52; ncu proposed a dev snapshot (5.0.0-dev.xxx)

Files Modified:

  • package.json, ui/package.json - Dependency version bumps
  • src/core/logger/logger.service.ts - Winston format callback typing
  • ui/src/components/atoms/CustomMenu.tsx - React 19 + HandlerProps/MenuItemHandlerProps
  • ui/src/components/atoms/CustomTextField.tsx - defaultProps wrapper + slotProps.inputLabel
  • ui/src/pages/dashboard/TaskStatus.tsx - JSX.ElementReactElement
  • ui/src/components/atoms/RenderWhen.tsx - Removed eslint-disable
  • eslint.config.js - Flat config, cosmetic rules as warn
  • ui/eslint.config.cjs - Flat config for ui subtree
  • Various files: {}object, unused vars prefixed with _