my __root.tsx ```tsx packages/web/src/routes/__root.tsx import { Outlet, HeadContent, Scripts, createRootRouteWithContext, } from "@tanstack/react-router"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import appCss from "../styles.css?url"; import { queryClient } from "@/lib/react-query"; import { useEffect } from "react"; import { Toaster } from "@/components/ui/sonner"; import { useUser } from "@/lib/auth"; import { ThemeProvider } from "@/components/theme-provider"; interface Context { queryClient: QueryClient; } export const Route = createRootRouteWithContext()({ head: () => ({ meta: [ { charSet: "utf-8", }, { name: "viewport", content: "width=device-width, initial-scale=1", }, { title: "Brainrot.mov - Create educational tiktoks!", }, ], links: [ { rel: "stylesheet", href: appCss, }, ], }), errorComponent: ({ error }) => { return (
Error: {error.message}
); }, component: Root, }); function Root() { useEffect(() => { // Add analytics only in production if (import.meta.env.PROD) { // Add Simple Analytics script const script = document.createElement("script"); script.setAttribute("data-collect-dnt", "true"); script.setAttribute("async", ""); script.setAttribute( "src", "https://scripts.simpleanalyticscdn.com/latest.js", ); document.body.appendChild(script); // Add noscript fallback const noscript = document.createElement("noscript"); const img = document.createElement("img"); img.setAttribute( "src", "https://queue.simpleanalyticscdn.com/noscript.gif?collect-dnt=true", ); img.setAttribute("alt", ""); img.setAttribute("referrerpolicy", "no-referrer-when-downgrade"); noscript.appendChild(img); document.body.appendChild(noscript); } }, []); return ( ); } function RootDocument({ children }: { children: React.ReactNode }) { useEffect(() => { try { const theme = localStorage.getItem("theme") || "light"; document.documentElement.classList.add(theme); } catch (e) {} }, []); return ( {children} ); } // automatically refreshes user data on tab switches etc function UserRefresher() { useUser(); return <>; } ```