# ctx-root-context: Define Context at Root Route ## Priority: LOW ## Explanation Use `createRootRouteWithContext` to define typed context that flows through your entire route tree. This enables dependency injection for things like query clients, auth state, and services. ## Bad Example ```tsx // No context - importing globals directly // routes/__root.tsx import { createRootRoute } from '@tanstack/react-router' import { queryClient } from '@/lib/query-client' // Global import export const Route = createRootRoute({ component: RootComponent, }) // routes/posts.tsx import { queryClient } from '@/lib/query-client' // Import again export const Route = createFileRoute('/posts')({ loader: async () => { // Using global - harder to test, couples to implementation return queryClient.ensureQueryData(postQueries.list()) }, }) ``` ## Good Example ```tsx // routes/__root.tsx import { createRootRouteWithContext, Outlet } from '@tanstack/react-router' import { QueryClient } from '@tanstack/react-query' // Define the context interface interface RouterContext { queryClient: QueryClient auth: { user: User | null isAuthenticated: boolean } } export const Route = createRootRouteWithContext()({ component: RootComponent, }) function RootComponent() { return ( <>