···11-import { createPagesFunctionHandler } from "@remix-run/cloudflare-pages";
11+import { createPagesFunctionHandler } from "@react-router/cloudflare";
2233// eslint-disable-next-line @typescript-eslint/ban-ts-comment
44// @ts-ignore - the server build file is generated by `remix vite:build`
···11+import type { Config } from "@react-router/dev/config";
22+export default {
33+ ssr: true,
44+ appDirectory: './src/app',
55+} satisfies Config;
+2-1
server.ts
···11import { getAssetFromKV } from "@cloudflare/kv-asset-handler";
22-import { createRequestHandler, type ServerBuild } from "@remix-run/cloudflare";
22+import { createRequestHandler } from "@react-router/cloudflare";
33+import { type ServerBuild } from "react-router";
34// eslint-disable-next-line @typescript-eslint/ban-ts-comment
45// @ts-ignore This file won’t exist if it hasn’t yet been built
56import * as build from "./build/server"; // eslint-disable-line import/no-unresolved
+2-2
src/app/entry.client.tsx
···44 * For more information, see https://remix.run/file-conventions/entry.client
55 */
6677-import { RemixBrowser } from "@remix-run/react";
77+import { HydratedRouter } from "react-router/dom";
88import { startTransition, StrictMode } from "react";
99import { hydrateRoot } from "react-dom/client";
1010···1212 hydrateRoot(
1313 document,
1414 <StrictMode>
1515- <RemixBrowser />
1515+ <HydratedRouter />
1616 </StrictMode>
1717 );
1818});
+5-5
src/app/entry.server.tsx
···44 * For more information, see https://remix.run/file-conventions/entry.server
55 */
6677-import type { AppLoadContext, EntryContext } from "@remix-run/cloudflare";
88-import { RemixServer } from "@remix-run/react";
77+import type { AppLoadContext, EntryContext } from "react-router";
88+import { ServerRouter } from "react-router";
99import { isbot } from "isbot";
1010import { renderToReadableStream } from "react-dom/server";
1111···1515 request: Request,
1616 responseStatusCode: number,
1717 responseHeaders: Headers,
1818- remixContext: EntryContext,
1818+ reactRouterContext: EntryContext,
1919 // This is ignored so we can keep it in the template for visibility. Feel
2020 // free to delete this parameter in your app if you're not using it!
2121 // eslint-disable-next-line @typescript-eslint/no-unused-vars
···2525 const timeoutId = setTimeout(() => controller.abort(), ABORT_DELAY);
26262727 const body = await renderToReadableStream(
2828- <RemixServer
2929- context={remixContext}
2828+ <ServerRouter
2929+ context={reactRouterContext}
3030 url={request.url}
3131 abortDelay={ABORT_DELAY}
3232 />,