import React from "react"; import ReactDOM from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; import App from "./App"; import { ThemeProvider } from "./context/ThemeContext"; // Deploy-skew recovery (official Vite mechanism): after a release the old // hashed chunks are deleted, so a tab still running the previous build fails // its next lazy-page import. Vite emits `vite:preloadError` for exactly this — // swallow the error and reload once, which loads the fresh index.html and new // chunk names. The timestamp guard prevents a reload loop when a chunk is // genuinely unloadable (e.g. offline): a second failure within 10 s falls // through to the normal error path. window.addEventListener("vite:preloadError", (event) => { const KEY = "vite-preload-reloaded-at"; const last = Number(sessionStorage.getItem(KEY) || 0); if (Date.now() - last < 10_000) return; sessionStorage.setItem(KEY, String(Date.now())); event.preventDefault(); window.location.reload(); }); ReactDOM.createRoot(document.getElementById("root")!).render( , );