Skip to content

Conversation

lachlancollins
Copy link
Member

@lachlancollins lachlancollins commented Sep 21, 2025

🎯 Changes

  • Move pnpm config into pnpm-workspace.yaml
  • Update workspace and dev deps
  • Update pnpm/node CI versions

✅ Checklist

  • I have followed the steps listed in the Contributing guide.
  • I have tested and linted this code locally.

Summary by CodeRabbit

  • Chores
    • Updated Node.js target to 24.8.0, standardized workspace settings, bumped package manager and refreshed dev tooling versions; cleaned up npm configuration.
  • Tests
    • Enabled automatic concurrency for ESLint across packages to speed up linting.
  • Examples
    • Refreshed build/tooling for React, Solid, Svelte, and Vue examples and integrations (Vite, Svelte stack updates).

Copy link
Contributor

coderabbitai bot commented Sep 21, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Repository-wide tooling updates: Node version bumped, .npmrc workspace flags removed, pnpm workspace options added/expanded, widespread devDependency bumps (vite, svelte, tooling), and many package.json scripts updated to run ESLint with --concurrency=auto. No runtime source code changes.

Changes

Cohort / File(s) Summary
Core config updates
\.npmrc, \.nvmrc, pnpm-workspace.yaml
Removed workspace linking prefs from .npmrc; updated Node version in .nvmrc to 24.8.0; added pnpm workspace options (cleanupUnusedCatalogs, linkWorkspacePackages, preferWorkspacePackages) and expanded workspace package globs (with Vue exclusions) in pnpm-workspace.yaml.
Repo tooling versions
package.json
Bumped pnpm toolchain entry and many devDependencies (eslint, vite → ^6.3.6, vitest, jsdom, nx, knip, tinyglobby, @tanstack/config, testing libs); added TypeScript aliases (typescript51–typescript57).
Example apps — React / Solid / Vue
examples/react/*/package.json, examples/solid/*/package.json, examples/vue/*/package.json
Updated devDependency vite from ^6.2.4^6.3.6 across React, Solid, and Vue examples.
Example apps — Svelte
examples/svelte/*/package.json
Updated Svelte-related devDependencies: @sveltejs/adapter-auto, @sveltejs/kit, svelte, svelte-check, and vite to newer versions (including vite^6.3.6).
Integrations
integrations/*-vite/package.json
Bumped vite to ^6.3.6 across integrations; svelte bumped where applicable.
Packages — ESLint concurrency flag
packages/*/package.json (many packages)
Changed scripts.test:eslint from eslint ./srceslint --concurrency=auto ./src across numerous packages (core, framework packages, devtools, codemods, persisters, etc.).
Packages — Svelte tooling
packages/svelte-query*.package.json
Bumped svelte and svelte-check devDependencies alongside the ESLint script change.
React package additions
packages/react-query/package.json
Added cpy-cli devDependency and updated test:eslint script to use --concurrency=auto.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as Developer
  participant Runner as npm/pnpm script
  participant ESLint as ESLint
  Note over Runner,ESLint: Before
  Dev->>Runner: run "test:eslint" (eslint ./src)
  Runner->>ESLint: eslint ./src (serial)
  ESLint-->>Runner: results
  Runner-->>Dev: report

  Note over Runner,ESLint #D6F5D6: After (changed)
  Dev->>Runner: run "test:eslint" (eslint --concurrency=auto ./src)
  Runner->>ESLint: eslint --concurrency=auto ./src (auto parallel)
  ESLint-->>Runner: aggregated results
  Runner-->>Dev: report
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • arnoud-dv

Poem

hop-hop, I change the tools with care,
nudge Node up high, and tidy the lair.
Vite hums a tune, ESLint hops in more lanes,
pnpm lays new paths across the plains.
a little rabbit cheers these tidy gains. 🐇✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "ci: update workspace config" is concise, follows a conventional commit-style scope, and accurately reflects the primary intent of the changeset (workspace and CI configuration updates such as moving pnpm config and updating pnpm/Node versions), so it clearly communicates the main change to reviewers scanning history.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f911e10 and 73631b8.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • package.json (3 hunks)
  • packages/eslint-plugin-query/package.json (2 hunks)
  • packages/react-query/package.json (2 hunks)

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

Copy link

nx-cloud bot commented Sep 21, 2025

View your CI Pipeline Execution ↗ for commit 73631b8

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 3m 55s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 1m 24s View ↗

☁️ Nx Cloud last updated this comment at 2025-09-21 13:25:28 UTC

Copy link

pkg-pr-new bot commented Sep 21, 2025

More templates

@tanstack/angular-query-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-experimental@9671

@tanstack/eslint-plugin-query

npm i https://pkg.pr.new/@tanstack/eslint-plugin-query@9671

@tanstack/query-async-storage-persister

npm i https://pkg.pr.new/@tanstack/query-async-storage-persister@9671

@tanstack/query-broadcast-client-experimental

npm i https://pkg.pr.new/@tanstack/query-broadcast-client-experimental@9671

@tanstack/query-core

npm i https://pkg.pr.new/@tanstack/query-core@9671

@tanstack/query-devtools

npm i https://pkg.pr.new/@tanstack/query-devtools@9671

@tanstack/query-persist-client-core

npm i https://pkg.pr.new/@tanstack/query-persist-client-core@9671

@tanstack/query-sync-storage-persister

npm i https://pkg.pr.new/@tanstack/query-sync-storage-persister@9671

@tanstack/react-query

npm i https://pkg.pr.new/@tanstack/react-query@9671

@tanstack/react-query-devtools

npm i https://pkg.pr.new/@tanstack/react-query-devtools@9671

@tanstack/react-query-next-experimental

