Dev Highlights

Доки по разработке

This project is maintained by teniryte

11. Devtools и диагностика производительности

React Query Devtools должны быть включены почти в каждом проекте на этапе разработки. Это самый быстрый способ понять:

Подключение

import { ReactQueryDevtools } from '@tanstack/react-query-devtools'

<QueryClientProvider client={queryClient}>
  <App />
  {import.meta.env.DEV ? <ReactQueryDevtools initialIsOpen={false} /> : null}
</QueryClientProvider>

Что смотреть в Devtools

Если у вас странное поведение, Devtools почти всегда показывают, проблема в:

На что смотреть первым

  1. Совпадает ли queryKey с тем, что вы ожидаете.
  2. Не stale ли запрос мгновенно из-за staleTime: 0.
  3. Нет ли лишних observers.
  4. Не срабатывает ли refetchOnWindowFocus.
  5. Нет ли лишних invalidation после mutation.

useIsFetching и useIsMutating

const globalFetching = useIsFetching()
const globalMutating = useIsMutating()

Это хороший способ быстро понять, реально ли приложение “занято”, или проблема только в одном локальном компоненте.

Подписка на cache events

const unsubscribe = queryClient.getQueryCache().subscribe((event) => {
  if (event?.type === 'updated') {
    console.debug('Query updated', event.query.queryKey)
  }
})

Это полезно для:

Что означает много ререндеров

Сначала проверьте:

TanStack Query по умолчанию оптимизирует tracked properties, но это легко испортить неудачным паттерном кода.

Отличайте сетевую и React-проблему

Если Devtools показывают мало query updates, а компонент всё равно часто ререндерится, проблема, скорее всего, не в TanStack Query, а в родительском React-дереве.

Практические признаки проблем

Полезные привычки