@vagrant lion yeah for sure! and correct me if I am wrong! the context when you invoke createTanstackRouter seems like the perfect place to do dependency injection (in this case I passed queryClient, a random string value. This is nice as it gives you the typesafety in each routes loader and serverFns ```typescript
import { QueryClient } from "@tanstack/react-query";
import { createRouter as createTanStackRouter } from "@tanstack/react-router";
import { routerWithQueryClient } from "@tanstack/react-router-with-query";
import { routeTree } from "./routeTree.gen";
import { getCloudflareCtx } from "./utils/cloudflare";
const DefaultCatchBoundary = () => <div>DefaultCatchBoundary</div>;
const DefaultNotFound = () => <div>DefaultNotFound</div>;
export const testFn = () => "testVal";
export const getUser = async () => {
//Potentially calling db?
await new Promise((res) => setTimeout(res, 200));
return { user: "randomemail@gmail.com" };
};
export function createRouter() {
const queryClient: QueryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 1 * 1000,
},
},
});
return routerWithQueryClient(
createTanStackRouter({
routeTree,
defaultPreload: "intent",
context: { queryClient, testVal: testFn(), user: getUser() },
defaultErrorComponent: DefaultCatchBoundary,
defaultNotFoundComponent: DefaultNotFound,
}),
queryClient,
);
}
declare module "@tanstack/react-router" {
interface Register {
router: ReturnType<typeof createRouter>;
}
}