TanStack Start uses TanStack Router's route-level error boundaries.
// src/router.tsx import { createRouter, ErrorComponent } from '@tanstack/react-router' import { routeTree } from './routeTree.gen' export function getRouter() { const router = createRouter({ routeTree, // Shown when an error bubbles to the router defaultErrorComponent: ({ error, reset }) => ( <ErrorComponent error={error} /> ), }) return router } // src/router.tsx import { createRouter, ErrorComponent } from '@tanstack/react-router' import { routeTree } from './routeTree.gen' export function getRouter() { const router = createRouter({ routeTree, // Shown when an error bubbles to the router defaultErrorComponent: ({ error, reset }) => ( <ErrorComponent error={error} /> ), }) return router } // src/routes/posts.$postId.tsx import { createFileRoute, ErrorComponent } from '@tanstack/react-router' import type { ErrorComponentProps } from '@tanstack/react-router' function PostError({ error, reset }: ErrorComponentProps) { return <ErrorComponent error={error} /> } export const Route = createFileRoute('/posts/$postId')({ component: PostComponent, errorComponent: PostError, }) // src/routes/posts.$postId.tsx import { createFileRoute, ErrorComponent } from '@tanstack/react-router' import type { ErrorComponentProps } from '@tanstack/react-router' function PostError({ error, reset }: ErrorComponentProps) { return <ErrorComponent error={error} /> } export const Route = createFileRoute('/posts/$postId')({ component: PostComponent, errorComponent: PostError, }) Notes:
