Skip to content

Export MutationResult type #11930

Description

@earthabledev

Describe the bug

I am trying to upgrade @tanstack/vue-query to version 5.104.0, but I am encountering a typescript error in my mutators -- the ones that use the useMutation export.

For example,

// useExampleMutation.ts

import { useMutation } from '@tanstack/vue-query'

export const useExampleMutation = () => {
  return useMutation({
    mutationFn: async () => 'ok',
  })
}

Typescript fails with the following error when reading this module:

TS2883: The inferred type of 'useExampleMutation' cannot be named without a reference to 'MutationResult' from '@tanstack/vue-query/build/modern/useMutation'. This is likely not portable. A type annotation is necessary.

Project conditions under which this error was encountered:

.nvmrc

24

package.json

{
  "dependencies": {
    "@tanstack/vue-query": "5.104.0",
    "vue": "3.5.43"
  },
  "devDependencies": {
    "@tsconfig/node24": "24.0.5",
    "@vitejs/plugin-vue": "^6.0.9",
    "typescript": "^6.0.3",
    "vite": "8.3.1",
    "vue-tsc": "^3.3.11"
  },
  "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
}

tsconfig.json

{
  "compilerOptions": {
    "composite": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "strict": true,
    "target": "esnext",
    "skipLibCheck": true
  },
  "include": ["src"]
}

tsconfig.node.json

{
  "extends": "@tsconfig/node24/tsconfig.json",
  "compilerOptions": {
    "composite": true,
    "skipLibCheck": true,
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}

I have added a link to a sandbox with the example module and relevant configs, as requested.

Your minimal, reproducible example

https://codesandbox.io/p/devbox/hvgzvv

Steps to reproduce

Assuming the project is a minimal reproduction as provided in the sandbox link:

  1. run nvm install 24 to make sure Node 24 is present
  2. run nvm use to make sure Node 24 is the active runtime
  3. run corepack install to make sure that pnpm is available
  4. run pnpm install
  5. run pnpm exec vue-tsc --build --noEmit --force to produce the typescript error

Expected behavior

Running pnpm exec vue-tsc --build --noEmit --force returns with 0 errors reported.

How often does this bug happen?

Every time

Screenshots or Videos

No response

Platform

  • OS: macOS
  • Browser: not applicable (vue-tsc)
  • Version: not applicable (vue-tsc)

Tanstack Query adapter

vue-query

TanStack Query version

v5.104.0

TypeScript version

v6.0.3

Additional context

Originally (sloppily) reported with AI "assistance" in #11769. Apologies for missing the mark on your AI Contribution Policy. I am a real developer, and this is a real problem I really encountered.

Activity

  1. DogPawHat commented on Oct 8, 2026

    @DogPawHat
    Collaborator

    I appreciate you taking the time to rewrite the issue.

    #11796

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions