Convex CommunityCCConvex Community
Powered by
deecafD
Convex Community•9mo ago•
3 replies
deecaf

Error: Invalid hook call. (useQuery inside useEffect)

Hi, I'm using clerk + convex in Expo.
I'm trying to load user data once the user is set on sign-in from clerk's useUser hook. To do this, I have placed the useQuery hook inside useEffect, which is causing this error. I have also tried putting the useQuery call inside useCallback - that did not throw an error but did not work as intended. Could anyone please suggest me a proper way to achieve this? Thanks.

code:
export default function SignIn() {
    const { user } = useUser();
  
    function getData(id: string) {
      const userData = useQuery(api.users.getUserByClerkId, {
        clerkId: id,
      });
    }
    useEffect(() => {
      if (user) {
        getData(user.id);
      }
    }, [user]);
  
    return (...)
}
export default function SignIn() {
    const { user } = useUser();
  
    function getData(id: string) {
      const userData = useQuery(api.users.getUserByClerkId, {
        clerkId: id,
      });
    }
    useEffect(() => {
      if (user) {
        getData(user.id);
      }
    }, [user]);
  
    return (...)
}

error:
 ERROR  Warning: Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.

This error is located at:

  10 |
  11 | export const SignIn = () => {
> 12 |   const { user } = useUser();
     |                           ^
  13 |
  14 |   const [clerkId, setClerkId] = useState<string>("");
  15 |   function getData(id: string) {

Call Stack
  SignIn (app/(auth)/sign-in.tsx:12:27)
  ScreenContentWrapper (<anonymous>)
  RNSScreenStack (<anonymous>)
  Layout(./(auth)/_layout.tsx) (<anonymous>)
  InitialLayout (<anonymous>)
  RootLayout(./_layout.tsx) (<anonymous>)
  RNCSafeAreaProvider (<anonymous>)
  App (<anonymous>)
  ErrorOverlay (<anonymous>)
 ERROR  Warning: Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.

This error is located at:

  10 |
  11 | export const SignIn = () => {
> 12 |   const { user } = useUser();
     |                           ^
  13 |
  14 |   const [clerkId, setClerkId] = useState<string>("");
  15 |   function getData(id: string) {

Call Stack
  SignIn (app/(auth)/sign-in.tsx:12:27)
  ScreenContentWrapper (<anonymous>)
  RNSScreenStack (<anonymous>)
  Layout(./(auth)/_layout.tsx) (<anonymous>)
  InitialLayout (<anonymous>)
  RootLayout(./_layout.tsx) (<anonymous>)
  RNCSafeAreaProvider (<anonymous>)
  App (<anonymous>)
  ErrorOverlay (<anonymous>)
Screenshot_2025-06-06_at_5.09.44_PM.png
Screenshot_2025-06-06_at_5.10.06_PM.png
Convex Community banner
Convex CommunityJoin
Join the Convex Discord! Explore Convex, the backend platform that keeps your app in sync.
15,138Members
Resources
Recent Announcements

Similar Threads

Was this page helpful?
Recent Announcements
james

Hi @everyone with everything going on today I forgot to post on discord about our EU launch! We have a region in Dublin now! You can start using it immediately, even for folks on the free plan. https://news.convex.dev/we-finally-got-our-eu-visa/ Stay tuned for more regions but also stay tuned for more infra improvements where we improve latency for teams no matter where their servers are located. Just at the tip of the iceberg re all the optimizations we have lined up.

james · 4d ago

Wayne

Hi @everyone happy Monday. Components Authoring [Challenge](https://www.convex.dev/components/challenge) updates! Meet the second batch of community-approved components **Firecrawl Scrape **- Scrape any URL and get clean markdown, HTML, screenshots, or structured JSON - with durable caching and reactive queries. https://www.convex.dev/components/firecrawl-scrape Built by: Gitmaxd **Durable Agents **- A Convex component for building durable AI agents with an async tool loop. https://www.convex.dev/components/durable-agents Built by: Siegfried **Convex Debouncer** - A server-side debouncing component for debouncing expensive operations like LLM calls, metrics computation, or any heavy processing that should only run after a period of inactivity. https://www.convex.dev/components/debouncer Built by: Ilya **DatabaseChat **- A Convex component for adding natural language database queries to your app. https://www.convex.dev/components/database-chat Built by: Nick **Transloadit** - A Convex component for creating Transloadit Assemblies, handling resumable uploads with status, and persisting status/results in Convex. https://www.convex.dev/components/transloadit Built by: Kvz **Loops** - A Convex component for integrating with Loops.so email marketing platform. https://www.convex.dev/components/loops Built by: Bobby The [challenge](https://www.convex.dev/components/challenge) is now ongoing, so keep building, and we'll keep rewarding. Thanks, everyone!

Wayne · 3w ago

Liz C

Hi everyone! Have you ever wanted to get your hands on some convex swag? Well you're in luck! We just launched our Convex swag store. Check it out here ---> https://store.convex.dev/

Liz C · 3w ago

Similar Threads

Disable useQuery hook
M ZeeshanMM Zeeshan / support-community
2y ago
useQuery Error Handling in Custom hook
the_jozikaTthe_jozika / support-community
8mo ago
query inside a useEffect
burnstony#1975Bburnstony#1975 / support-community
2y ago
Problems using useQuery inside a Context
patochemPpatochem / support-community
3y ago