#"Upgrading" from TanStack Router to Start

24 messages · Page 1 of 1 (latest)

odd kelp
#

you can just upgrade to start simply to use SSR

#

you don't need to use any of the other server stuff like server functions if you don't want to

#

we don't have a dedicated upgrade guide yet, but you can just follow this guide and skip the router stuff as you already have that set up

odd kelp
#

let me know if you encounter any issues

#

so we can properly document this

stark flare
odd kelp
#

where is the auth part?

stark flare
# odd kelp where is the auth part?

It was in main.tsx

export function RouterWithAuthContext() {
  const { data: auth, isPending, error } = useSession();

  if (!isPending && !error) {
    return <RouterProvider router={router} context={{ auth }} />;
  }
}

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <QueryClientProvider client={queryClient}>
      <RouterWithAuthContext />
    </QueryClientProvider>
  </StrictMode>
);

https://github.com/catalinpit/learn-platform/pull/17/files#diff-d44e9e9aff3ba788632e2a3fce4725a069a66582be2291fee23f9101b4555f08

odd kelp
#

yeah that won't work with start

#

ideally don't have the auth depending on react

#

so you can use it in a beforeLoad

stark flare
#

Thank you!

stark flare
# odd kelp so you can use it in a beforeLoad

I try to do this in __root.tsx but my app doesn't load. Am I doing something wrong?

export const Route = createRootRouteWithContext<MyRouterContext>()({
  beforeLoad: async ({ context }) => {
    const data = await context.queryClient.fetchQuery({
      queryKey: ['user'],
      queryFn: () => fetchUser(),
    });

    return {
      user: data,
    }
  },
odd kelp
#

what does "doesn't load" mean?

#

is fetchUser executing?

stark flare
odd kelp
#

any server side logs?

stark flare
# odd kelp any server side logs?

Nope. This is my fetching function

import { createServerFn } from "@tanstack/react-start";
import { getWebRequest } from "@tanstack/react-start/server";
import { getSession } from "../auth-client";

export const fetchUser = createServerFn({ method: "GET"}).handler(async () => {
    const { headers } = getWebRequest();
    const { data } = await getSession({ fetchOptions: { headers } });
    
    return data?.user || null;
});
odd kelp
#

it should work in root as well

#

however only checking the session the authenticated section makes sense