Skip to content

fix: migrate desktop routing to React Router 8.3.0 - #10971

Merged
jbg merged 2 commits into
mainfrom
jbg/migrate-react-router-8
Aug 5, 2026
Merged

fix: migrate desktop routing to React Router 8.3.0#10971
jbg merged 2 commits into
mainfrom
jbg/migrate-react-router-8

Conversation

@jbg

@jbg jbg commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • replace the removed react-router-dom package with a direct react-router dependency and update all 18 desktop source/test references and router mocks
  • raise the React and ReactDOM baseline, including the workspace overrides, from 19.2.4 to 19.2.8
  • prepare imports on React Router 7.18.2, then upgrade the direct dependency to React Router 8.3.0 in a separate commit
  • remove @types/react-router-dom and the now-unreferenced legacy @types/react-router lockfile entries

Scope

Goose Desktop remains on its existing declarative HashRouter/Routes/Route architecture. This does not change route hierarchy or navigation semantics, and it does not add Data Router, Framework Mode, RSC APIs, future flags, RouterProvider, or HydratedRouter.

React Router 8 removes react-router-dom, so the declarative routing APIs Goose already uses now come directly from react-router. React and ReactDOM move to 19.2.8 to satisfy React Router 8.3.0's >=19.2.7 peer requirement; Goose's Node ^24.10.0 target already satisfies the new >=22.22.0 engine requirement.

Security applicability

Repository inspection found no use of the unstable React Router RSC APIs affected by GHSA-qwww-vcr4-c8h2, so the vulnerable path was not reachable in Goose. Moving to 8.3.0 nevertheless removes the version-based advisory from the shipped desktop dependency graph.

Addresses #10964.

Verification

  • pre-v8 checkpoint on direct react-router@7.18.2: pnpm run typecheck passed and pnpm run test:run passed (64 files, 602 tests)
  • pnpm install --frozen-lockfile --lockfile-only --ignore-scripts from ui: passed
  • pnpm --filter @aaif/goose-sdk run build: passed
  • pnpm run lint:check from ui/desktop: passed, including TypeScript, ESLint, and i18n validation
  • pnpm run test:run from ui/desktop: passed (64 files, 602 tests)
  • pnpm --filter goose-app list react react-dom react-router --depth 1: resolved React 19.2.8, ReactDOM 19.2.8, and React Router 8.3.0
  • tracked UI/lockfile searches: no react-router-dom, @types/react-router-dom, legacy @types/react-router, or unstable RSC API occurrences remain
  • pnpm audit --prod: GHSA-qwww-vcr4-c8h2 is absent and there are no react-router findings; the audit is not otherwise clean and still reports 44 unrelated findings (11 high, 31 moderate, 2 low)
  • pnpm run package: passed, including the Vite production renderer bundle and Electron Forge arm64 macOS package, validating the ESM-only production build path
  • packaged GUI smoke attempt: blocked before renderer creation by the unrelated missing packaged Goose binary; startup diagnostics report neither Contents/Resources/bin/goose nor Contents/Resources/goose exists, so the route matrix could not be exercised in this environment
  • cargo fmt --check: passed
  • git diff --check: passed

The lockfile's large first-commit churn is the expected React 19.2.4 to 19.2.8 peer-context rewrite. The 8.3.0 commit is limited to React Router and its own cookie dependency change.

@jbg
jbg added this pull request to the merge queue Aug 5, 2026
Merged via the queue into main with commit 681e992 Aug 5, 2026
23 checks passed
@jbg
jbg deleted the jbg/migrate-react-router-8 branch August 5, 2026 21:40
lifeizhou-ap added a commit that referenced this pull request Aug 6, 2026
* main: (32 commits)
  fix: keep turn-context in place for OpenAI Responses-stack models so prompt caching works (#10993)
  fix(developer): byte-bound the shell truncation preview (#10992)
  fix(openrouter): stop silently ignoring thinking effort off (#10991)
  fix: dispatch edited queued messages (#10933)
  fix: contain recipe template paths (#10930)
  fix: make shell approval titles faithful (#10986)
  fix: block MCP app form submissions (#10985)
  fix: migrate desktop routing to React Router 8.3.0 (#10971)
  fix: sanitize Bedrock tool errors (#10934)
  fix implicit OAuth during model discovery (#10929)
  fix: update React Router to 7.18.2 (#10967)
  test: early-exit code-exec smoke tests once tool invocation is observed (#10954)
  fix: keep ACP session naming out of live conversations (#10963)
  Bind MCP apps to trusted ownership metadata (#10747)
  tests: add recursion_limit attribute to remaining ACP test files (#10559)
  Sanitize Unicode tags in MCP resources (#10746)
  fix(oauth): preserve RFC 9207 iss from MCP OAuth callback (#10678)
  feat(installer): detect Termux and select musl portable build (#10568)
  feat: add Celeris provider (#10714)
  fix: shell ACP providers on desktop (#10907)
  ...
lifeizhou-ap added a commit that referenced this pull request Aug 6, 2026
* main: (101 commits)
  fix: keep turn-context in place for OpenAI Responses-stack models so prompt caching works (#10993)
  fix(developer): byte-bound the shell truncation preview (#10992)
  fix(openrouter): stop silently ignoring thinking effort off (#10991)
  fix: dispatch edited queued messages (#10933)
  fix: contain recipe template paths (#10930)
  fix: make shell approval titles faithful (#10986)
  fix: block MCP app form submissions (#10985)
  fix: migrate desktop routing to React Router 8.3.0 (#10971)
  fix: sanitize Bedrock tool errors (#10934)
  fix implicit OAuth during model discovery (#10929)
  fix: update React Router to 7.18.2 (#10967)
  test: early-exit code-exec smoke tests once tool invocation is observed (#10954)
  fix: keep ACP session naming out of live conversations (#10963)
  Bind MCP apps to trusted ownership metadata (#10747)
  tests: add recursion_limit attribute to remaining ACP test files (#10559)
  Sanitize Unicode tags in MCP resources (#10746)
  fix(oauth): preserve RFC 9207 iss from MCP OAuth callback (#10678)
  feat(installer): detect Termux and select musl portable build (#10568)
  feat: add Celeris provider (#10714)
  fix: shell ACP providers on desktop (#10907)
  ...
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.

2 participants