Skip to content

chore: upgrade console to React Router 7.14.0 and Vite 8#365

Merged
turisanapo merged 4 commits into
mainfrom
claude-issue-338-20260407-0418
Apr 7, 2026
Merged

chore: upgrade console to React Router 7.14.0 and Vite 8#365
turisanapo merged 4 commits into
mainfrom
claude-issue-338-20260407-0418

Conversation

@heiwen
Copy link
Copy Markdown
Contributor

@heiwen heiwen commented Apr 7, 2026

Closes #338

  • Bump react-router and @react-router/* from ^7.12.0 to ^7.14.0 in catalog
  • Upgrade vite from ^7.3.1 to ^8.0.3 (Rolldown-powered)
  • Bump vite-plugin-babel from ^1.4.1 to ^1.6.0 for Vite 8 compat
  • Replace vite-tsconfig-paths plugin with Vite 8 built-in resolve.tsconfigPaths
  • experimental.bundledDev intentionally omitted for now(blocked upstream #14947)
  • instead optimize all dependencies on first start

Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated development toolchain packages (Vite and related plugins) to newer stable versions.
    • Removed obsolete dev-only plugins and simplified dev config to use built-in path resolution.
    • Enabled devtools JSON handling by default.
    • Added dependency pre-bundling/optimization tweaks for faster local dev and build performance.
    • Upgraded React Router packages across the project.

github-actions Bot and others added 2 commits April 7, 2026 04:20
- Bump react-router and @react-router/* from ^7.12.0 to ^7.14.0 in catalog
- Upgrade vite from ^7.3.1 to ^8.0.3 (Rolldown-powered)
- Bump vite-plugin-babel from ^1.4.1 to ^1.6.0 for Vite 8 compat
- Replace vite-tsconfig-paths plugin with Vite 8 built-in resolve.tsconfigPaths
- experimental.bundledDev intentionally omitted (blocked by upstream #14947)

Closes #338

Co-authored-by: Heinrich Wendel <heiwen@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 7, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9d495d9d-efb5-44ff-aff3-84f769707d23

📥 Commits

Reviewing files that changed from the base of the PR and between 7c56418 and ef6e81d.

📒 Files selected for processing (1)
  • apps/console/vite.config.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/console/vite.config.ts

📝 Walkthrough

Walkthrough

Upgrade React Router workspace packages to 7.14.0, bump Vite and related devDependencies in apps/console, remove vite-tsconfig-paths and vite-plugin-devtools-json, and adjust apps/console/vite.config.ts to use built-in tsconfig path resolution, enable devtools JSON, and add optimizeDeps entries/includes.

Changes

Cohort / File(s) Summary
Workspace React Router
package.json
Bumped React Router family packages (react-router, @react-router/dev, @react-router/fs-routes, @react-router/node, @react-router/serve) from ^7.12.0^7.14.0.
Console app deps
apps/console/package.json
Upgraded vite to ^8.0.3, vite-plugin-babel to ^1.6.0, @tailwindcss/vite to ^4.2.2; removed vite-tsconfig-paths and vite-plugin-devtools-json devDependencies.
Console Vite config
apps/console/vite.config.ts
Replaced plugin-based tsconfig path plugin with resolve.tsconfigPaths: true; removed conditional devtoolsJson() plugin and set server.devtoolsJsonFile: true; added optimizeDeps.entries and optimizeDeps.include for pre-bundling (includes react/compiler-runtime).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • turisanapo

Poem

🐰 I nibble lines of config light,
Vite climbs up to eight tonight,
Router bumps, paths now built inside,
Devtools JSON by my side,
A hop, a patch — the console's bright!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Linked Issues check ❓ Inconclusive The PR fulfills core upgrade requirements [#338]: React Router packages updated to 7.14.0, Vite upgraded to 8.0.3, react-tsconfig-paths replaced with built-in resolve.tsconfigPaths, and vite-plugin-devtools-json replaced with server.devtoolsJsonFile. However, experimental.bundledDev evaluation and React Compiler documentation are incomplete or missing. Document experimental.bundledDev testing results and React Compiler compatibility findings, or clarify if deferral/blocking is intended per issue acceptance criteria.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change—upgrading console to React Router 7.14.0 and Vite 8—and directly corresponds to the primary objectives.
Out of Scope Changes check ✅ Passed All changes align with issue #338 scope: dependency upgrades (React Router, Vite, Tailwind), vite.config.ts optimizations for Vite 8, and removal of deprecated plugins. No unrelated modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude-issue-338-20260407-0418

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@heiwen heiwen changed the title upgrade console to React Router 7.14.0 and Vite 8 chore: upgrade console to React Router 7.14.0 and Vite 8 Apr 7, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 64a969a073

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/console/package.json
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/console/package.json`:
- Around line 66-68: The package.json currently lists "vite": "^8.0.3" alongside
"vite-plugin-devtools-json": "^1.0.0", but that plugin's peerDeps only support
Vite ^5|^6|^7 and will cause peer dependency warnings; fix by either downgrading
"vite" to a V7-compatible version (change "vite" to "^7.x" in package.json) or
remove "vite-plugin-devtools-json" from dependencies if it's non-critical
(delete the "vite-plugin-devtools-json" entry and any imports/usages), then run
npm/yarn install and verify builds; also run the build/test pipeline to validate
"vite-plugin-babel" compatibility and revert if issues arise.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8e572280-edc6-4b81-b798-34793e739ffb

📥 Commits

Reviewing files that changed from the base of the PR and between b0ff924 and 64a969a.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • apps/console/package.json
  • apps/console/vite.config.ts
  • package.json

Comment thread apps/console/package.json Outdated
@heiwen
Copy link
Copy Markdown
Contributor Author

heiwen commented Apr 7, 2026

@claude please have a look at the review comments

@hebo-agent
Copy link
Copy Markdown

hebo-agent Bot commented Apr 7, 2026

Claude finished @heiwen's task in 1m 2s —— View job


Review of PR comments

  • Read review comments from CodeRabbit and Codex
  • Read relevant files and verify findings
  • Provide analysis and recommendations

Both CodeRabbit and Codex flagged the vite-plugin-devtools-json peer dependency incompatibility with Vite 8 — this is a valid finding. However, they missed a more impactful issue. Here's my full analysis from the lockfile:

Plugin Vite 8 compatibility matrix

Plugin peerDeps Vite 8 support Nested Vite 7 copy?
@react-router/dev@7.14.0 ^5 || ^6 || ^7 || ^8 ✅ Yes No
vite-plugin-babel@1.6.0 ^2.7 || … || ^7 || ^8 ✅ Yes No
@tailwindcss/vite@4.2.1 ^5.2 || ^6 || ^7 No Yes (7.3.1)
vite-plugin-devtools-json@1.0.0 ^5 || ^6 || ^7 No Yes (7.3.1)
vite-node@3.2.4 (transitive) ^5 || ^6 || ^7 No Yes (7.3.1)

Assessment

  1. @tailwindcss/vite is the bigger concern — it's used in both dev and production builds (vite.config.ts:36). The lockfile shows bun resolved a separate vite@7.3.1 under @tailwindcss/vite/vite. This means the Tailwind plugin loads against Vite 7 internals while the app runs on Vite 8. In practice, Tailwind CSS v4's Vite plugin mostly uses standard plugin hooks, so it may work fine — but it's officially unsupported and could break with any patch release.

  2. vite-plugin-devtools-json — lower risk since it's only loaded in dev mode (vite.config.ts:45). Same dual-Vite-version issue applies, but the blast radius is limited to local development. This plugin also has a narrow scope (serves /.well-known/appspecific/dev.chrome.devtools.json).

  3. vite-node (transitive via @react-router/dev) — also resolves its own Vite 7.3.1 copy. Used for SSR module loading during development. This is inherent to react-router's dev server and harder to work around.

Recommendations

Option A — Keep Vite 8, accept the risk (pragmatic)

  • The dual-version issue is a bun hoisting artifact; the plugins still receive the host Vite instance at runtime through the plugin API. As long as the plugin hook signatures haven't changed (they haven't between 7→8 for the standard hooks these plugins use), this works in practice.
  • @tailwindcss/vite v4.2.2+ or v4.3 will very likely add ^8 to peerDeps given Vite 8 shipped recently.
  • Add a comment in package.json or the PR description noting the pending upstream support.

Option B — Defer Vite 8 until @tailwindcss/vite catches up

  • Downgrade vite back to ^7.3.1 and wait for Tailwind CSS to publish Vite 8 support.
  • This is the conservative choice if you want zero peer dep warnings.

For vite-plugin-devtools-json specifically: Since Vite 8 has built-in support for .well-known devtools metadata via the devtoolsJsonFile config option, you could remove this plugin entirely and use the native Vite 8 feature — which would also eliminate one of the dual-version copies.


@heiwen
Copy link
Copy Markdown
Contributor Author

heiwen commented Apr 7, 2026

@claude do these packages already have upstream issues to upgrade to vite 8?

@hebo-agent
Copy link
Copy Markdown

hebo-agent Bot commented Apr 7, 2026

Claude finished @heiwen's task in 1m 34s —— View job


  • Research upstream Vite 8 support issues for @tailwindcss/vite
  • Research upstream Vite 8 support issues for vite-plugin-devtools-json
  • Research upstream Vite 8 support issues for vite-node (vitest)
  • Summarize findings

Upstream Vite 8 support status

Package Issue PR Status Notes
@tailwindcss/vite #19789 (closed) #19790 (merged Mar 12) Fixed in v4.2.2 @tailwindcss/vite@4.2.2 already declares "vite": "^5.2.0 || ^6 || ^7 || ^8". Upgrading to ^4.2.2 in this PR would resolve the peer dep warning.
vite-plugin-devtools-json #25 (open) #27 (open since Mar 13) PR pending review The fix is trivial (just a peerDeps bump) but hasn't been merged/released yet. As noted in the earlier review, Vite 8 has built-in support for this via the devtoolsJsonFile config option, so the plugin could be removed entirely.
vite-node (transitive via @react-router/dev) No dedicated issue found ℹ️ No peerDeps on vite vite-node@3.2.x (used by @react-router/dev@7.14.0) doesn't declare vite as a peerDependency — it's a direct dependency. The dual-copy in the lockfile is a bun resolution artifact, not a true incompatibility. @react-router/dev itself already supports "vite": "^5 || ^6 || ^7 || ^8".

Recommendation

The only actionable item is bumping @tailwindcss/vite to ^4.2.2 (already released) — that would eliminate the main peer dep concern. For vite-plugin-devtools-json, you can either wait for PR #27 to land, or drop the plugin in favor of Vite 8's native server.devtoolsJsonFile option.


View job

@heiwen
Copy link
Copy Markdown
Contributor Author

heiwen commented Apr 7, 2026

@claude then bump tailwindcss/vite, remove vite-plugin-devtools-json in favor of devtoolsJsonFile and update the bun lockfile

@hebo-agent
Copy link
Copy Markdown

hebo-agent Bot commented Apr 7, 2026

Claude finished @heiwen's task in 1m 32s —— View job


  • Bump @tailwindcss/vite from ^4.1.18 to ^4.2.2 (declares vite: ^5.2.0 || ^6 || ^7 || ^8)
  • Remove vite-plugin-devtools-json and use Vite 8 native server.devtoolsJsonFile: true
  • Update bun lockfile
  • Push changes

All three items addressed in commit 7c56418:

  • @tailwindcss/vite bumped to ^4.2.2 — lockfile now resolves 4.2.2 which properly declares Vite 8 as a supported peer dep
  • vite-plugin-devtools-json removed from package.json and vite.config.ts; replaced with Vite 8's built-in server.devtoolsJsonFile: true
  • Lockfile updated — no more nested vite@7.3.1 copies for tailwindcss or devtools-json

…-json with native Vite 8

- Bump @tailwindcss/vite from ^4.1.18 to ^4.2.2 (adds Vite 8 peerDep support)
- Remove vite-plugin-devtools-json in favor of Vite 8 built-in server.devtoolsJsonFile
- Update bun lockfile

Co-authored-by: Heinrich Wendel <heiwen@users.noreply.github.com>
@heiwen
Copy link
Copy Markdown
Contributor Author

heiwen commented Apr 7, 2026

@claude should we keep the ...(mode === "development" guard?

@hebo-agent
Copy link
Copy Markdown

hebo-agent Bot commented Apr 7, 2026

Claude finished @heiwen's task in 28s —— View job


  • Read current vite.config.ts to understand the mode === "development" guard
  • Analyze whether the guard is still needed
  • Provide recommendation

No, you can drop the guard. It's no longer needed.

The ...(mode === "development" ? [devtoolsJson()] : []) guard existed to avoid loading vite-plugin-devtools-json in production builds. Now that the plugin is removed and replaced with Vite 8's native server.devtoolsJsonFile: true, the guard is already gone — and it doesn't need to come back because:

  1. server.* options are inherently dev-only — Vite's server config block only applies to the dev server (vite dev). It has no effect during vite build, so there's nothing to guard.
  2. mode is no longer referenced — after removing the guard, nothing else in the config uses the mode parameter. You could simplify the signature from defineConfig(({ mode }) => { ... }) to just defineConfig(() => { ... }) if you want to clean it up, but it's harmless either way since destructuring an unused field is a no-op.

The current config on this branch already reflects the correct state — no action needed.


View job

@heiwen
Copy link
Copy Markdown
Contributor Author

heiwen commented Apr 7, 2026

@claude cleanup the mode destructuring then

@hebo-agent
Copy link
Copy Markdown

hebo-agent Bot commented Apr 7, 2026

Claude finished @heiwen's task in 26s —— View job


  • Remove unused mode destructuring from vite.config.ts
  • Commit and push

Removed the unused ({ mode }) destructuring — simplified to () => in defineConfig since nothing references mode after the vite-plugin-devtools-json removal.

Co-authored-by: Heinrich Wendel <heiwen@users.noreply.github.com>
@heiwen heiwen requested a review from turisanapo April 7, 2026 06:22
@turisanapo turisanapo merged commit a90f2d1 into main Apr 7, 2026
2 checks passed
@turisanapo turisanapo deleted the claude-issue-338-20260407-0418 branch April 7, 2026 06:35
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.

Upgrade apps/console to React Router 7.14.0 and Vite 8, and evaluate experimental.bundledDev

2 participants