Loaders and Prefetching
TanStack Start routes can have isomorphic loader functions that run on the server for the initial pageload and on the client for subsequent client-side navigations.
These three links navigate to subpages that show chat messages from different channels. Notice how client navigations between these pages work differently.
Awaiting ensureQueryData will block rendering of the page until that data is available and calling prefetchQuery will start the request but not block. Loaders also run during prefetching, triggered by the cursor mousing onto a link in TanStack Start by default.
When to use a loader
Loading a query in a loader ejects from the convenience of component-local reasoning through useSuspenseQuery where a component fetching its own data to the cold reality of fast page loads when you need it.
Hi Emma! how was your weekend?
hello Jamie- I'll be late to make the meeting tomorrow morning
Hi Jamie; how's the weather in SF?
hi Nipunn, what's your favorite ice cream place?
Hi Jamie! Could you let the customer know we've fixed their issue?
hello Jamie... how's the weather in SF?
hey Emma; how was your weekend?
hi Jamie, Could you let the customer know we've fixed their issue?
hi James- how's the weather in SF?
hello James; what's your favorite ice cream place?
hi James... what's your favorite ice cream place?
hi Nipunn... how was your weekend?
hi Emma- how was your weekend?
hi Emma... I'll be late to make the meeting tomorrow morning
hi Jamie... what's your favorite ice cream place?
Hi James; what's your favorite ice cream place?
Hi James... Could you let the customer know we've fixed their issue?
hey Nipunn, how's the weather in SF?
hello Jamie- Could you let the customer know we've fixed their issue?
Hi Emma- how's the weather in SF?
1export const Route = createFileRoute('/loaders/ensure')({2 loader: async (opts) => {3 await opts.context.queryClient.ensureQueryData(4 convexQuery(api.messages.list, {}),5 );6 },7 component: () => {8 const { data } = useQuery(9 convexQuery(api.messages.list, {})10 );11 },12})
Learn More
Tanner's An Early Glimpse of TanStack Start video