import ReactDOM from "react-dom/client"; import { getPageTitle } from "./utils"; import type { OnRenderClientAsync } from "vike/types"; import Layout from "./app"; let root: ReactDOM.Root; export const onRenderClient: OnRenderClientAsync = async ( pageContext ): ReturnType => { const { Page } = pageContext; if (!Page) throw new Error( "My onRenderClient() hook expects pageContext.Page to be defined" ); const container = document.getElementById("react-root"); if (!container) throw new Error("DOM element #react-root not found"); const page = ( ); if (pageContext.isHydration) { root = ReactDOM.hydrateRoot(container, page); } else { if (!root) { root = ReactDOM.createRoot(container); } root.render(page); } document.title = getPageTitle(pageContext); };