an appview-less Bluesky client using Constellation and PDS Queries reddwarf.app
frontend spa bluesky reddwarf microcosm
1import { StrictMode } from "react"; 2import ReactDOM from "react-dom/client"; 3import { RouterProvider, createRouter } from "@tanstack/react-router"; 4 5// Import the generated route tree 6import { routeTree } from "./routeTree.gen"; 7 8import "~/styles/app.css"; 9import reportWebVitals from "./reportWebVitals.ts"; 10import { QueryClient, QueryClientProvider, } from "@tanstack/react-query"; 11import { 12 persistQueryClient, 13} from "@tanstack/react-query-persist-client"; 14import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister"; 15 16 17const queryClient = new QueryClient({ 18 defaultOptions: { 19 queries: { 20 gcTime: 1000 * 60 * 60 * 24 * 24, // 24 days 21 }, 22 }, 23}); 24const localStoragePersister = createSyncStoragePersister({ 25 storage: window.localStorage, 26}); 27 28persistQueryClient({ 29 queryClient, 30 persister: localStoragePersister, 31}) 32 33// Create a new router instance 34const router = createRouter({ 35 routeTree, 36 context: { queryClient }, 37 defaultPreload: "intent", 38 scrollRestoration: true, 39 defaultStructuralSharing: true, 40 defaultPreloadStaleTime: 0, 41}); 42 43// Register the router instance for type safety 44declare module "@tanstack/react-router" { 45 interface Register { 46 router: typeof router; 47 } 48} 49 50// Render the app 51const rootElement = document.getElementById("app"); 52if (rootElement && !rootElement.innerHTML) { 53 const root = ReactDOM.createRoot(rootElement); 54 root.render( 55 // double queries annoys me 56 // <StrictMode> 57 <QueryClientProvider client={queryClient}> 58 <RouterProvider router={router} /> 59 </QueryClientProvider> 60 // </StrictMode> 61 ); 62} 63 64// If you want to start measuring performance in your app, pass a function 65// to log results (for example: reportWebVitals(// /*mass comment*/ console.log)) 66// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 67reportWebVitals();