Skip to content

chore(deps): October monthly upgrade — Node 22, React 19, Router 8, Vite 8, Tailwind 4, Vitest 5, ESLint 10 - #37

Merged
brianfunk merged 3 commits into
devfrom
deps/monthly-2026-10
Oct 2, 2026
Merged

brianfunk merged 3 commits into
devfrom
deps/monthly-2026-10

Conversation

@brianfunk

Copy link
Copy Markdown
Contributor

Summary

Takes Dependabot's first monthly batch (#36, 21 updates) and makes it build. Supersedes #36.

Why #36 failed

npm ci could not resolve TypeScript 7 against typescript-eslint 8 (peer range <6.1). Behind that: Vitest 5, @netlify/functions 6 and React Router 8 all require Node 22, and Tailwind 4 / React Router 8 / lucide 1.x have breaking changes.

What changed

  • Node 22 toolchain: .nvmrc, package.json#engines, netlify.toml NODE_VERSION, CI matrix, hygiene workflow. The published cli-package keeps engines.node >= 20 and its MCP binary was verified.
  • TypeScript pinned to 5.9 until typescript-eslint supports 6+. AGENTS.md records this so the next monthly PR doesn't trip on it.
  • React Router 8: react-router-dom removed from deps and all imports; BrowserRouter, Link, Routes, hooks come from react-router.
  • Tailwind 4: @tailwindcss/postcss, @import 'tailwindcss' in src/index.css, tailwind.config.js and autoprefixer removed. A base-layer shim keeps the v3 default border color so bare border utilities don't turn currentColor.
  • lucide-react 1.x removed brand icons; Footer's GitHub icon is now FolderGit2 (same as Header).
  • eslint-plugin-react-hooks 7 (React Compiler rules): Header's mobile menu now closes on navigation via derived state rather than a setState in an effect; SearchPage's SortButton and Pagination are render helpers instead of components defined inside render.
  • React 19, Vite 8, Vitest 5, ESLint 10, @eslint/js 10, globals 17, zod 4 (both manifests), @types/node 26, @netlify/functions 6: no code changes needed.
  • README, AGENTS.md, CHANGELOG (Unreleased) updated.

Not included

Visual review of Tailwind 4's palette changes (slate/blue now oklch; subtly different hues). Build output is correct; worth a glance on the Netlify deploy preview.

Test plan

  • lint (0 errors), typecheck, 54/54 tests, build — under Node 22.23
  • npm audit: 0 vulnerabilities
  • cli-package builds with zod 4; stdio MCP handshake + tools/call OK
  • netlify dev --offline: /, /api/decode, POST /mcp all 200
  • CI on this PR (pull_request trigger)

dependabot Bot and others added 2 commits October 2, 2026 05:11
… 21 updates

Bumps the monthly-updates group with 21 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `0.344.0` | `1.48.0` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) | `18.3.1` | `19.3.0` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `18.3.31` | `19.3.0` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `18.3.1` | `19.3.0` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `18.3.7` | `19.3.0` |
| [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) | `7.18.4` | `8.4.0` |
| [zod](https://github.com/colinhacks/zod) | `3.25.76` | `4.6.5` |
| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.5` | `10.0.1` |
| [@netlify/functions](https://github.com/netlify/primitives/tree/HEAD/packages/functions/prod) | `2.8.2` | `6.0.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.19.1` | `26.6.3` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `18.3.31` | `19.3.0` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `18.3.7` | `19.3.0` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `4.7.0` | `6.1.1` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.11` | `5.0.2` |
| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.11` | `5.0.2` |
| [eslint](https://github.com/eslint/eslint) | `9.39.5` | `10.11.0` |
| [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) | `5.2.0` | `7.1.1` |
| [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | `0.4.26` | `0.5.7` |
| [globals](https://github.com/sindresorhus/globals) | `15.15.0` | `17.12.0` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.3.3` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `7.0.2` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `7.3.6` | `8.3.1` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.11` | `5.0.2` |

Bumps the monthly-updates group with 1 update in the /cli-package directory: [zod](https://github.com/colinhacks/zod).


Updates `lucide-react` from 0.344.0 to 1.48.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.48.0/packages/lucide-react)

Updates `react` from 18.3.1 to 19.3.0
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.0/packages/react)

Updates `@types/react` from 18.3.31 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 18.3.1 to 19.3.0
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.0/packages/react-dom)

Updates `@types/react-dom` from 18.3.7 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `react-router` from 7.18.4 to 8.4.0
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@8.4.0/packages/react-router)

Updates `zod` from 3.25.76 to 4.6.5
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v3.25.76...v4.6.5)

Updates `@eslint/js` from 9.39.5 to 10.0.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js)

Updates `@netlify/functions` from 2.8.2 to 6.0.0
- [Release notes](https://github.com/netlify/primitives/releases)
- [Changelog](https://github.com/netlify/primitives/blob/main/packages/functions/prod/CHANGELOG.md)
- [Commits](https://github.com/netlify/primitives/commits/otel-v6.0.0/packages/functions/prod)

Updates `@types/node` from 24.19.1 to 26.6.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/react` from 18.3.31 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@types/react-dom` from 18.3.7 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `@vitejs/plugin-react` from 4.7.0 to 6.1.1
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.1.1/packages/plugin-react)

Updates `@vitest/coverage-v8` from 4.1.11 to 5.0.2
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.2/packages/coverage-v8)

Updates `@vitest/ui` from 4.1.11 to 5.0.2
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.2/packages/ui)

Updates `eslint` from 9.39.5 to 10.11.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.5...v10.11.0)

Updates `eslint-plugin-react-hooks` from 5.2.0 to 7.1.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/react/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/eslint-plugin-react-hooks@7.1.1/packages/eslint-plugin-react-hooks)

Updates `eslint-plugin-react-refresh` from 0.4.26 to 0.5.7
- [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases)
- [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md)
- [Commits](ArnaudBarre/eslint-plugin-react-refresh@v0.4.26...v0.5.7)

Updates `globals` from 15.15.0 to 17.12.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](sindresorhus/globals@v15.15.0...v17.12.0)

Updates `tailwindcss` from 3.4.19 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss)

Updates `typescript` from 5.9.3 to 7.0.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](microsoft/TypeScript@v5.9.3...v7.0.2)

Updates `vite` from 7.3.6 to 8.3.1
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.3.1/packages/vite)

Updates `vitest` from 4.1.11 to 5.0.2
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.2/packages/vitest)

Updates `zod` from 3.25.76 to 4.6.5
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v3.25.76...v4.6.5)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 1.48.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: react
  dependency-version: 19.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@types/react"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: react-dom
  dependency-version: 19.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@types/react-dom"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: react-router
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: zod
  dependency-version: 4.6.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@netlify/functions"
  dependency-version: 6.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@types/node"
  dependency-version: 26.6.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@types/react"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@types/react-dom"
  dependency-version: 19.3.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 6.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 5.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: "@vitest/ui"
  dependency-version: 5.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: eslint
  dependency-version: 10.11.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: eslint-plugin-react-hooks
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: eslint-plugin-react-refresh
  dependency-version: 0.5.7
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: monthly-updates
- dependency-name: globals
  dependency-version: 17.12.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: tailwindcss
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: typescript
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: vite
  dependency-version: 8.3.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: vitest
  dependency-version: 5.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: monthly-updates
- dependency-name: zod
  dependency-version: 4.6.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: monthly-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
…r 8, Vite 8, Tailwind 4, Vitest 5, ESLint 10

Take the first monthly Dependabot batch (21 updates) and make it build:
- Node 22 toolchain: .nvmrc, package.json engines, netlify.toml
  NODE_VERSION, CI and hygiene workflows. cli-package keeps engines >=20.
- TypeScript pinned to 5.9: typescript-eslint 8 supports <6.1 only.
- React Router 8: react-router-dom removed; import from react-router.
- Tailwind 4: @tailwindcss/postcss, CSS-first config in src/index.css,
  tailwind.config.js and autoprefixer removed, v3 border-color default
  preserved via a base-layer shim.
- lucide-react 1.x dropped brand icons; Footer uses FolderGit2.
- eslint-plugin-react-hooks 7: Header menu closes on navigation via
  derived state instead of a setState effect; SearchPage sort buttons and
  pagination are render helpers instead of components defined in render.
- Docs (README, AGENTS.md, CHANGELOG) updated for the new stack.

npm audit: 0 vulnerabilities. 54 tests pass. netlify dev smoke of
/api/decode, /mcp and / verified.
@brianfunk
brianfunk merged commit 6350181 into dev Oct 2, 2026
1 check passed
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