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();