From 22205e6d0305d46e5c736a3dc35616548d80a6b8 Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Tue, 10 Mar 2026 17:33:49 +0000 Subject: [PATCH] fix: bundle SDK+zod in react-with-deps (was byte-identical to ./react) (#539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: remove dead ./react-with-deps export (copy-paste bug from #221) The react-with-deps build entry was introduced in PR #221 (e078250a) as a sibling to app-with-deps for CDN/unpkg no-bundler use. But its external array was duplicated without editing — it never dropped @modelcontextprotocol/sdk from externals, so it has shipped byte-identical to ./react for 10 releases (v0.3.1 → v1.2.0). After #534 merged, both entries use ['react', 'react-dom', ...PEER_EXTERNALS] — still identical, just smaller. Delete rather than fix: React apps always use a bundler; the CDN/unpkg use case (HTML-string apps like qr-server) doesn't apply to React hooks. Zero consumers verified (examples/docs/tests/plugins). * fix: bundle SDK+zod in react-with-deps (keep React external) Reverts the deletion from the previous commit and applies the actual fix. The react-with-deps external array was copy-pasted in PR #221 without dropping PEER_EXTERNALS — now it mirrors app-with-deps: bundles @modelcontextprotocol/sdk + zod for CDN/import-map consumers. React and react-dom MUST remain external — bundling them would cause dual-React-instance hooks errors. Consumer provides them via import map. Before: index.js 26KB == react-with-deps.js 26KB (identical MD5) After: index.js 26KB != react-with-deps.js 323KB (SDK+zod bundled) --- build.bun.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.bun.ts b/build.bun.ts index 0381030..a129d5d 100644 --- a/build.bun.ts +++ b/build.bun.ts @@ -54,7 +54,7 @@ await Promise.all([ }), buildJs("src/react/index.tsx", { outdir: "dist/src/react", - external: ["react", "react-dom", ...PEER_EXTERNALS], + external: ["react", "react-dom"], naming: { entry: "react-with-deps.js" }, }), buildJs("src/server/index.ts", {