You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Сейчас QueryProvider экспортируется из src/shared/providers/index.ts, а корневой app/layout.tsx знает детали композиции (QueryProvider, TooltipProvider, Toaster), что размывает границы слоев и усложняет масштабирование app-level инфраструктуры.
Нужно собрать централизованный AppProviders в app-слое и оставить в layout только единую обертку.
Технические требования
Локация логики:app/layout.tsx, новый app/providers/AppProviders.tsx, src/shared/providers/index.ts (миграция/очистка)
Контекст
Сейчас
QueryProviderэкспортируется изsrc/shared/providers/index.ts, а корневойapp/layout.tsxзнает детали композиции (QueryProvider,TooltipProvider,Toaster), что размывает границы слоев и усложняет масштабирование app-level инфраструктуры.Нужно собрать централизованный
AppProvidersв app-слое и оставить в layout только единую обертку.Технические требования
app/layout.tsx, новыйapp/providers/AppProviders.tsx,src/shared/providers/index.ts(миграция/очистка)Next.js App Router,React,@tanstack/react-query,shared/ui(TooltipProvider,Toaster)app/providers/AppProviders.tsxи собрать там app-level провайдеры (QueryClientProvider,TooltipProvider, при необходимости другие).app/layout.tsx: оставить толькоAppProvidersкак единый entrypoint провайдеров.shared/providers: убрать ответственность за app-композицию, оставить только низкоуровневые reusable-части.app/(protected)/layout.tsx(SidebarProvider,AppSidebar) и текущими страницами.Цель и критерии приемки (Definition of Done)
app/providers/AppProviders.tsx, определен порядок инициализации всех app-level providers.app/layout.tsxне содержит деталей внутренней композиции, приложение работает без регрессий в тултипах, тостах и query-данных.QueryClient.shared/providers, пройдены линтеры/типы.Важные указания
QueryClientдолжен быть стабилен в рамках жизненного цикла приложения, без пересоздания на каждый рендер.