npm i https://pkg.pr.new/@tanstack/react-query-next-experimental@9671

@tanstack/react-query-persist-client

npm i https://pkg.pr.new/@tanstack/react-query-persist-client@9671

@tanstack/solid-query

npm i https://pkg.pr.new/@tanstack/solid-query@9671

@tanstack/solid-query-devtools

npm i https://pkg.pr.new/@tanstack/solid-query-devtools@9671

@tanstack/solid-query-persist-client

npm i https://pkg.pr.new/@tanstack/solid-query-persist-client@9671

@tanstack/svelte-query

npm i https://pkg.pr.new/@tanstack/svelte-query@9671

@tanstack/svelte-query-devtools

npm i https://pkg.pr.new/@tanstack/svelte-query-devtools@9671

@tanstack/svelte-query-persist-client

npm i https://pkg.pr.new/@tanstack/svelte-query-persist-client@9671

@tanstack/vue-query

npm i https://pkg.pr.new/@tanstack/vue-query@9671

@tanstack/vue-query-devtools

npm i https://pkg.pr.new/@tanstack/vue-query-devtools@9671

commit: 73631b8

Copy link
Contributor

Sizes for commit 73631b8:

Branch Bundle Size
Main
This PR

Copy link

codecov bot commented Sep 21, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.38%. Comparing base (06e5550) to head (73631b8).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #9671   +/-   ##
=======================================
  Coverage   46.38%   46.38%           
=======================================
  Files         214      214           
  Lines        8488     8488           
  Branches     1930     1922    -8     
=======================================
  Hits         3937     3937           
  Misses       4108     4108           
  Partials      443      443           
Components Coverage Δ
@tanstack/angular-query-experimental 93.85% <ø> (ø)
@tanstack/eslint-plugin-query 83.24% <ø> (ø)
@tanstack/query-async-storage-persister 43.85% <ø> (ø)
@tanstack/query-broadcast-client-experimental 24.39% <ø> (ø)
@tanstack/query-codemods 0.00% <ø> (ø)
@tanstack/query-core 97.48% <ø> (ø)
@tanstack/query-devtools 3.48% <ø> (ø)
@tanstack/query-persist-client-core 79.60% <ø> (ø)
@tanstack/query-sync-storage-persister 84.61% <ø> (ø)
@tanstack/query-test-utils 77.77% <ø> (ø)
@tanstack/react-query 96.00% <ø> (ø)
@tanstack/react-query-devtools 10.00% <ø> (ø)
@tanstack/react-query-next-experimental ∅ <ø> (∅)
@tanstack/react-query-persist-client 100.00% <ø> (ø)
@tanstack/solid-query 78.06% <ø> (ø)
@tanstack/solid-query-devtools ∅ <ø> (∅)
@tanstack/solid-query-persist-client 100.00% <ø> (ø)
@tanstack/svelte-query 87.58% <ø> (ø)
@tanstack/svelte-query-devtools ∅ <ø> (∅)
@tanstack/svelte-query-persist-client 100.00% <ø> (ø)
@tanstack/vue-query 71.10% <ø> (ø)
@tanstack/vue-query-devtools ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
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: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
examples/react/eslint-legacy/package.json (1)

21-22: Fix TS types mismatch: React 19 with @types v18.

These examples use react/react-dom 19 but pin @types/react and @types/react-dom to 18.x, which can cause TS errors. Bump types to 19.x (or remove them if this package is JS‑only). (npmjs.com)

Apply this diff:

-    "@types/react": "^18.2.79",
-    "@types/react-dom": "^18.2.25",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
examples/react/basic/package.json (1)

21-22: Align TS types with React 19.

Bump @types/react and @types/react-dom to 19.x to match react/react-dom 19. (npmjs.com)

-    "@types/react": "^18.2.79",
-    "@types/react-dom": "^18.2.25",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
🧹 Nitpick comments (6)
examples/solid/default-query-function/package.json (1)

17-17: Vite 6 bump OK; Solid plugin check.

vite-plugin-solid 2.11.x indicates support for Vite 6; consider aligning to the latest 2.11.x patch when you next touch this example. (jsdelivr.com)

examples/vue/persister/package.json (1)

21-21: Vite bump looks good; align plugin-vue version for consistency.

Recommend aligning @vitejs/plugin-vue to the same version used elsewhere (e.g., ^5.2.4) to avoid lockfile churn across examples.

   "devDependencies": {
-    "@vitejs/plugin-vue": "^5.2.1",
+    "@vitejs/plugin-vue": "^5.2.4",
     "typescript": "5.8.3",
     "vite": "^6.3.6"
   }
packages/angular-query-persist-client/package.json (1)

21-21: ESLint concurrency flag applied consistently.

Good consistency with other packages. Consider enforcing failures on new warnings to keep signal high.

-    "test:eslint": "eslint --concurrency=auto ./src",
+    "test:eslint": "eslint --concurrency=auto --max-warnings=0 ./src",
examples/svelte/optimistic-updates/package.json (1)

15-22: Same Svelte stack bump: add a quick lint/check script?

Optional: add a convenience script to run svelte-check to keep examples healthy.

   "devDependencies": {
@@
   },
+  "scripts": {
+    "check": "svelte-check --tsconfig ./tsconfig.json"
+  }
packages/query-persist-client-core/package.json (1)

20-20: ESLint concurrency: good; consider reproducibility.

Consider pinning ESLint major in the root/tooling to avoid flag drift across packages.

packages/eslint-plugin-query/package.json (1)

20-21: LGTM; local eslint ^9.15.0 satisfies the concurrency flag.
Optionally add “--cache” to speed up lint in CI.

