connect-query-es: Getting "No QueryClient set, use QueryClientProvider to set one" error in version 1.0.0

Attempting to use connect-query by following the Quickstart documentation in a Next JS app but having issues. Receiving this error when useQuery is called…

No QueryClient set, use QueryClientProvider to set one

The problem appears to be with the wrapper around the @tanstack/react-query useQuery as using the original hook does not result in this error.

My app uses Yarn workspaces so thought it might be an issue with module resolution with my specific environment however I have tried creating a brand new Next JS app with NPM and still getting the same error. I have also tried different node versions and @tanstack/react-query versions.

This is the code, which is very close to the example in the docs…

import { TransportProvider, useQuery } from "@connectrpc/connect-query";
import { createConnectTransport } from "@connectrpc/connect-web";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { getUsers } from "clients/dist/user/user-UserService_connectquery";

const finalTransport = createConnectTransport({
  baseUrl: "",
});

const queryClient = new QueryClient();

export default function Web() {
  return (
    <TransportProvider transport={finalTransport}>
      <QueryClientProvider client={queryClient}>
        <Content />
      </QueryClientProvider>
    </TransportProvider>
  );
}

const Content = () => {
  const query = useQuery(getUsers);
  return <div>{query.data?.users.length}</div>;
};
// package.json
"@bufbuild/protobuf": "~1.3.0",
"@connectrpc/connect": "^1.1.2",
"@connectrpc/connect-query": "^1.0.0",
"@connectrpc/connect-web": "^1.1.2",
"@tanstack/react-query": "^5.13.4",

Any help appreciated! 😄

About this issue

  • Original URL
  • State: closed
  • Created 7 months ago
  • Reactions: 1
  • Comments: 17

Commits related to this issue

Most upvoted comments

Alright, sorry this keeps popping up. My testing technique for this one was flawed and much too error prone. v1.1.2 should fix it for realz this time.

Hmm, I see. I think I also see where my testing failed to catch this… Back to the drawing board.

Alright, so with some help from @thomasjmwb I think we narrowed it down. This happens while using the pages directory mode with nextjs. Now I just gotta find out how we can reproduce the same module format that allows react-query to work in the same situation.

As it turns out, this issue was sorta already discovered in some other packages we publish, so after spending much too much time pulling out my hair, we at least have an easy fix.

Awesome! Working great now. Thank you @paul-sachs and @timostamm.

Thank you for the fix! Unfortunately I am still having issues in my fresh Next JS project using npm 😢 Maybe I am missing something.

I have updated to 1.1.1 and using the latest react-query. I have tried the older version from the example code too.

Here is some output with an file paths in the stack trace.

➜  cool-new-project git:(main) ✗ npm explain @tanstack/react-query
@tanstack/react-query@5.13.4
node_modules/@tanstack/react-query
  @tanstack/react-query@"^5.13.4" from the root project
  peer @tanstack/react-query@"5.x" from @connectrpc/connect-query@1.1.1
  node_modules/@connectrpc/connect-query
    @connectrpc/connect-query@"^1.1.1" from the root project

➜  cool-new-project git:(main) ✗ npm run dev

> cool-new-project@0.1.0 dev
> next dev

 ⚠ Port 3000 is in use, trying 3001 instead.
   ▲ Next.js 14.0.4
   - Local:        http://localhost:3001

 ✓ Ready in 2.2s
 ○ Compiling /_error ...
 ✓ Compiled / in 982ms (387 modules)
Error: No QueryClient set, use QueryClientProvider to set one
    at useQueryClient (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs:49:11)
    at useBaseQuery (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs:52:64)
    at useQuery (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/useQuery.cjs:30:47)
    at useQuery (/Users/james/Development/cable/cool-new-project/node_modules/@connectrpc/connect-query/dist/cjs/use-query.js:32:39)
    at Content (webpack-internal:///./src/pages/index.tsx:50:89)
    at renderWithHooks (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5658:16)
    at renderIndeterminateComponent (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5731:15)
    at renderElement (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6076:14)
    at renderContextProvider (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5920:3)
    at renderElement (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6017:11)
    at renderNodeDestructiveImpl (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5785:7)
 ⨯ Error: No QueryClient set, use QueryClientProvider to set one
    at useQueryClient (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs:49:11)
    at useBaseQuery (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs:52:64)
    at useQuery (/Users/james/Development/cable/cool-new-project/node_modules/@tanstack/react-query/build/modern/useQuery.cjs:30:47)
    at useQuery (/Users/james/Development/cable/cool-new-project/node_modules/@connectrpc/connect-query/dist/cjs/use-query.js:32:39)
    at Content (webpack-internal:///./src/pages/index.tsx:50:89)
    at renderWithHooks (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5658:16)
    at renderIndeterminateComponent (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5731:15)
    at renderElement (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6076:14)
    at renderContextProvider (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5920:3)
    at renderElement (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6017:11)
    at renderNodeDestructiveImpl (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (/Users/james/Development/cable/cool-new-project/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5785:7) {
  page: '/'
}
^C

🚀 Released with v1.1.1

Thanks for the incredibly speedy fix!

I’m able to reproduce this issue using connect-query 1.1.0 using npm: package.json:

    "resolutions": {
      "@tanstack/react-query": "5.13.4"
    },
  "dependencies": {
    "@connectrpc/connect": "^1.1.4",
    "@connectrpc/connect-query": "^1.1.0",
    "@connectrpc/connect-web": "^1.1.4",
    "@tanstack/react-query": "^5.13.4",
    "@tanstack/react-query-devtools": "^5.13.4",

npm explain:

npm explain @tanstack/react-query
@tanstack/react-query@5.13.4
node_modules/@tanstack/react-query
  @tanstack/react-query@"^5.13.4" from the root project
  peer @tanstack/react-query@"5.x" from @connectrpc/connect-query@1.1.0
  node_modules/@connectrpc/connect-query
    @connectrpc/connect-query@"^1.1.0" from the root project
  peer @tanstack/react-query@"^5.13.4" from @tanstack/react-query-devtools@5.13.5
  node_modules/@tanstack/react-query-devtools
    @tanstack/react-query-devtools@"^5.13.4" from the root project
npm explain @connectrpc/connect-query
@connectrpc/connect-query@1.1.0
node_modules/@connectrpc/connect-query
  @connectrpc/connect-query@"^1.1.0" from the root project

I think this may be a problem with our peerDependency on @tanstack/react-query being too restrictive. I’ll make a PR to loosen that up a little, but to confirm, can you try adding a resolution to your package.json to enforce a unified version of the package?

{
  "resolutions": {
    "@tanstack/react-query": "5.13.4"
  }
}