Guide to Dependent Queries in React Query

In React Query, dependent queries let developers orchestrate data fetching where one query depends on the result of another. This guide delves into the nuances of implementing dependent queries effectively in React Query.

What are dependent queries in React Query?

Dependent queries are a sequence of queries where the execution of one query is contingent on the result of another. In React Query, this pattern is often used when the data fetched by one query is needed to fetch additional data.

Example use case

Consider a scenario where you need to fetch a user's profile and then, based on that profile, fetch their specific preferences. The query to fetch preferences is dependent on the user's profile data.

How to implement dependent queries in React Query

Setting up the first query

Begin by setting up the initial query. This query is independent and serves as the starting point.

import { useQuery } from 'react-query'; const useUserProfile = () => { return useQuery('userProfile', fetchUserProfile); };

Creating the dependent query

The second query is dependent on the data from the first query. Use the data from the first query as a parameter to fetch additional data.

const useUserPreferences = (profile) => { return useQuery(['userPreferences', profile.id], () => fetchUserPreferences(profile.id), { // Enable the query only if the profile data is available enabled: !!profile, }); };

Integrating dependent queries in components

In your component, first call the independent query. Then, based on its result, call the dependent query.

const UserProfileComponent = () => { const { data: userProfile, isLoading: isProfileLoading } = useUserProfile(); const { data: userPreferences, isLoading: isPreferencesLoading } = useUserPreferences(userProfile); if (isProfileLoading || isPreferencesLoading) { return <div>Loading...</div>; } return ( <div> {/* Render user profile and preferences */} </div> ); };

Handling loading and error states

Manage loading and error states for both queries to ensure a smooth user experience.

if (isProfileLoading) return <div>Loading profile...</div>; if (isPreferencesLoading) return <div>Loading preferences...</div>; if (error) return <div>An error occurred: {error.message}</div>;

Advanced patterns

Sequential dependent queries

In more complex scenarios, you may have several levels of dependency. Chain these queries carefully, ensuring each subsequent query depends on the data from the previous one.

Refetching on dependency change

Use the enabled option to refetch a dependent query whenever its dependency changes. This is useful in dynamic applications where the dependency may change frequently.

Optimizing with select

Utilize the select option in useQuery to transform or select a portion of the data from a query. This can be particularly useful when the dependent query only needs a specific part of the data from its dependency.


Dependent queries in React Query require careful orchestration to ensure data dependencies are managed correctly. By following these guidelines, developers can implement dependent queries that are efficient, maintainable, and enhance the user experience in React applications.

Invite only

We're building the next generation of data visualization.