Skip to content

chore: merge main into solid-query-v6-pre, upgrade to solid v2 rc - #11174

Open
brenelz wants to merge 99 commits into
TanStack:solid-query-v6-prefrom
brenelz:chore/solid-v2-rc-main-merge
Open

chore: merge main into solid-query-v6-pre, upgrade to solid v2 rc#11174
brenelz wants to merge 99 commits into
TanStack:solid-query-v6-prefrom
brenelz:chore/solid-v2-rc-main-merge

Conversation

@brenelz

@brenelz brenelz commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Brings main into the v6 prerelease branch and moves the branch onto the Solid 2.0 RC.

Two commits: the Solid RC upgrade, then the main merge.

Note: this includes the commit from #11173. If this lands, that PR can be closed.

Solid RC, with carets

solid-js, @solidjs/web, @solidjs/signals and babel-preset-solid go from the pinned 2.0.0-beta.33 to ^2.0.0-rc.0 across the three solid packages, the solid-vite integration and the solid examples — also flipping these from exact pins to carets so the rc line is tracked as it moves. packages/query-devtools is untouched; it is still on Solid 1.x.

@tanstack/solid-query's peer floor moves to >=2.0.0-rc.0 <3.0.0. The deliberately broader >=2.0.0-beta.0 <3.0.0 floors on the other two are left alone, matching how previous bumps handled them.

vite-plugin-solid@solidjs/vite-plugin

Renamed at ^3.0.0-next.27 — the version published under both names, so a clean cut-over. Covers every manifest, every vite config and the hydration test fixture. packages/query-devtools stays on vite-plugin-solid@^2.11.6; the scoped package has no 2.x line. The -i vite-plugin-solid sherif ignore is dropped, since the dependency no longer resolves to more than one version.

Prerelease tag → rc, landing on 6.0.0-rc.0

.changeset/pre.json moves to "tag": "rc". No workflow change needed — solid-query-v6-pre still matches the *-pre glob in release.yml, which sets prerelease=true and passes no --tag, so changeset publish takes the dist-tag from pre.json.

Changesets derives the pre number as (prerelease[1] ?? -1) + 1, so switching the tag alone would have continued the beta counter into 6.0.0-rc.9. To land on 6.0.0-rc.0, the solid packages carry the sentinel version 6.0.0-rc — valid semver with no numeric prerelease part, so the pre number resolves to 0 while semver.inc("6.0.0-rc", "patch") still yields 6.0.0. That sentinel only lives here until the next ci: Version Packages commit rewrites it; nothing publishes from it, since the release action runs version before publish.

Verified by running the real changeset version against a throwaway copy: all three solid packages land on 6.0.0-rc.0, no other package is touched, and the changelog entry lands directly above ## 6.0.0-beta.8.

Merge conflict resolutions

All conflicts were in the solid packages, examples and workspace config:

  • examples/solid/*/package.json — kept the v6 / Solid 2 side, but took main's newer ^5.101.4 for the 5.x packages that are not part of the v6 line (query-async-storage-persister, eslint-plugin-query)
  • packages/solid-query*/package.json — kept the 6.0.0-rc sentinel over main's 5.101.4
  • packages/solid-query*/CHANGELOG.md — kept both histories, 6.0.0-* above main's new 5.101.15.101.4 entries, leaving them in descending version order ahead of the shared 5.101.0 tail
  • solid-query/useMutation.test.tsx — kept our rewrite of the retry test. The surrounding assertions require mutationKey and data2, which only our mutationFn produces; main's variant is the Solid 1 version of the test that this branch had already replaced
  • solid-query-devtools/devtools.test.tsx — kept main's five new prop-change forwarding tests from test(solid-query-devtools/devtools): add tests for forwarding option changes after mount #11021, ported to this branch's Solid 2 pattern by flushing after each signal write, and kept our async declaration of the unmount test, whose body awaits. Also merged the two solid-js import statements the merge left duplicated
  • solid-query-devtools/devtoolsPanel.test.tsx — kept our flush() and took main's stronger assertion from test(solid-query-devtools/devtoolsPanel): assert the default 'onClose' is a no-op instead of 'expect.any(Function)' #11030 that the default onClose is a no-op
  • pnpm-workspace.yaml — took main's expanded trustPolicyExclude and kept this branch's minimumReleaseAgeExclude block
  • pnpm-lock.yaml — regenerated from the merged manifests

Known peer warning

pnpm install reports an unmet peer for @solidjs/vite-plugin@3.0.0-next.27, which declares solid-js / @solidjs/web as >=2.0.0-beta.32 <2.0.0-experimental.0. Prerelease identifiers sort alphabetically, so the real ordering is beta.32 < experimental.0 < rc.0 — the upper bound excludes the RC by accident. Metadata only, and warning only (no strict-peer-dependencies here, and pnpm defaults it to false). It should clear when Solid ships a plugin release with a corrected bound.

