Skip to content

docs(query-core): add JSDoc for 'MutationOptions' - #11550

Merged
sukvvon merged 1 commit into
mainfrom
docs/mutation-options-jsdoc
Sep 19, 2026
Merged

sukvvon merged 1 commit into
mainfrom
docs/mutation-options-jsdoc

Conversation

@sukvvon

@sukvvon sukvvon commented Sep 19, 2026

Copy link
Copy Markdown
Member

🎯 Changes

MutationOptions documents 5 of its 13 properties, while QueryOptions documents 17 of 17. The eight without a comment are the ones people actually pass to useMutationmutationFn, mutationKey, onMutate, onSuccess, onError, onSettled, meta and scope — so every generated options table renders them with an empty description:

Property Type Description
mutationFn? (variables, context) => Promise<TData>
onMutate? (variables, context) => ...

This adds JSDoc for those eight in query-core, which fills the column across all seven adapters. Empty description cells across the generated reference drop from 191 to 63 — the rest are initialPageParam and a few re-declared properties, left for a follow-up.

The text is recovered from the hand-written useMutation.md that the TypeDoc migration (#11366) deleted, rewritten in the sentence style the surrounding JSDoc already uses rather than v4's bullet lists.

Every statement was checked against the implementation

The v4 page turned out to be wrong in one place, so provenance alone wasn't enough:

  • scope — v4 said "Defaults to a unique id (so that all mutations run in parallel)". Nothing generates an id: scopeFor() returns mutation.options.scope?.id, and canRun() lets an unscoped mutation start immediately. The observable behaviour is the same, but the mechanism isn't, so this one is written from the implementation instead.

The other seven check out:

Statement Verified against
mutationFn is optional when a default is registered QueryClient.setMutationDefaults
mutationKey is used to match mutations matchMutation in utils.ts
onMutate's promise is awaited before mutationFn await this.options.onMutate?.() in mutation.ts
onMutate's return value reaches the other callbacks stored as the mutation's context, passed on as onMutateResult
onSuccess/onError are awaited before onSettled onSuccessonSettled ordering in mutation.ts
onSettled is awaited before the mutation settles await onSettled precedes dispatch({ type: 'success' })
meta is readable from MutationCache callbacks onError/onSuccess on MutationCacheConfig

Verification

  • empty description cells: 191 → 63
  • property entries lost: 0, descriptions lost: 0, broken relative links: 0 (1,415 generated pages)
  • pnpm --filter @tanstack/query-core run test:types passes on TS 5.6 through 7.0

The source change is comments only; no type or runtime behaviour changes.

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested code changes locally with pnpm run test:pr, or these tests do not apply to this pull request.
  • I fully understand the code in this pull request, including any code generated with AI assistance.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

Summary by CodeRabbit

  • Documentation
    • Updated reference links so interface and type documentation points to the correct source locations across supported frameworks.
    • Added clear descriptions for mutation configuration properties, including mutation functions, keys, lifecycle callbacks, metadata, and scopes.
    • Improved consistency and completeness of generated API reference pages without changing public APIs, types, defaults, or runtime behavior.

@nx-cloud

nx-cloud Bot commented Sep 19, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit e3e090e

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

☁️ Nx Cloud last updated this comment at 2026-09-19 07:52:49 UTC

@coderabbitai

coderabbitai Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: TanStack/query/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: c511a378-9b98-4271-9fe0-d483be86bc3f

📥 Commits

Reviewing files that changed from the base of the PR and between d346e85 and e3e090e.

📒 Files selected for processing (120)
  • docs/framework/angular/reference/interfaces/CancelOptions.md
  • docs/framework/angular/reference/interfaces/CreateMutationOptions.md
  • docs/framework/angular/reference/interfaces/DefaultOptions.md
  • docs/framework/angular/reference/interfaces/MutateOptions.md
  • docs/framework/angular/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/angular/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/angular/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/angular/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/angular/reference/interfaces/MutationObserverOptions.md
  • docs/framework/angular/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/angular/reference/interfaces/MutationOptions.md
  • docs/framework/angular/reference/interfaces/NotifyEvent.md
  • docs/framework/angular/reference/interfaces/QueryClientConfig.md
  • docs/framework/angular/reference/interfaces/SetDataOptions.md
  • docs/framework/angular/reference/type-aliases/MutateFunction.md
  • docs/framework/angular/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/angular/reference/type-aliases/MutationObserverResult.md
  • docs/framework/angular/reference/type-aliases/NotifyEventType.md
  • docs/framework/lit/reference/interfaces/CancelOptions.md
  • docs/framework/lit/reference/interfaces/DefaultOptions.md
  • docs/framework/lit/reference/interfaces/MutateOptions.md
  • docs/framework/lit/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/lit/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/lit/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/lit/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/lit/reference/interfaces/MutationObserverOptions.md
  • docs/framework/lit/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/lit/reference/interfaces/MutationOptions.md
  • docs/framework/lit/reference/interfaces/NotifyEvent.md
  • docs/framework/lit/reference/interfaces/QueryClientConfig.md
  • docs/framework/lit/reference/interfaces/SetDataOptions.md
  • docs/framework/lit/reference/type-aliases/MutateFunction.md
  • docs/framework/lit/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/lit/reference/type-aliases/MutationObserverResult.md
  • docs/framework/lit/reference/type-aliases/NotifyEventType.md
  • docs/framework/preact/reference/interfaces/CancelOptions.md
  • docs/framework/preact/reference/interfaces/DefaultOptions.md
  • docs/framework/preact/reference/interfaces/MutateOptions.md
  • docs/framework/preact/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/preact/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/preact/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/preact/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/preact/reference/interfaces/MutationObserverOptions.md
  • docs/framework/preact/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/preact/reference/interfaces/MutationOptions.md
  • docs/framework/preact/reference/interfaces/NotifyEvent.md
  • docs/framework/preact/reference/interfaces/QueryClientConfig.md
  • docs/framework/preact/reference/interfaces/SetDataOptions.md
  • docs/framework/preact/reference/interfaces/UseMutationOptions.md
  • docs/framework/preact/reference/type-aliases/MutateFunction.md
  • docs/framework/preact/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/preact/reference/type-aliases/MutationObserverResult.md
  • docs/framework/preact/reference/type-aliases/NotifyEventType.md
  • docs/framework/react/reference/interfaces/CancelOptions.md
  • docs/framework/react/reference/interfaces/DefaultOptions.md
  • docs/framework/react/reference/interfaces/MutateOptions.md
  • docs/framework/react/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/react/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/react/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/react/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/react/reference/interfaces/MutationObserverOptions.md
  • docs/framework/react/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/react/reference/interfaces/MutationOptions.md
  • docs/framework/react/reference/interfaces/NotifyEvent.md
  • docs/framework/react/reference/interfaces/QueryClientConfig.md
  • docs/framework/react/reference/interfaces/SetDataOptions.md
  • docs/framework/react/reference/interfaces/UseMutationOptions.md
  • docs/framework/react/reference/type-aliases/MutateFunction.md
  • docs/framework/react/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/react/reference/type-aliases/MutationObserverResult.md
  • docs/framework/react/reference/type-aliases/NotifyEventType.md
  • docs/framework/solid/reference/interfaces/CancelOptions.md
  • docs/framework/solid/reference/interfaces/MutateOptions.md
  • docs/framework/solid/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/solid/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/solid/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/solid/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/solid/reference/interfaces/MutationObserverOptions.md
  • docs/framework/solid/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/solid/reference/interfaces/MutationOptions.md
  • docs/framework/solid/reference/interfaces/NotifyEvent.md
  • docs/framework/solid/reference/interfaces/SetDataOptions.md
  • docs/framework/solid/reference/type-aliases/MutateFunction.md
  • docs/framework/solid/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/solid/reference/type-aliases/MutationObserverResult.md
  • docs/framework/solid/reference/type-aliases/NotifyEventType.md
  • docs/framework/svelte/reference/interfaces/CancelOptions.md
  • docs/framework/svelte/reference/interfaces/DefaultOptions.md
  • docs/framework/svelte/reference/interfaces/MutateOptions.md
  • docs/framework/svelte/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/svelte/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/svelte/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/svelte/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/svelte/reference/interfaces/MutationObserverOptions.md
  • docs/framework/svelte/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/svelte/reference/interfaces/MutationOptions.md
  • docs/framework/svelte/reference/interfaces/NotifyEvent.md
  • docs/framework/svelte/reference/interfaces/QueryClientConfig.md
  • docs/framework/svelte/reference/interfaces/SetDataOptions.md
  • docs/framework/svelte/reference/type-aliases/MutateFunction.md
  • docs/framework/svelte/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/svelte/reference/type-aliases/MutationObserverResult.md
  • docs/framework/svelte/reference/type-aliases/NotifyEventType.md
  • docs/framework/vue/reference/interfaces/CancelOptions.md
  • docs/framework/vue/reference/interfaces/DefaultOptions.md
  • docs/framework/vue/reference/interfaces/MutateOptions.md
  • docs/framework/vue/reference/interfaces/MutationObserverBaseResult.md
  • docs/framework/vue/reference/interfaces/MutationObserverErrorResult.md
  • docs/framework/vue/reference/interfaces/MutationObserverIdleResult.md
  • docs/framework/vue/reference/interfaces/MutationObserverLoadingResult.md
  • docs/framework/vue/reference/interfaces/MutationObserverOptions.md
  • docs/framework/vue/reference/interfaces/MutationObserverSuccessResult.md
  • docs/framework/vue/reference/interfaces/NotifyEvent.md
  • docs/framework/vue/reference/interfaces/QueryClientConfig.md
  • docs/framework/vue/reference/interfaces/SetDataOptions.md
  • docs/framework/vue/reference/type-aliases/MutateFunction.md
  • docs/framework/vue/reference/type-aliases/MutateFunctionRest.md
  • docs/framework/vue/reference/type-aliases/MutationObserverResult.md
  • docs/framework/vue/reference/type-aliases/NotifyEventType.md
  • packages/query-core/src/types.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The change adds JSDoc descriptions to MutationOptions properties and propagates those descriptions into framework reference pages. It also updates generated Defined in links to current line locations in packages/query-core/src/types.ts.

Changes

Mutation documentation synchronization

Layer / File(s) Summary
Core mutation option JSDoc
packages/query-core/src/types.ts
Adds documentation for mutation functions, keys, callbacks, metadata, and scopes. Property signatures remain unchanged.
Framework mutation property descriptions
docs/framework/{angular,lit,preact,react,solid,svelte,vue}/reference/interfaces/*Mutation*Options.md, docs/framework/preact/reference/interfaces/UseMutationOptions.md, docs/framework/react/reference/interfaces/UseMutationOptions.md
Replaces placeholder descriptions with documentation for mutation properties and callbacks.
Generated source link synchronization
docs/framework/{angular,lit,preact,react,solid,svelte,vue}/reference/{interfaces,type-aliases}/*.md
Updates Defined in links to current line numbers in packages/query-core/src/types.ts.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Other

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the main change: adding JSDoc for the query-core MutationOptions API.
Description check ✅ Passed The description explains the motivation, documents the eight properties, records verification results, completes the checklist, and identifies the change as docs-only with no release impact.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

@sukvvon sukvvon self-assigned this Sep 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

1 package(s) bumped directly, 24 bumped as dependents.

🟩 Patch bumps

Package Version Reason
@tanstack/query-core 5.103.1 → 5.103.2 Changeset
@tanstack/angular-query-experimental 5.103.1 → 5.103.2 Dependent
@tanstack/angular-query-persist-client 5.103.1 → 5.103.2 Dependent
@tanstack/eslint-plugin-query 5.103.1 → 5.103.2 Dependent
@tanstack/lit-query 0.2.22 → 0.2.23 Dependent
@tanstack/preact-query 5.103.1 → 5.103.2 Dependent
@tanstack/preact-query-devtools 5.103.1 → 5.103.2 Dependent
@tanstack/preact-query-persist-client 5.103.1 → 5.103.2 Dependent
@tanstack/query-async-storage-persister 5.103.1 → 5.103.2 Dependent
@tanstack/query-broadcast-client-experimental 5.103.1 → 5.103.2 Dependent
@tanstack/query-devtools 5.103.1 → 5.103.2 Dependent
@tanstack/query-persist-client-core 5.103.1 → 5.103.2 Dependent
@tanstack/query-sync-storage-persister 5.103.1 → 5.103.2 Dependent
@tanstack/react-query 5.103.1 → 5.103.2 Dependent
@tanstack/react-query-devtools 5.103.1 → 5.103.2 Dependent
@tanstack/react-query-next-experimental 5.103.1 → 5.103.2 Dependent
@tanstack/react-query-persist-client 5.103.1 → 5.103.2 Dependent
@tanstack/solid-query 5.103.1 → 5.103.2 Dependent
@tanstack/solid-query-devtools 5.103.1 → 5.103.2 Dependent
@tanstack/solid-query-persist-client 5.103.1 → 5.103.2 Dependent
@tanstack/svelte-query 6.2.1 → 6.2.2 Dependent
@tanstack/svelte-query-devtools 6.2.1 → 6.2.2 Dependent
@tanstack/svelte-query-persist-client 6.2.1 → 6.2.2 Dependent
@tanstack/vue-query 5.103.1 → 5.103.2 Dependent
@tanstack/vue-query-devtools 6.2.1 → 6.2.2 Dependent

@pkg-pr-new

pkg-pr-new Bot commented Sep 19, 2026

Copy link
Copy Markdown
More templates

@tanstack/angular-query-experimental

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

@tanstack/eslint-plugin-query

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

@tanstack/lit-query

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

@tanstack/preact-query

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

@tanstack/preact-query-devtools

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

@tanstack/preact-query-persist-client

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

@tanstack/query-async-storage-persister

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

@tanstack/query-broadcast-client-experimental

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

@tanstack/query-core

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

@tanstack/query-devtools

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

@tanstack/query-persist-client-core

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

@tanstack/query-sync-storage-persister

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

@tanstack/react-query

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

@tanstack/react-query-devtools

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

@tanstack/react-query-next-experimental

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

@tanstack/react-query-persist-client

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

@tanstack/solid-query

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

@tanstack/solid-query-devtools

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

@tanstack/solid-query-persist-client

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

@tanstack/svelte-query

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

@tanstack/svelte-query-devtools

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

@tanstack/svelte-query-persist-client

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

@tanstack/vue-query

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

@tanstack/vue-query-devtools

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

commit: e3e090e

@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size
react full 11.87 KB (0%)
react minimal 8.85 KB (0%)

@sukvvon
sukvvon force-pushed the docs/mutation-options-jsdoc branch from e3e090e to 00d865b Compare September 19, 2026 07:50
@sukvvon sukvvon changed the title docs(query-core): add JSDoc for mutation options docs(query-core): add JSDoc for 'MutationOptions' Sep 19, 2026
@sukvvon
sukvvon merged commit 8f6d322 into main Sep 19, 2026
8 checks passed
@sukvvon
sukvvon deleted the docs/mutation-options-jsdoc branch September 19, 2026 07:51
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.

1 participant