import React from "react" import ReactDOM from "react-dom/client" import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { RouterProvider } from "@tanstack/react-router" import { router } from "./app/router" import { AppErrorBoundary } from "./components/AppErrorBoundary" import { hashUmleiten } from "./lib/hashUmleitung" import { veralteteVersionAbfangen } from "./lib/veralteteVersion" import "./index.css" // Beides MUSS vor dem ersten Rendern laufen: // · hashUmleiten — alte Lesezeichen (#models) landen auf dem neuen Pfad (/modelle), // bevor der Router die Adresse zum ersten Mal liest (P2). // · veralteteVersionAbfangen — nach einem Deploy sucht ein offener Tab Nachlade-Chunks // des alten Builds, die es nicht mehr gibt (P1). hashUmleiten() veralteteVersionAbfangen() // Zentraler Daten-Layer: Caching, Dedup, Retry, Polling pro Query-Hook. const queryClient = new QueryClient({ defaultOptions: { queries: { retry: 1, refetchOnWindowFocus: false, staleTime: 5_000, }, }, }) // AppErrorBoundary bleibt als LETZTES Netz stehen — für Fehler außerhalb jeder Route // (Provider, Router selbst). Innerhalb der Routen fängt seit P2 jede Ansicht für sich // (app/router.tsx → errorComponent), damit ein Absturz nicht die ganze Shell mitnimmt. ReactDOM.createRoot(document.getElementById("root")!).render( , )