Starting a brand-new app, no strong opinions yet -> quickstart-file-based (Ch 1). Smallest file-based setup, closest to what create-tsrouter-app scaffolds.
Want to see routing without any code generation step -> quickstart (Ch 2). Same app, routes defined inline with createRoute.
Need nested layouts, pathless layout routes, or a $postId param route as a template -> basic-file-based (Ch 3).
Building without the Vite plugin at all (e.g. a constrained bundler setup) -> basic (Ch 4). Code-based, with a .lazy.tsx split for the route component.
Want a realistic multi-section app to copy wholesale (auth, dashboard, invoices, nested layouts, route groups) -> kitchen-sink-file-based (Ch 5), or kitchen-sink-react-query-file-based (Ch 6) if you also want TanStack Query wired in.
Need server-side rendering -> basic-ssr-file-based (Ch 7); add basic-ssr-streaming-file-based (Ch 8) if some loader data is slow and shouldn't block the whole page.
Have a slow, non-critical data dependency (comments, recommendations) that shouldn't block first paint -> deferred-data (Ch 9).
App will have dozens/hundreds of routes and you're worried about route-tree scale -> large-file-based (Ch 10).
A route needs sensible fallback values when search params are missing from the URL -> basic-default-search-params (Ch 11).
Need runtime-validated, typed search params and already use Zod, Valibot, or ArkType -> search-validator-adapters (Ch 12).
Building a photo grid, modal-over-list, or any UI where the visible URL should differ from the matched route -> location-masking (Ch 13).
Need to stop a user from navigating away from an unsaved form -> navigation-blocking (Ch 14).
Long list/detail pages losing scroll position on back-navigation -> scroll-restoration (Ch 15).
Want animated page transitions using the native browser API instead of a JS animation library -> view-transitions (Ch 16).
Need a login-gated section of the app (dashboard, invoices, etc.) -> authenticated-routes (Ch 17). Cleanest, most focused auth-guard example (vs. the auth logic embedded inside kitchen-sink-*).
Fetching server data with TanStack Query and want loader + component to share one cache entry -> basic-react-query (Ch 18).
Already have (or want) a tRPC backend and want end-to-end typed loaders -> with-trpc-react-query (Ch 19).
Want route-level enter/exit animations via a JS animation library instead of View Transitions -> with-framer-motion (Ch 20).
Building a multi-language app -> i18n-paraglide (Ch 21).
Splitting the router itself across a pnpm/turborepo workspace -> router-monorepo-simple (Ch 22) as the baseline; router-monorepo-simple-lazy (Ch 23) once bundle size across packages matters; router-monorepo-react-query (Ch 24) once a shared query-options package is also needed.