Summary
Major toolchain modernization: the template now ships on Vite 8, TypeScript 6, and ESLint 10, with companion bumps across React, TanStack, and Tailwind. ESLint config moves to eslint-plugin-import-x (a maintained fork of eslint-plugin-import with ESLint 10 support), and the Fast Refresh rule is relaxed inside src/routes/** so TanStack Router's co-located Route exports stop tripping react-refresh/only-export-components.
Changelog
Features
- template: upgrade to Vite 8 (
vite@^8.0.10,@vitejs/plugin-react@^6.0.1) - template: upgrade to TypeScript 6 (
typescript@~6.0.2,typescript-eslint@^8.58.2) - template: upgrade to ESLint 10 (
eslint@^10.2.1,@eslint/js@^10.0.1,globals@^17.5.0) - template: bump TanStack —
react-query@^5.100.3,react-router@^1.168.24,router-plugin@^1.167.26,eslint-plugin-query@^5.100.3 - template: bump React to
19.2.5and Tailwind to4.2.4 - template: bump React ESLint plugins —
eslint-plugin-react-x@^4.2.3,eslint-plugin-react-dom@^4.2.3,eslint-plugin-react-hooks@^7.1.1,eslint-plugin-react-refresh@^0.5.2
Fixes
- template: disable
react-refresh/only-export-componentsforsrc/routes/**/*.tsxso TanStack Router's file-based routes don't fight Fast Refresh
Refactors
- template: replace
eslint-plugin-importwitheslint-plugin-import-xfor ESLint 10 compatibility (import/order→import-x/order,import/no-duplicates→import-x/no-duplicates) - template: drop
eslint-plugin-jsx-a11y(no ESLint 10 support upstream) - template: modernize
vite.config.tsto useimport.meta.dirnameinstead of__dirname - template: simplify
tsconfig.app.jsonandtsconfig.node.json— dropstrict,useDefineForClassFields,baseUrl, andnoUncheckedSideEffectImportsnow that they're TS 6 defaults; bumptarget/libto ES2023; rewritepathsas relative
Docs
- commands: add Step 4 "Fork revert checks" to
update-deps, trackingeslint-plugin-import-xso it can be reverted to upstream onceeslint-plugin-importships ESLint 10 support