From 8d058f02dd55bd0bc621b63f83e4b83d4018f900 Mon Sep 17 00:00:00 2001 From: Adrian Bonpin Date: Sat, 25 Apr 2026 13:23:52 +0800 Subject: [PATCH] fix(eden): resolve server/client detection and bundler issues - Use typeof window === undefined for standard Next.js server detection - Use NEXT_PUBLIC_SITE_URL env var instead of hardcoded localhost:3000 - Use require() for server branch to prevent Elysia from entering client bundle - Add type assertion on require() to preserve Eden Treaty types --- lib/eden.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/eden.ts b/lib/eden.ts index 39435ac..30c5107 100644 --- a/lib/eden.ts +++ b/lib/eden.ts @@ -1,7 +1,10 @@ import { treaty } from "@elysia/eden" -import { app } from "@/app/api/[[...slugs]]/route" +import type { App } from "@/app/api/[[...slugs]]/route" +// Use require() on the server branch to prevent the client bundler from +// pulling in Elysia and the route module. The typeof window check is the +// standard Next.js server-vs-client guard. export const api = - typeof process !== "undefined" - ? treaty(app).api - : treaty("localhost:3000").api + typeof window === "undefined" + ? treaty((require("../../app/api/[[...slugs]]/route") as { app: App }).app).api + : treaty(process.env.NEXT_PUBLIC_SITE_URL || "http://localhost:3000").api