Skip to content

Commit ce0d210

Browse files
ikhbaaalllrphlmr
andauthored
fix: resolve build cloudflare in react 19 (#74)
* fix: resolve build cloudflare in react 19 * Scope react version check to cloudflare runtime --------- Co-authored-by: rphlmr <20722140+rphlmr@users.noreply.github.com>
1 parent 5064961 commit ce0d210

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

src/dev.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import bunAdapter from "@hono/vite-dev-server/bun";
66
import nodeAdapter from "@hono/vite-dev-server/node";
77
import type { Config as ReactRouterConfig } from "@react-router/dev/config";
88
import type { Plugin, UserConfig } from "vite";
9+
import { getReactVersion } from "./helpers";
910
import type { Runtime } from "./types/runtime";
1011

1112
type MetaEnv<T> = {
@@ -77,7 +78,7 @@ export function reactRouterHonoServer(options: ReactRouterHonoServerPluginOption
7778
`;
7879
}
7980
},
80-
config(config) {
81+
async config(config) {
8182
pluginConfig = resolvePluginConfig(config, options);
8283

8384
if (!pluginConfig) {
@@ -120,15 +121,20 @@ export function reactRouterHonoServer(options: ReactRouterHonoServerPluginOption
120121
reactRouterBuildFile = "assets/server-build.js";
121122
}
122123

124+
let alias = undefined;
125+
126+
if (runtime === "cloudflare") {
127+
const reactVersion = await getReactVersion();
128+
129+
alias = {
130+
"react-dom/server": reactVersion >= 19 ? "react-dom/server.edge" : "react-dom/server.browser",
131+
};
132+
}
133+
123134
return {
124135
...baseConfig,
125136
resolve: {
126-
alias:
127-
runtime === "cloudflare"
128-
? {
129-
"react-dom/server": "react-dom/server.browser",
130-
}
131-
: undefined,
137+
alias,
132138
},
133139
build: {
134140
// https://vite.dev/config/build-options#build-target

src/helpers.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,11 @@ export async function importBuild(): Promise<ServerBuild> {
166166
export function createGetLoadContext(getLoadContext: HonoServerOptionsBase<Env>["getLoadContext"]) {
167167
return getLoadContext;
168168
}
169+
170+
/**
171+
* Retrieves the major React version from node_modules
172+
*/
173+
export async function getReactVersion() {
174+
const reactVersion = await import("react");
175+
return Number.parseInt(reactVersion?.version.split(".")[0]);
176+
}

0 commit comments

Comments
 (0)