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).

@coderabbitai
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.

@nx-cloud
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

@pkg-pr-new
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

@github-actions
Copy link
Contributor

Sizes for commit 73631b8:

Branch Bundle Size
Main
This PR

@codecov
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
Hellol77 pushed a commit to Hellol77/query that referenced this pull request Oct 14, 2025
* chore: update workspace config

* Update more deps

* Fix issues
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment