chore(deps): upgrade all dependencies (2026-08-03) - #15
devin-ai-integration[bot] wants to merge 12 commits into
Conversation
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
…t from 4.3.4 to 6.0.5 Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
…rts from 1.7.0 to 2.1.1 Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Vite 8's rolldown dep-optimizer mis-handles the webpack/css-loader bundle shipped by @react-jvectormap/core, which throws during module init and blanks the entire app at runtime while the build still exits 0. Co-Authored-By: Phil Bedford <phil.bedford@cognition.ai>
Runtime verification passed on
|










Summary
Upgrades every outdated npm dependency in the template, batched patch → minor → major (one commit per major) so any single upgrade can be reverted in isolation. Baseline on
mainwas green (npm run build,npm run lint,npx tsc --noEmit) and remains green after every batch.Two upgrades needed more than a version bump:
vite6 → 7.3.6, not 8 (with@vitejs/plugin-react4 → 5.2.0). Vite 8 was attempted first (commitdc55f8f) and broke the app at runtime while the build still exited 0: vite 8'srolldowndep-optimizer mis-handles the webpack/css-loader bundle shipped by@react-jvectormap/core, which throws_..._css_loader_..._WEBPACK_IMPORTED_MODULE_1___default(...) is not a functionduring module init.App.tsxstatically imports Home →CountryMap→@react-jvectormap/core, so that throw blanks the entire React tree on every route, in dev and in the production preview.optimizeDeps.exclude: ['@react-jvectormap/core']is not a fix either (it swaps the error fordoes not provide an export named 'VectorMap'), so commit214ae23pins vite to 7.x.vite.config.tsis unchanged. This is caught only by loading the app — see the verification comment on this PR.Note the vite commit also regenerated
package-lock.json(hence its large diff): resolving the new plugin-react against the old lock, which still pinned@babel/core@7as a transitive of plugin-react 4, failed withERESOLVE.typescript5.7 → 6.0.3, not 7.0.2. TS 7.0.2 builds and type-checks fine here, buttypescript-eslint@8hard-errors on it (typescript-eslint does not support TS 7.0, see typescript-eslint#10940), which breaks thelintgate. TS 6.0.3 is the newest version inside typescript-eslint's supported range (>=4.8.4 <6.1.0). Pinning convention~preserved fortypescript;^everywhere else.Coupled packages were upgraded together as units:
react/react-dom/@types/react/@types/react-dom,tailwindcss/@tailwindcss/postcss,apexcharts/react-apexcharts, all@fullcalendar/*.overrides(React 19 peer-dep shims) are left untouched, but two are now redundant and can be dropped in a follow-up:react-helmet-async@3declaresreact: ^16.6 || ^17 || ^18 || ^19, and@react-jvectormap/worlddeclares no peer deps at all.@react-jvectormap/corestill caps at React 18, so its override is still required.Upgrades
Patch
eslint@eslint/jspostcss@fullcalendar/core@fullcalendar/daygrid@fullcalendar/interaction@fullcalendar/list@fullcalendar/react@fullcalendar/timegridMinor
reactreact-dom@types/react@types/react-domtailwindcss@tailwindcss/postcssreact-routertailwind-mergetypescript-eslintMajor (one commit each)
vite@vitejs/plugin-reactvite-plugin-svgrswiperapexchartsreact-apexchartsreact-dropzonereact-helmet-asynceslint-plugin-react-refreshglobalstypescriptSecurity fixes
npm auditwent from 13 vulnerabilities (1 critical, 9 high, 2 moderate, 1 low) to 1 high. Resolved:swipervitereact-routerpostcssrollupflattedjs-yamlminimatchbrace-expansionpicomatchajvyaml@babel/coreRemaining (unfixable by upgrade):
react-routerGHSA-qwww-vcr4-c8h2 (high) affects 7.12.0–8.2.0 with no forward fix published;npm audit fix --forcewould downgrade to 7.11.0, which reintroduces the 13 advisories above. The advisory is scoped to React Router's RSC mode, which this SPA does not use, so we stay on 7.18.2.Skipped packages
@fullcalendar/*@fullcalendar/daygrid,timegrid,list, andinteractionhave no stable 7.x release (prerelease only). Moving to v7 means dropping those packages and rewritingsrc/pages/Calendar.tsx's plugin wiring — out of scope for a dependency bump. Upgraded to 6.1.21 instead.eslint-plugin-react-hooksreact-hooks/purity, set-state-in-effect) that turn 4 pre-existing app-code patterns into lint errors (Date.now()during render inCalendar.tsx; syncsetStatein effects inThemeContext.tsx,AppSidebar.tsx,Calendar.tsx). Fixing those is an app-code refactor, and silencing the rules would defeat the upgrade. Left at 5.x (resolves to 5.2.0).typescripttypescript-eslint@8refuses to run against TS 7.0 (typescript-eslint#10940), breakingnpm run lint. Upgraded to 6.0.3, the newest version in its supported range.vite@react-jvectormap/coreunder rolldown (see Summary). Upgraded to 7.3.6, which still clears all four vite advisories.@vitejs/plugin-react@6requiresvite ^8, so it is capped at 5.2.0 to match.Source impact
Actively imported in
src/:react,react-dom,react-router,apexcharts+react-apexcharts(5 chart components),@fullcalendar/*(Calendar.tsx),react-dropzone(DropZone.tsx),react-helmet-async(PageMeta.tsx),tailwind-merge,@react-jvectormap/*,flatpickr,react-dnd.swiperis not imported by any TS/TSX source — only its.swiper-button-*classes are styled insrc/index.css— so the 11 → 14 jump carries no API risk here while clearing the critical advisory.Dev-only (build/lint toolchain, no runtime impact):
vite,@vitejs/plugin-react,vite-plugin-svgr,typescript,typescript-eslint,eslint,@eslint/js,eslint-plugin-react-refresh,globals,postcss,tailwindcss,@tailwindcss/postcss,@types/*.Tailwind v4 config lives in
src/index.css(notailwind.config.js); the 4.0.8 → 4.3.3 bump required no config change and the CSS bundle still builds (116.7 kB → verified in the walkthrough below).Validation
Run after every batch, all green:
npm run build(tsc -b && vite build)npm run lintmain:react-refresh/only-export-componentsinSidebarContext.tsx,ThemeContext.tsx)npx tsc --noEmitnpm testtestscript exists in this repo — nothing to run, not a failureRuntime verification (not just a green build) was done on the upgraded app in dev and production preview: all 6 routes render with zero console errors — dashboard charts/map/table, calendar add-event modal, both chart pages, form controls (select, checkbox, radio, flatpickr, react-dropzone upload), tables, dark mode, and sidebar collapse.
Video demo
Full walkthrough recording and screenshots are in the verification comment on this PR: https://app.devin.ai/attachments/62b8c5ac-1a41-48e0-a99a-65c3633e650f/rec-a1bb4821-e2c1-453d-b5b2-3c3edd2e668c-edited.mp4
Link to Devin session: https://app.devin.ai/sessions/6490bc02b16f4e7b91cd64a87fb61852
Requested by: @dr-phil
Devin Review