What problem does it solve? Fetching and caching route data in TanStack Router involves subtle behaviors — loaders run on the client by default, staleTime defaults to 0, and context injection requires a factory pattern — that commonly cause bugs like unnecessary refetches, broken error retries, and TypeScript inference failures. ## Core Features & Use Cases - Route Loaders & Cache Keys: Configure loader functions with loaderDeps so only relevant search params trigger reloads, and tune staleTime/gcTime for SWR caching. - Pending, Error & Deferred States: Use pendingComponent with pendingMs/pendingMinMs, errorComponent with router.invalidate() retries, and the Await component for deferred promises. - Router Context DI: Inject auth and API clients into loaders via createRootRouteWithContext and RouterProvider context instead of calling React hooks inside loaders. - Use Case: When building a paginated posts page, declare loaderDeps for offset/limit, set a staleTime to avoid background refetches, and invalidate the router after a mutation to refresh the list. ## Quick Start Show me how to add a loader with search-param cache keys, a pending component, and an error component to my TanStack Router posts route.