-    "test:eslint": "eslint --concurrency=auto ./src",
+    "test:eslint": "eslint --concurrency=auto --cache ./src",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 06e5550 and f911e10.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (62)
  • .npmrc (0 hunks)
  • .nvmrc (1 hunks)
  • examples/react/algolia/package.json (1 hunks)
  • examples/react/basic-graphql-request/package.json (1 hunks)
  • examples/react/basic/package.json (1 hunks)
  • examples/react/chat/package.json (1 hunks)
  • examples/react/default-query-function/package.json (1 hunks)
  • examples/react/devtools-panel/package.json (1 hunks)
  • examples/react/eslint-legacy/package.json (1 hunks)
  • examples/react/offline/package.json (1 hunks)
  • examples/react/playground/package.json (1 hunks)
  • examples/react/react-router/package.json (1 hunks)
  • examples/react/rick-morty/package.json (1 hunks)
  • examples/react/shadow-dom/package.json (1 hunks)
  • examples/react/simple/package.json (1 hunks)
  • examples/react/star-wars/package.json (1 hunks)
  • examples/react/suspense/package.json (1 hunks)
  • examples/solid/basic-graphql-request/package.json (1 hunks)
  • examples/solid/basic/package.json (1 hunks)
  • examples/solid/default-query-function/package.json (1 hunks)
  • examples/solid/simple/package.json (1 hunks)
  • examples/svelte/auto-refetching/package.json (1 hunks)
  • examples/svelte/basic/package.json (1 hunks)
  • examples/svelte/load-more-infinite-scroll/package.json (1 hunks)
  • examples/svelte/optimistic-updates/package.json (1 hunks)
  • examples/svelte/playground/package.json (1 hunks)
  • examples/svelte/simple/package.json (1 hunks)
  • examples/svelte/ssr/package.json (1 hunks)
  • examples/svelte/star-wars/package.json (1 hunks)
  • examples/vue/basic/package.json (1 hunks)
  • examples/vue/dependent-queries/package.json (1 hunks)
  • examples/vue/persister/package.json (1 hunks)
  • examples/vue/simple/package.json (1 hunks)
  • integrations/react-vite/package.json (1 hunks)
  • integrations/solid-vite/package.json (1 hunks)
  • integrations/svelte-vite/package.json (1 hunks)
  • integrations/vue-vite/package.json (1 hunks)
  • package.json (3 hunks)
  • packages/angular-query-experimental/package.json (1 hunks)
  • packages/angular-query-persist-client/package.json (1 hunks)
  • packages/eslint-plugin-query/package.json (1 hunks)
  • packages/query-async-storage-persister/package.json (1 hunks)
  • packages/query-broadcast-client-experimental/package.json (1 hunks)
  • packages/query-codemods/package.json (1 hunks)
  • packages/query-core/package.json (1 hunks)
  • packages/query-devtools/package.json (1 hunks)
  • packages/query-persist-client-core/package.json (1 hunks)
  • packages/query-sync-storage-persister/package.json (1 hunks)
  • packages/query-test-utils/package.json (1 hunks)
  • packages/react-query-devtools/package.json (1 hunks)
  • packages/react-query-next-experimental/package.json (1 hunks)
  • packages/react-query-persist-client/package.json (1 hunks)
  • packages/react-query/package.json (1 hunks)
  • packages/solid-query-devtools/package.json (1 hunks)
  • packages/solid-query-persist-client/package.json (1 hunks)
  • packages/solid-query/package.json (1 hunks)
  • packages/svelte-query-devtools/package.json (2 hunks)
  • packages/svelte-query-persist-client/package.json (2 hunks)
  • packages/svelte-query/package.json (2 hunks)
  • packages/vue-query-devtools/package.json (2 hunks)
  • packages/vue-query/package.json (1 hunks)
  • pnpm-workspace.yaml (1 hunks)
💤 Files with no reviewable changes (1)
  • .npmrc
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-02T17:57:33.184Z
Learnt from: TkDodo
PR: TanStack/query#9612
File: packages/query-async-storage-persister/src/asyncThrottle.ts:0-0
Timestamp: 2025-09-02T17:57:33.184Z
Learning: When importing from tanstack/query-core in other TanStack Query packages like query-async-storage-persister, a workspace dependency "tanstack/query-core": "workspace:*" needs to be added to the package.json.

Applied to files:

  • integrations/solid-vite/package.json
  • package.json
  • packages/svelte-query-persist-client/package.json
  • examples/solid/simple/package.json
  • packages/svelte-query/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Test
🔇 Additional comments (57)
packages/solid-query-persist-client/package.json (1)

20-20: Same ESLint concurrency note as above.

Looks good; just ensure ESLint >= 9.34.0 in the workspace. (eslint.org)

examples/react/default-query-function/package.json (1)

19-19: Vite bump LGTM; align with CI Node (see Solid/simple note).

No issues spotted; rely on the earlier Node/Vite verification. (main.vite.dev)

examples/react/chat/package.json (1)

21-21: Vite bump is fine; note Tailwind Vite plugin peers if upgrading later.

@tailwindcss/vite currently peers vite as ^5.2 || ^6; your ^6.3.6 is compatible. This plugin breaks on Vite 7 until updated. (github.com)

If/when moving to Vite 7, ensure @tailwindcss/vite has a released version supporting it before upgrading CI/tooling.

packages/query-sync-storage-persister/package.json (1)

20-20: Same ESLint concurrency requirement as noted earlier.

OK to merge once ESLint ≥ 9.34.0 is ensured. (eslint.org)

examples/react/playground/package.json (1)

19-19: Vite bump LGTM; ensure CI Node ≥ 20.x (see earlier verification script).

Change is safe; just keep CI on supported Node versions. (main.vite.dev)

examples/react/shadow-dom/package.json (1)

