# nextjs-tanstack-query

Задаёт стандарты связки Next.js App Router и TanStack Query v5. Направляет Cursor при настройке гидратации кэша, серверных мутаций и оптимистичных обновлений интерфейса.

- правило · `type=rule` · Cursor · ★ 41024
- Автор: PatrickJS
- Лицензия: CC0-1.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/PatrickJS/awesome-cursorrules/tree/HEAD/rules/nextjs-tanstack-query.mdc
- Обновлён: 2026-05-30
- HTML: https://affpapa.org/nevibecode/rules/nextjs-tanstack-query

## Что делает

Правило задаёт стандарты для Next.js App Router и TanStack Query v5. Серверные компоненты получают данные напрямую без вызова хуков. Начальное состояние передаётся на клиент через `prefetchQuery` и обёртку `HydrationBoundary`. Для каждого серверного запроса создаётся свой `QueryClient`. Повторное использование инстанса на сервере приведёт к утечке данных между пользователями.

В клиентских компонентах запрещены прямые вызовы `fetch`. Запросы оформляются через фабрики `queryOptions`. Мутации вызывают Server Actions внутри `mutationFn` и сбрасывают кэш через `invalidateQueries`. Для оптимистичного интерфейса описан откат состояния через `onError`.

Правило отслеживает пути `app/**/*.tsx`, `app/**/*.ts`, `src/app/**/*.tsx` и `src/queries/**/*`. Все компоненты с хуками библиотеки помечаются директивой `'use client'`.

## Установка

### Cursor (родная платформа)

**Вручную: положить файлы**
- Файл: `.cursor/rules/nextjs-tanstack-query.mdc` — Во frontmatter: description, globs, alwaysApply

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/nextjs-tanstack-query.md` — Поле paths во frontmatter ограничивает файлы: globs из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/instructions/nextjs-tanstack-query.instructions.md` — Поле applyTo задаёт, к каким файлам применять: globs из источника → applyTo

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/nextjs-tanstack-query.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/nextjs-tanstack-query.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/PatrickJS/awesome-cursorrules/tree/HEAD/rules/nextjs-tanstack-query.mdc

## Когда брать
- настроить гидратацию серверного кэша TanStack Query в компонентах
- организовать мутации данных через Server Actions
- внедрить оптимистичные обновления интерфейса с откатом ошибок
- создать фабрики запросов через queryOptions

## Примеры запросов агенту
- Сделай серверный компонент в `app/posts/page.tsx` с предзагрузкой постов через `prefetchQuery` и `HydrationBoundary`
- Напиши мутацию для `createPost` через Server Action с инвалидацией кэша списка
- Добавь оптимистичное обновление для `updatePost` с сохранением предыдущего состояния на случай ошибки

## Похожие
- [winui3](https://affpapa.org/nevibecode/rules/winui3.md) — правило · ★ 40451
- [vue](https://affpapa.org/nevibecode/rules/vue.md) — правило · ★ 40451
- [tanstack-start-shadcn-tailwind](https://affpapa.org/nevibecode/rules/tanstack-start-shadcn-tailwind.md) — правило · ★ 40451
- [tailwind-v4-vite](https://affpapa.org/nevibecode/rules/tailwind-v4-vite.md) — правило · ★ 40451
- [svelte](https://affpapa.org/nevibecode/rules/svelte.md) — правило · ★ 40451
- [power-bi-custom-visuals-development](https://affpapa.org/nevibecode/rules/power-bi-custom-visuals-development.md) — правило · ★ 40451

Из того же набора: [patrickjs/awesome-cursorrules](https://affpapa.org/nevibecode/by/patrickjs/awesome-cursorrules.md) — 234 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
