# err-error-boundaries: Use Error Boundaries with useQueryErrorResetBoundary ## Priority: HIGH ## Explanation When using Suspense with TanStack Query, errors propagate to error boundaries. Use `useQueryErrorResetBoundary` to reset query errors when users retry, preventing stuck error states. ## Bad Example ```tsx // Error boundary without query reset - retry may not work function ErrorBoundary({ children }: { children: React.ReactNode }) { return ( (

Error: {error.message}

{/* resetErrorBoundary alone doesn't reset query state */}
)} > {children}
) } // Query error persists after retry click ``` ## Good Example ```tsx import { useQueryErrorResetBoundary } from '@tanstack/react-query' import { ErrorBoundary } from 'react-error-boundary' function QueryErrorBoundary({ children }: { children: React.ReactNode }) { const { reset } = useQueryErrorResetBoundary() return ( (

Something went wrong

{error.message}
)} > {children}
) } // Usage with Suspense function App() { return ( }> ) } function Posts() { // useSuspenseQuery throws on error, caught by boundary const { data } = useSuspenseQuery({ queryKey: ['posts'], queryFn: fetchPosts, }) return } ``` ## Good Example: With TanStack Router ```tsx // Route-level error handling import { createFileRoute } from '@tanstack/react-router' import { useQueryErrorResetBoundary } from '@tanstack/react-query' export const Route = createFileRoute('/posts')({ loader: ({ context: { queryClient } }) => queryClient.ensureQueryData(postQueries.list()), errorComponent: ({ error, reset }) => { const { reset: resetQuery } = useQueryErrorResetBoundary() return (

Failed to load posts: {error.message}

) }, component: PostsPage, }) ``` ## Error Boundary Placement Strategy ```tsx // Granular error boundaries for isolated failures function Dashboard() { return (
{/* Each section can fail independently */} }> }> }>
) } ``` ## Context - `useQueryErrorResetBoundary` clears error state for all queries in the boundary - Always pair Suspense queries with error boundaries - Place boundaries based on failure isolation needs - Consider inline error handling for non-critical data - The reset only affects queries that were in error state