Verification

On the merged tree, for all three solid packages:

  • test:lib — 369 tests pass, no type errors (devtools goes 28 → 33 with main's ported tests)
  • test:types, test:build, test:eslint — pass
  • sherif and knip — clean
  • integrations/solid-vite and examples/solid/basic still build

No source changes were needed for the RC itself.

🤖 Generated with Claude Code

sukvvon and others added 30 commits June 16, 2026 14:01
…sx' (TanStack#10960)

* test(solid-query/useQuery): move type-only test to 'useQuery.test-d.tsx'

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…Times' with 'toHaveBeenCalledWith' and 'toHaveBeenCalledTimes' (TanStack#10967)
…hydration (TanStack#10610)

* fix(hydration): set dataUpdatedAt when pending query resolves before hydration

* test(hydration): add cases for dataUpdatedAt when streamed query resolves before hydration

* Add changeset

---------

Co-authored-by: Fredrik Höglund <fredrik.hoglund@gmail.com>
ci: changeset release

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* chore: update pnpm to 11.9.0

* chore: document trust policy exclusions

* chore: raise minimum release age

---------

Co-authored-by: Dominik Dorfmeister 🔮 <office@dorfmeister.cc>
…TanStack#10985)

Under TypeScript 5.4, `NoInfer<T>` can't match an inline object literal
against the value branch of the `Updater` union in `setQueryData`, so it
falls back to the function branch and reports the literal as excess
properties (TS2353). TS >= 5.5 handles it correctly.

This surfaces in the `test:types:ts54` legacy typecheck via the project
reference chain (e.g. react-query-persist-client / react-query-devtools
build query-core's test sources). It is normally masked by the Nx remote
cache and only re-runs — and fails — when a dependent package's type
inputs change, so it can land on `main` unnoticed.

Annotate the value before passing it to `setQueryData` to sidestep the
5.4 limitation while preserving the assertions. Verified across TS
5.4–6.0.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…anStack#10984)

Inlining a `select` on a query object passed to `useQueries` /
`useSuspenseQueries` can't infer its `data` argument from the sibling
`queryFn` and falls back to `unknown` — a known TypeScript limitation
(TanStack#6556).

Document the two workarounds (annotate the `select` parameter, or define
the query with the `queryOptions` helper) in the React docs, and add type
tests guarding the behavior. Scoped to React for an easier review; the
other framework adapters can follow the same pattern in separate PRs.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…TanStack#10990)

`isLoading` is a deprecated alias for `isPending && isFetching` and is
scheduled for removal in the next major version. The overview example
shows a standard (always-enabled) query, so `isPending` is the correct
flag. All other framework overview docs (React, Vue, Angular, Lit,
Preact) already use `isPending`.

Note: `isLoading` is intentionally retained in disabling-queries guides
where it is the right flag for disabled/lazy queries.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(svelte): replace deprecated isLoading with isPending in overview

`isLoading` is a deprecated alias for `isPending && isFetching` and is
scheduled for removal in the next major version. The overview example
shows a standard (always-enabled) query, so `isPending` is the correct
flag. All other framework overview docs (React, Vue, Angular, Lit,
Preact) already use `isPending`.

Note: `isLoading` is intentionally retained in disabling-queries guides
where it is the right flag for disabled/lazy queries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(preact): add missing polling guide

The Polling guide existed for React, Vue, Solid, and Angular but was
missing from the Preact docs. Added the ref stub and wired it into
the nav config between Window Focus Refetching and Disabling Queries,
matching the ordering used by all other frameworks.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ies with equal 'dataUpdatedAt' to follow the standard comparator contract (TanStack#10812)
… 'closePipWindow' so the auto-open createEffect does not reopen the window after a programmatic close (TanStack#10813)
… the target so a 'shadowDOMTarget' still receives its own '#_goober' style tag when 'document.head' already has one (TanStack#10815)
…ring (TanStack#10638)

Safari has a known issue where overflow: hidden with border-radius
doesn't work correctly without hardware acceleration. Adding
transform: translateZ(0) forces GPU compositing which fixes the
icon rendering issue.

Fixes TanStack#10633
Currently there is a bug, which prevents proper rendering of the links if there are both MD & HTML syntax in the same line (see https://tanstack.com/query/latest/docs/framework/react/devtools), probably should be fixed in @tanstack/markdown. Not sure that the source code of this package is published?

In the meantime, I just converted all links to html.

Converting everything (logos) to markdown won't work because we need to set width/height, which can't be done in markdown
…rsByTimeAsync' and use 'queryKey' helper for infinite query tests (TanStack#10944)
github-actions Bot and others added 22 commits July 20, 2026 14:01
ci: changeset release

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…Stack#11067)

* fix(query-eslint): ignore call targets in exhaustive deps

* fix(query-eslint): guard AST parent access

* fix(query-eslint): accept JSX scope references

---------

Co-authored-by: Dominik Dorfmeister 🔮 <office@dorfmeister.cc>
ci: changeset release

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…tion consistently (TanStack#11091)

Co-authored-by: Wonsuk Choi <sukvvon@gmail.com>
…maining tests (TanStack#11093)

Co-authored-by: Wonsuk Choi <sukvvon@gmail.com>
…TanStack#11121)

test(angular-query): assert exact values instead of loose matchers
…alue assertions (TanStack#11122)

test(lit-query): assert exact values instead of loose matchers
…act-value assertions (TanStack#11123)

test({react,preact}-query): assert exact values instead of loose matchers
…anStack#11124)

test(svelte-query): assert exact values instead of loose matchers
…y with a custom hash function (TanStack#11055)

* Protect restored custom-hash queries in devtools

Exercise the full dehydrate, hydrate, and query-row rendering path for a per-query custom queryKeyHashFn. This locks the queryHash lookup behavior introduced by TanStack#10750 and covers the persistence failure reported in TanStack#6958.

Constraint: The runtime lookup fix already shipped in TanStack#10750

Rejected: Reapply queryCache.get changes | current main already contains the implementation

Confidence: high

Scope-risk: narrow

Tested: query-devtools 246 tests; ESLint; TypeScript current; Prettier

Related: TanStack#6958

* test(query-devtools/Devtools): use 'advanceTimersByTimeAsync' for consistency and remove redundant 'clear'

* test(query-devtools/Devtools): move custom-hash hydration test to the end of 'query list'

* test(query-devtools/Devtools): align custom-hash test title with the 'when X' convention

---------

Co-authored-by: Wonsuk Choi <sukvvon@gmail.com>
…e assertion (TanStack#11126)

* test(svelte-query/createQuery): assert exact queryKey instead of loose 'toBeDefined'

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…ending test by keeping 'queryFn' in-flight (TanStack#10910)

* test(react-query/useQuery.promise): unskip 'cancelQueries' while suspending test by keeping 'queryFn' in-flight

* test(react-query/useQuery.promise): clarify why 'sleep' is extended in cancel-while-suspending test
… 'pnpm' equivalents (TanStack#11095)

docs(CONTRIBUTING): replace 'npm run test' and 'npx nx' command with 'pnpm' equivalents
…amples (TanStack#11090)

* docs(angular-query): fix three broken examples in the guides

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* docs: use the dynamic README header endpoint

* docs: add README header banners to the framework adapter packages
…nStack#11156)

* docs(react-query/useQuery): document 'throwOnError' default and its absence in suspense hooks

* docs(react-query/useQuery): use framework-agnostic wording for suspense throwOnError note

* docs(react-query/useQuery): remove inaccurate suspense-mode throwOnError note
…to rc

- Bump solid-js, @solidjs/web, @solidjs/signals and babel-preset-solid
  2.0.0-beta.33 -> ^2.0.0-rc.0 across the solid packages, the solid-vite
  integration and the solid examples, switching these from exact pins to
  carets so the rc line is picked up as it moves
- Rename vite-plugin-solid -> @solidjs/vite-plugin ^3.0.0-next.27 (the
  version published under both names) in every manifest, vite config and
  the hydration test fixture; packages/query-devtools stays on
  vite-plugin-solid ^2.11.6 since it is still on solid 1.x
- Drop the now-redundant `-i vite-plugin-solid` sherif ignore, since the
  dependency no longer resolves to more than one version
- Raise the solid-query peer floor to >=2.0.0-rc.0 <3.0.0; the broader
  >=2.0.0-beta.0 floors on solid-query-devtools and
  solid-query-persist-client are left as they are
- Switch the changesets prerelease tag from beta to rc, and set the solid
  package versions to the 6.0.0-rc sentinel so the next `changeset
  version` lands on 6.0.0-rc.0 rather than continuing the beta counter
  into 6.0.0-rc.9
- No source changes were needed; solid-query, solid-query-devtools and
  solid-query-persist-client pass unchanged (336 tests, no type errors),
  as do the solid-vite integration and solid example vite builds

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Conflicts were all in the solid packages, examples and workspace config.
Resolved as follows:

- examples/solid/*/package.json: kept the v6 / solid 2 side (solid-js and
  @solidjs/web at ^2.0.0-rc.0, @tanstack/solid-query* on the 6.0.0 line),
  but took main's newer ^5.101.4 for the 5.x packages that are not part
  of the v6 line (query-async-storage-persister, eslint-plugin-query)
- packages/solid-query*/package.json: kept the 6.0.0-rc version sentinel
  over main's 5.101.4
- packages/solid-query*/CHANGELOG.md: kept both histories, 6.0.0-* above
  main's new 5.101.1-5.101.4 entries, which keeps them in descending
  version order ahead of the shared 5.101.0 tail
- solid-query useMutation.test.tsx: kept our rewrite of the retry test;
  the surrounding assertions require mutationKey and `data2`, which only
  our mutationFn produces. Main's variant is the solid 1 version of the
  test that this branch had already replaced
- solid-query-devtools devtools.test.tsx: kept main's five new
  prop-change forwarding tests, ported to this branch's solid 2 pattern
  by flushing after each signal write, and kept our async declaration of
  the unmount test, whose body awaits. Also merged the two solid-js
  import statements the merge left duplicated
- solid-query-devtools devtoolsPanel.test.tsx: kept our flush() and took
  main's stronger assertion that the default onClose is a no-op
- pnpm-workspace.yaml: took main's expanded trustPolicyExclude and kept
  this branch's minimumReleaseAgeExclude block
- pnpm-lock.yaml: regenerated from the merged manifests

Verified on the merged tree: test:lib, test:types, test:build and
test:eslint pass for all three solid packages (369 tests, no type
errors), sherif and knip are clean, and the solid-vite integration and
solid basic example still build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@brenelz
brenelz requested a review from a team as a code owner August 12, 2026 23:10
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6c82aa44-ceb2-4ea3-9e9a-458fe2a04472

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

❤️ Share

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

Brings in the squash-merged TanStack#11173, which landed the solid v2 rc upgrade
upstream. Two conflicts:

- examples/solid/simple/package.json: kept our ^5.101.4 for
  @tanstack/eslint-plugin-query. The base branch still has ^5.101.0
  because it has not taken main yet, and that bump is part of the main
  merge this branch delivers
- pnpm-lock.yaml: regenerated from the merged manifests

Verified after the merge: test:lib, test:types, test:build and
test:eslint pass for all three solid packages, sherif and knip are clean,
and the 6.0.0-rc sentinel matches what upstream now carries.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nx-cloud

nx-cloud Bot commented Aug 12, 2026

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix Eligible

An automatically generated fix could have helped fix failing tasks for this run, but Self-healing CI is disabled for this workspace. Visit workspace settings to enable it and get automatic fixes in future runs.

To disable these notifications, a workspace admin can disable them in workspace settings.


View your CI Pipeline Execution ↗ for commit 9dbb8ca

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

☁️ Nx Cloud last updated this comment at 2026-08-13 01:38:19 UTC

@pkg-pr-new

pkg-pr-new Bot commented Aug 12, 2026

Copy link
Copy Markdown
More templates

@tanstack/angular-query-experimental

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

@tanstack/eslint-plugin-query

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

@tanstack/lit-query

npm i https://pkg.pr.new/@tanstack/lit-query@11174

@tanstack/preact-query

npm i https://pkg.pr.new/@tanstack/preact-query@11174

@tanstack/preact-query-devtools

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

@tanstack/preact-query-persist-client

npm i https://pkg.pr.new/@tanstack/preact-query-persist-client@11174

@tanstack/query-async-storage-persister

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

@tanstack/query-broadcast-client-experimental

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

@tanstack/query-core

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

@tanstack/query-devtools

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

@tanstack/query-persist-client-core

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

@tanstack/query-sync-storage-persister

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

@tanstack/react-query

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

@tanstack/react-query-devtools

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

@tanstack/react-query-next-experimental

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

@tanstack/react-query-persist-client

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

@tanstack/solid-query

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

@tanstack/solid-query-devtools

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

@tanstack/solid-query-persist-client

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

@tanstack/svelte-query

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

@tanstack/svelte-query-devtools

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

@tanstack/svelte-query-persist-client

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

@tanstack/vue-query

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

@tanstack/vue-query-devtools

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

commit: 9dbb8ca

@brenelz

brenelz commented Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

@birkskyum we could probably merge this even if we dont do a release

Brings in TanStack#11175, the release bot's version commit, which turned the
6.0.0-rc sentinel into the real 6.0.0-rc.0 across the solid packages.

One conflict, in examples/solid/offline/package.json, where each side
was right about different lines:

- @tanstack/query-async-storage-persister: kept our ^5.101.4, which
  comes from main and is part of what this branch delivers
- @tanstack/solid-query*: took the base branch's ^6.0.0-rc.0 over our
  now-stale ^6.0.0-beta.8 references

Verified after the merge: the three solid packages are on 6.0.0-rc.0
with no stale beta.8 references anywhere, the changelogs stay in
descending version order across the rc/beta/5.101 boundary, and
test:lib, test:types, test:build, test:eslint, sherif and knip all pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@brenelz
brenelz force-pushed the chore/solid-v2-rc-main-merge branch from 7a980e1 to 9dbb8ca Compare August 13, 2026 01:32
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.