21-21: Vite bump LGTM; mirrors other examples.

Nothing blocking; rely on the Node/Vite verification already provided. (main.vite.dev)

examples/solid/simple/package.json (1)

18-18: Confirm CI Node version and plugin compatibility for Vite 6.3.6 bump.
Vite ^6.3.6 is present in root and many examples/integrations/packages (examples/, integrations/, packages/*). No Node version pinned was found in .github/workflows or .nvmrc — ensure CI uses Node 20.x or 22.x (Node 18 reached EOL April 30, 2025). Verify @vitejs/plugin-react (^4.3.4), vite-plugin-solid (^2.11.6) and @tailwindcss/vite (^4.0.14) are compatible with Vite 6 before merging.

examples/react/eslint-legacy/package.json (1)

25-26: Vite 6.3 upgrade approved.

Plugin-react 4.3.4 added Vite 6 to its peer range; you’re on a compatible combo. (gitlab.donnees.incubateur.anct.gouv.fr)

examples/react/basic/package.json (1)

25-26: Vite 6.3 bump looks good with plugin-react 4.3.x.

No concerns on the Vite side. (gitlab.donnees.incubateur.anct.gouv.fr)

integrations/react-vite/package.json (1)

14-15: Bump LGTM; Vite as a dependency is fine for a template/integration.

This combo is compatible; no changes requested. (gitlab.donnees.incubateur.anct.gouv.fr)

examples/react/rick-morty/package.json (1)

25-26: Approve: Vite 6.3 + @vitejs/plugin-react 4.3.4 compatible; React 19 types present.
package.json lists @types/react ^19.0.1 and @types/react-dom ^19.0.2 — no ambient-type gaps expected.

.nvmrc (1)

1-1: Approve — Node 24.8.0 is safe.
Repo check: .nvmrc = 24.8.0; only package.json engines found is ./examples/solid/solid-start-streaming/package.json (engines.node = ">=18") — compatible; no Node pins in .github/workflows. Keep CI images and any package.json "engines" fields in sync.

examples/vue/basic/package.json (1)

18-18: Approve — Vite 6.3 bump OK; run repo-wide peer-dep check

Vite 6 targets Node 22+, so Node 24.8.0 in .nvmrc is fine. Sandbox execution failed; run the script below locally and paste its output.

#!/usr/bin/env bash
set -euo pipefail
command -v jq >/dev/null 2>&1 || { echo "jq required"; exit 2; }

# Print JSON objects (one per package.json that declares vite) with vite + common plugin versions
find . -type f -name package.json -print0 |
  xargs -0 -n1 -I{} jq -c '
    select((.devDependencies.vite // .dependencies.vite) != null)
    | {file: input_filename,
       name: (.name // ""),
       vite: (.devDependencies.vite // .dependencies.vite),
       plugin_react: ((.devDependencies["@vitejs/plugin-react"] // .dependencies["@vitejs/plugin-react"]) // ""),
       plugin_vue: ((.devDependencies["@vitejs/plugin-vue"] // .dependencies["@vitejs/plugin-vue"]) // ""),
       plugin_svelte: ((.devDependencies["@sveltejs/vite-plugin-svelte"] // .dependencies["@sveltejs/vite-plugin-svelte"]) // "")}
  ' {}
integrations/svelte-vite/package.json (1)

12-13: Approve Svelte 5 + Vite 6 pairing. Svelte v5.39.3, Vite v6.3.6, and @sveltejs/vite-plugin-svelte v5.1.1 are compatible with no red flags; monitor Vite 6 release notes and update plugin-svelte as needed.

integrations/solid-vite/package.json (1)

12-12: Vite 6 bump LGTM; confirm plugin compatibility.

vite-plugin-solid 2.11.x advertises support for Vite 3/4/5/6; your pinned ^2.11.6 should be fine. Consider bumping to the latest 2.11.x for fixes when convenient. (jsdelivr.com)

examples/react/basic-graphql-request/package.json (1)

20-20: Vite 6 upgrade looks safe with current plugins.

@vitejs/plugin-react 4.3.4 added Vite 6 to its peer range; no action needed. (gitlab.donnees.incubateur.anct.gouv.fr)

examples/react/algolia/package.json (1)

23-23: Consistent Vite 6 bump — OK.

Same note as other React examples: plugin-react v4.3.4 supports Vite 6. (gitlab.donnees.incubateur.anct.gouv.fr)

packages/query-core/package.json (1)

20-20: Enable ESLint multithreading — nice; ensure toolchain is ready.

Requires ESLint ≥ 9.34.0 in the workspace. If any package still pulls older ESLint, the flag will error. (eslint.org)

Reuse the script from the vue-query comment to verify ESLint versions. Additionally, ensure CI Node is compatible with the repo baseline for tooling.

packages/svelte-query-persist-client/package.json (1)

21-21: Svelte deps bump + ESLint concurrency: looks good.

  • svelte and svelte-check minor bumps are routine; no compatibility flags from this diff.
  • --concurrency=auto needs ESLint ≥ 9.34.0. (eslint.org)

Also applies to: 56-57

examples/vue/dependent-queries/package.json (1)

17-17: Vite 6 bump OK with plugin-vue ≥ 5.2.x.

Your @vitejs/plugin-vue is ^5.2.1, which aligns with Vite 6 peer range (older v4 didn’t). (stackoverflow.com)

packages/vue-query/package.json (1)

20-20: ESLint multithreading: verify workspace ESLint ≥ 9.34 (CI risk)

Found declared ESLint versions:

  • package.json (root): ^9.36.0 — satisfies ≥9.34.
  • packages/eslint-plugin-query/package.json: ^9.15.0 — below 9.34.

Action: update packages/eslint-plugin-query to ^9.34+ (or match root) OR confirm lockfile/CI resolves to an installed ESLint ≥9.34; otherwise --concurrency=auto can break CI.

examples/react/react-router/package.json (1)

28-28: Vite bump to ^6.3.6 looks good.

@vitejs/plugin-react 4.3.4 explicitly added Vite 6 to its peer range, so this combo is supported. (ver-prod-22.it.helsinki.fi)

examples/solid/basic-graphql-request/package.json (1)

19-19: Solid + Vite 6 compatibility confirmed.

vite-plugin-solid 2.11.x adds Vite 6 compatibility (and follow‑ups fixed Vite 6 env detection), so ^2.11.6 with Vite ^6.3.6 is OK. (classic.yarnpkg.com)

examples/solid/basic/package.json (1)

17-17: Vite bump aligns with vite-plugin-solid ≥2.11 compatibility.

No action needed. (classic.yarnpkg.com)

packages/query-test-utils/package.json (1)

30-30: Same ESLint concurrency note as above.

Requires ESLint ≥ 9.34.0; otherwise the flag isn’t recognized. (eslint.org)

examples/vue/simple/package.json (1)

18-18: Vite ^6.3.6 + @vitejs/plugin-vue ^5.2.1 are compatible.

Looks good. (gitlab.rubend.nl)

packages/react-query-persist-client/package.json (1)

20-20: ESLint concurrency flag added — ensure ESLint ≥ 9.34.0 in workspace.

Prevents CI failures if some packages still pin older ESLint. (eslint.org)

packages/solid-query-devtools/package.json (1)

20-20: Verify workspace ESLint is ≥ 9.34.0 (required for --concurrency)

The package script uses --concurrency (added in ESLint v9.34.0); ensure eslint declared in the workspace (devDependencies/dependencies/peerDependencies) is ≥ 9.34.0 to avoid CI/script failures. File: packages/solid-query-devtools/package.json — line 20: "test:eslint": "eslint --concurrency=auto ./src". Audit attempt returned no output — re-run the workspace audit or confirm versions manually.

packages/svelte-query-devtools/package.json (2)

21-21: ESLint concurrency switch looks good.

No functional impact; should speed up linting on CI agents with multiple cores.


52-54: Svelte and svelte-check bumps: check minimal tooling compatibility.

These versions should be compatible, but please ensure CI/node (now Node 24.x per PR) runs svelte-check without deprecation warnings.

examples/react/offline/package.json (1)

24-24: Vite 6.3.6 is fine; confirm plugin/react compatibility.

@vitejs/plugin-react@^4.3.4 should work with Vite 6. If the root lockfile holds older plugin versions elsewhere, align to avoid mixed majors.

examples/svelte/star-wars/package.json (2)

15-16: SvelteKit + adapter-auto bumps look reasonable.

Ensure the CI Node version (24.x) satisfies the engines required by @sveltejs/kit@^2.42.2 and adapter. No code changes needed.


20-25: Svelte/Vite toolchain bumps: sanity-check dev/build flows.

Given vite dev/build/preview scripts, just confirm local dev and SSR/adapter flows still work after the Kit upgrade.

packages/vue-query-devtools/package.json (2)

20-20: ESLint concurrency enabled — good.

Consistent with other packages; no behavioral changes to library output.


60-60: Vite 6.3.6 for build step: verify plugin-vue compatibility.

@vitejs/plugin-vue@^5.2.4 should be Vite 6–compatible; just confirm build stays deterministic across Node versions in CI.

packages/solid-query/package.json (1)

20-20: ESLint concurrency enabled — LGTM.

No runtime impact; just ensure ESLint version compatibility as noted elsewhere.

packages/react-query-next-experimental/package.json (1)

20-20: Enable ESLint concurrency — approved (root uses ESLint v9).
Root package.json lists "eslint": "^9.36.0" (packages/eslint-plugin-query devDep "^9.15.0", peer "^8.57.0 || ^9.0.0"); since root is v9+, --concurrency=auto is supported.

packages/react-query/package.json (1)

20-20: ESLint concurrency: root supports --concurrency=auto

Root package.json declares "eslint": "^9.36.0" (>= v9.34.0 — multithread --concurrency=auto added Aug 22, 2025). (eslint.org)

Note: packages/eslint-plugin-query lists "eslint": "^9.15.0" — ensure CI installs the workspace root or lockfile resolves to >=9.34.0.

examples/react/star-wars/package.json (1)

25-25: Vite bump: verified — @vitejs/plugin-react 4.3.x is compatible with Vite 6.3 and React 19. Changelog shows 4.3.4 added Vite 6 to peerDependencies and 4.3.x includes React 19/compiler support; no action required.

packages/query-broadcast-client-experimental/package.json (1)

20-20: ESLint: confirm --concurrency support & cap CI usage

packages/query-broadcast-client-experimental/package.json — test:eslint uses eslint --concurrency=auto ./src. Root package.json declares eslint ^9.36.0 (>=9.34.0 — supports --concurrency); packages/eslint-plugin-query/package.json declares ^9.15.0 (pre‑9.34 — does not). Action: bump packages/eslint-plugin-query to >=9.34.0 or ensure CI uses the workspace/root ESLint; otherwise cap concurrency (e.g. --concurrency=2) to avoid CPU thrash on CI.

examples/react/suspense/package.json (1)

21-21: Vite bump looks safe — run local smoke tests

Run dev server and build to confirm no plugin regressions with React 19. Automated sandbox check failed (pnpm errors: ENOTEMPTY; “--workspace-root may only be used inside a workspace”). From the repo root run:

pnpm install
pnpm -w -r --filter @tanstack/query-example-react-suspense dev -- --port 5173 & sleep 5; kill %1
pnpm -w -r --filter @tanstack/query-example-react-suspense build
examples/svelte/auto-refetching/package.json (1)

15-22: SvelteKit/Svelte/Vite: verify Node + peer alignment

SvelteKit 2.42.x requires Node >= 18.13; Svelte 5.x requires Node >= 18; Vite 6.x supports Node 18/20/22+ — Node 24.8.0 is within that range. Sandbox build failed (vite/nx not found), so in-repo verification couldn't complete.

  • Confirm CI Node (PR mentions 24.8.0) and check examples/svelte/auto-refetching/package.json for engines/peer deps.
  • Run locally/CI: node -v; pnpm install; pnpm -w -r --filter @tanstack/query-example-svelte-auto-refetching build; npx svelte-check.
packages/react-query-devtools/package.json (1)

20-21: ESLint concurrency flag added; this package doesn’t declare ESLint—confirm root ESLint is ≥9.
Covered by the verification script above.

examples/svelte/basic/package.json (1)

17-24: Svelte/Vite/SvelteKit version alignment looks good; verify consistency across all Svelte examples.
Same matrix check as noted for playground.

examples/svelte/simple/package.json (1)

17-21: Svelte + Vite bumps LGTM; confirm Vite 6.x everywhere under examples/svelte.
Prevents mixed major versions during local dev.

packages/angular-query-experimental/package.json (1)

32-33: ESLint concurrency enabled; ensure resolving ESLint ≥9 in this package (relies on root).
Run the repo‑wide ESLint check script to validate.

examples/svelte/load-more-infinite-scroll/package.json (1)

15-21: Svelte/Vite/SvelteKit bumps LGTM; confirm no stragglers in other Svelte example packages.
Same matrix verification applies.

examples/svelte/playground/package.json (1)

15-21: Svelte/Vite toolchain LGTM — one example missing SvelteKit
.nvmrc = 24.8.0; all Svelte examples use Vite ^6.x and Svelte ^5.39.3. Confirm whether examples/svelte/simple/package.json intentionally omits @sveltejs/kit; if not, add @sveltejs/kit "^2.42.2".

packages/query-codemods/package.json (1)

19-20: Ensure ESLint ≥9 resolves for packages using --concurrency

Root package.json declares eslint ^9.36.0. Automated scan in the sandbox failed (FD/read error); confirm every package that runs "eslint --concurrency" either declares eslint >=9 or inherits the root ^9.36.0 — e.g. packages/query-codemods/package.json (scripts.test:eslint = "eslint --concurrency=auto ./src").

packages/query-devtools/package.json (1)

20-20: ESLint multithread linting: good change; supported in ESLint ≥9.34.

The --concurrency=auto flag is valid and speeds up linting. Root eslint is ^9.36.0, so this is compatible. (eslint.org)

If CI gets CPU‑oversubscribed (NX parallelism + ESLint workers), consider capping ESLint with --concurrency <n> or reducing NX parallelism for the lint target.

packages/svelte-query/package.json (2)

21-21: ESLint concurrency flag added correctly.

Matches ESLint v9 CLI. No issues expected. (eslint.org)


55-57: Svelte and svelte-check bumps look fine.

Versions align with current ecosystem; peer range already covers Svelte 5. No action needed.

pnpm-workspace.yaml (2)

1-3: Workspace settings are valid for pnpm 10.16.1.

  • cleanupUnusedCatalogs: true requires pnpm ≥10.15; root pins pnpm 10.16.1, so this is supported. (pnpm.io)
  • linkWorkspacePackages and preferWorkspacePackages are recognized workspace settings. (pnpm.io)

Please confirm CI’s install step filters what’s needed (e.g., pnpm --filter) if install time grows due to the expanded workspace.


8-14: Expanded package globs and Vue exclusions look intentional.

Including examples while excluding Vue 2/Nuxt is reasonable. Order with exclusions after inclusions is correct for pnpm workspaces. (pnpm.io)

package.json (2)

8-8: pnpm pinned to 10.16.1 aligns with new workspace settings.

Covers cleanupUnusedCatalogs introduced in pnpm 10.15.0. (pnpm.io)


42-79: Tooling upgrades look good; add an engines guard and cap CI lint parallelism.

  • Enforce Node >=18.18.0 in root package.json (ESLint 9 / Vite 6 require a modern Node runtime).
  • Cap NX or ESLint concurrency in CI to avoid worker oversubscription when running lint tasks in parallel.

Apply (outside changed lines) to enforce Node ≥18.18:

   "type": "module",
+  "engines": {
+    "node": ">=18.18.0"
+  },
   "scripts": {

Could not verify package pins in the workspace (no files found); confirm root package.json and run locally:

rg -nP '"eslint"\s*:\s*".*"' -g '!**/node_modules/**'
rg -nP '"vite"\s*:\s*".*"' -g '!**/node_modules/**'
examples/svelte/ssr/package.json (1)

15-22: Confirm CI Node version matches .nvmrc (24.8.0)

  • .nvmrc (repo root) = 24.8.0 — satisfies Vite 6 and ESLint 9.
  • No GitHub Actions workflows found under .github/workflows; CI Node version not discoverable. Verify your CI (GitHub Actions, CircleCI, etc.) sets node-version >=18.18 (recommend matching .nvmrc, 24.8.0).

"@vitejs/plugin-react": "^4.3.4",
"typescript": "5.8.3",
"vite": "^6.2.4"
"vite": "^6.3.6"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Vite minor bump.

LGTM. Please run example’s build locally once to catch plugin regressions.


🏁 Script executed:

#!/bin/bash
pnpm -w i
pnpm -w -r --filter @tanstack/query-example-react-devtools-panel build

Length of output: 4270


Build fails — add or fix @vitejs/plugin-react for the devtools-panel example

Vite build for examples/react/devtools-panel errors: vite.config.ts imports '@vitejs/plugin-react' but the package isn't installed. Add @vitejs/plugin-react to examples/react/devtools-panel devDependencies (or update vite.config.ts to use an available React plugin), then re-run the example build (pnpm -w -r --filter @tanstack/query-example-react-devtools-panel build).

"@vitejs/plugin-react": "^4.3.4",
"typescript": "5.8.3",
"vite": "^6.2.4"
"vite": "^6.3.6"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Vite 6.3 bump approved.

All good here. Consider verifying TS type availability for React 19 across examples to avoid inconsistent DX. (react.dev)


🏁 Script executed:

#!/bin/bash
# Report packages declaring React 19 but not React 19 @types
fd -a package.json | xargs -I{} jq -r '
  (.name // input_filename) as $f
  | {f:$f, react: (.dependencies.react // .devDependencies.react),
     tr: (.devDependencies["@types/react"]), trd: (.devDependencies["@types/react-dom"])}
  | select(.react|tostring|test("^\\^?19") and ((.tr == null) or (.tr|startswith("^18")) or (.trd == null) or (.trd|startswith("^18"))))
'

Length of output: 0


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "PWD: $(pwd)"
echo "---- listing repo root ----"
ls -la | sed -n '1,200p'

echo "---- finding package.json files (excluding node_modules) ----"
mapfile -t files < <(find . -type f -name package.json -not -path "*/node_modules/*" 2>/dev/null || true)
if [ ${#files[@]} -eq 0 ]; then
  echo "No package.json files found."
else
  printf "%s\n" "${files[@]}"
fi

echo "---- show examples/react/simple/package.json if present ----"
if [ -f examples/react/simple/package.json ]; then
  echo "FOUND: examples/react/simple/package.json"
  if command -v jq >/dev/null 2>&1; then
    jq -C . examples/react/simple/package.json
  else
    cat examples/react/simple/package.json
  fi
else
  echo "examples/react/simple/package.json not found"
fi

echo "---- scan all package.json files for react@^19 and their @types entries ----"
if [ ${#files[@]} -eq 0 ]; then
  echo "No files to scan."
else
  for f in "${files[@]}"; do
    echo "---- $f ----"
    if command -v jq >/dev/null 2>&1; then
      jq -r '
        {file: input_filename,
         name:(.name//"unspecified"),
         react:(.dependencies.react // .devDependencies.react // ""),
         types_react:(.dependencies["@types/react"] // .devDependencies["@types/react"] // ""),
         types_react_dom:(.dependencies["@types/react-dom"] // .devDependencies["@types/react-dom"] // "")}
        | select(.react != "" and (.react|test("^\\^?19")))
        | "\(.file)\t\(.name)\treact:\(.react)\t@types/react:\(.types_react)\t@types/react-dom:\(.types_react_dom)"' "$f" || true
    else
      # fallback: print lines that mention react or @types
      rg --line-number --no-ignore-vcs --hidden -n '"react"\s*:\s*"' "$f" || true
      rg --line-number --no-ignore-vcs --hidden -n '"@types/react"\s*:\s*"' "$f" || true
      rg --line-number --no-ignore-vcs --hidden -n '"@types/react-dom"\s*:\s*"' "$f" || true
    fi
  done
fi

Length of output: 2290


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "PWD: $(pwd)"
echo "---- top-level listing ----"
ls -la | sed -n '1,200p'

tmp="$(mktemp)"
find . -type f -name package.json -not -path '*/node_modules/*' -print0 > "$tmp" || true

if [ ! -s "$tmp" ]; then
  echo "No package.json files found."
  rm -f "$tmp"
  exit 0
fi

count=0
while IFS= read -r -d '' f; do count=$((count+1)); done < "$tmp"
echo "Found $count package.json files"

echo "---- show examples/react/simple/package.json (if present) ----"
if [ -f examples/react/simple/package.json ]; then
  echo "FOUND: examples/react/simple/package.json"
  if command -v jq >/dev/null 2>&1; then
    jq -C . examples/react/simple/package.json
  else
    sed -n '1,200p' examples/react/simple/package.json
  fi
else
  echo "examples/react/simple/package.json not found"
fi

echo "---- scanning package.json files for react@^19 and @types entries ----"
while IFS= read -r -d '' f; do
  echo "---- $f ----"
  if command -v jq >/dev/null 2>&1; then
    jq -r '{
      file: input_filename,
      name:(.name//"unspecified"),
      react:(.dependencies.react // .devDependencies.react // ""),
      types_react:(.dependencies["@types/react"] // .devDependencies["@types/react"] // ""),
      types_react_dom:(.dependencies["@types/react-dom"] // .devDependencies["@types/react-dom"] // "")
    } | select(.react != "" and (.react|test("^\\^?19"))) 
      | "\(.file)\t\(.name)\treact:\(.react)\t@types/react:\(.types_react)\t@types/react-dom:\(.types_react_dom)"' "$f" || true
  else
    echo "jq not available; dumping matching lines:"
    rg -n --hidden -n '"react"\s*:\s*"' "$f" || true
    rg -n --hidden -n '"@types/react"' "$f" || true
    rg -n --hidden -n '"@types/react-dom"' "$f" || true
  fi
done < "$tmp"

rm -f "$tmp"

Length of output: 29503


🏁 Script executed:

#!/bin/bash
set -euo pipefail
tmp="$(mktemp)"
find . -type f -name package.json -not -path '*/node_modules/*' -print0 > "$tmp" || true

if [ ! -s "$tmp" ]; then
  echo "No package.json files found."
  rm -f "$tmp"
  exit 0
fi

echo "Scanning package.json files for react@^19 (reporting @types/react, @types/react-dom, and typescript presence)..."
echo

cat "$tmp" | tr '\0' '\n' | while IFS= read -r f; do
  node -e '
const fs = require("fs");
const p = process.argv[1];
try {
  const j = JSON.parse(fs.readFileSync(p,"utf8"));
  const react = (j.dependencies && j.dependencies.react) || (j.devDependencies && j.devDependencies.react) || "";
  if (/^(\^)?19/.test(react)) {
    const tr = (j.dependencies && j.dependencies["@types/react"]) || (j.devDependencies && j.devDependencies["@types/react"]) || "";
    const trd = (j.dependencies && j.dependencies["@types/react-dom"]) || (j.devDependencies && j.devDependencies["@types/react-dom"]) || "";
    const ts = (j.dependencies && j.dependencies.typescript) || (j.devDependencies && j.devDependencies.typescript) || "";
    console.log(`${p}\treact:${react}\t@types/react:${tr}\t@types/react-dom:${trd}\ttypescript:${ts}`);
  }
} catch (e) {
  // ignore parse errors
}
' "$f"
done

rm -f "$tmp"

Length of output: 2950


Vite 6.3 bump — approved.

Action: update TypeScript types for React 19 — scan found multiple packages declaring react:^19.0.0 but missing @types or still on @types/*@^18; update to @types/react@^19 and @types/react-dom@^19 (or confirm intentional omission).

Missing both @types (update/add):

  • examples/react/basic-graphql-request/package.json
  • examples/react/chat/package.json
  • examples/react/default-query-function/package.json
  • examples/react/devtools-panel/package.json
  • examples/react/offline/package.json
  • examples/react/playground/package.json
  • examples/react/react-native/package.json
  • examples/react/rick-morty/package.json
  • examples/react/simple/package.json
  • examples/react/star-wars/package.json
  • examples/react/suspense/package.json
  • integrations/react-vite/package.json
  • integrations/react-webpack-4/package.json
  • integrations/react-webpack-5/package.json

Outdated @types (bumped to ^18 — needs bump to ^19):

  • examples/react/algolia/package.json
  • examples/react/basic/package.json
  • examples/react/eslint-legacy/package.json
  • examples/react/react-router/package.json

Missing only @types/react-dom (add @types/react-dom@^19):

  • packages/react-query-devtools/package.json
  • packages/react-query-next-experimental/package.json
  • packages/react-query-persist-client/package.json

Already using @types@^19 (no action):

  • examples/react/nextjs-app-prefetching/package.json
  • examples/react/shadow-dom/package.json
  • integrations/react-next-15/package.json
  • packages/react-query/package.json
  • package.json (root)
🤖 Prompt for AI Agents
In examples/react/simple/package.json around line 19, the project upgraded to
vite and indicates React ^19 is used but the package.json lacks corresponding
TypeScript types; add devDependencies @types/react@^19 and @types/react-dom@^19
(or confirm intentional omission) and ensure versions match React 19; apply the
same addition/update across the listed files that are missing types and bump any
@types/*@^18 entries to @types/*@^19 as noted in the review.

Comment on lines +15 to 16
"vite": "^6.3.6",
"vue-tsc": "^2.2.8"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Vue + Vite 6: plugin-vue 5.2.1 adds Vite 6 to peers.

This pairing is supported. As a follow‑up, verify other examples use compatible plugin versions (react/vite-plugin-solid). (gitlab.rubend.nl)

If any esbuild < 0.25.0 is resolved, pin via overrides to ≥0.25.0 to address the dev‑server CORS vuln. (github.com)


🏁 Script executed:

#!/bin/bash
# Show vite and plugin versions declared across the repo
fd -a package.json | xargs -I {} sh -c 'jq -r "\"{}\"\"\t\"+(.devDependencies.vite // .dependencies.vite // empty)+\"\t\"+(.devDependencies[\"@vitejs/plugin-react\"] // empty)+\"\t\"+(.devDependencies[\"@vitejs/plugin-vue\"] // empty)+\"\t\"+(.devDependencies[\"vite-plugin-solid\"] // empty)" {}' 2>/dev/null | rg -v '\t$' || true

# If pnpm-lock.yaml exists, surface resolved esbuild entries to ensure >=0.25.0 (fixes GHSA-67mh-4wv8-2f99)
test -f pnpm-lock.yaml && rg -nP 'esbuild@.*:' pnpm-lock.yaml | head -n 50 || true

Length of output: 583


Approve Vue + Vite 6; fix esbuild <0.25.0 in lockfile

  • Vite 6 + plugin-vue 5.2.1 pairing supported.
  • pnpm-lock.yaml resolves [email protected] and [email protected] (vulnerable — GHSA-67mh-4wv8-2f99); add overrides to force esbuild ≥0.25.0.
  • Verify other examples (react, vite-plugin-solid) use plugin versions compatible with Vite 6.
🤖 Prompt for AI Agents
In integrations/vue-vite/package.json around lines 15-16, the pnpm lockfile
currently resolves [email protected] and 0.24.2 which are vulnerable; add a
top-level overrides entry to force esbuild to >=0.25.0 (e.g. add an "overrides"
object mapping "esbuild" to ">=0.25.0"), then regenerate the lockfile (pnpm
install) to ensure the older vulnerable versions are replaced; also review
related example packages (react, vite-plugin-solid) to confirm plugin versions
are compatible with Vite 6 and update their package.json entries if needed.

@lachlancollins lachlancollins merged commit fb48985 into main Sep 21, 2025
7 of 8 checks passed
@lachlancollins lachlancollins deleted the workspace-config branch September 21, 2025 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment