mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
60d3ef1071
The esbuild `external` list omitted `react-dom`, unlike react-core's measure-copilotchat.mjs, so a stray web-oriented edge could be absorbed into the figure the PR's bundle claim rests on. Checked empirically before changing anything: `react-dom` is NOT reachable from @copilotkit/react-native/headless today. A metafile run shows 0 of the 653 input modules are react-dom, and no module references it even pre-resolution. The reported figure is therefore UNCHANGED — 94941 B gzip (92.7 kB) before and after, byte for byte. The headline "92.8 kB -> 92.7 kB, flat" claim is unaffected and stays comparable with previously reported numbers. The guard is still worth having. Simulating a stray edge measures the inflation it prevents: +56.3 kB gzip via react-dom/client, +57.3 kB via react-dom/server (not the ~130 kB estimated in review — that is closer to the raw magnitude; react-dom-client.production.js is 536 kB raw). The subtler case is a bare `react-dom` edge at +1.4 kB, small enough to read as noise while still being a real regression. No subpath entries: esbuild prefix-matches package paths, so `react-dom` already covers react-dom/client and react-dom/server (verified on the pinned 0.27.3; esbuild CHANGELOG 0.5.14 and 0.14.13). Listing them would imply they were required. Hoisted the list to an exported HEADLESS_EXTERNAL with per-entry rationale, mirroring the sibling's DEFAULT_EXTERNAL, and made `external` an overridable option so the new test can A/B it rather than assert on a literal. Both new tests fail if react-dom is removed from the list. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
17 lines
766 B
JavaScript
17 lines
766 B
JavaScript
// Same shape as tiny-headless.js plus the failure this guards against: a stray
|
|
// web-oriented edge into react-dom/client. Used to prove HEADLESS_EXTERNAL
|
|
// actually keeps react-dom OUT of the measured graph.
|
|
//
|
|
// react-dom/client (not bare react-dom) is the edge worth simulating: bare
|
|
// react-dom is a ~7 kB wrapper, while react-dom/client drags in
|
|
// react-dom-client.production.js (~536 kB raw) and is what would visibly
|
|
// inflate the reported figure.
|
|
import { createRoot } from "react-dom/client";
|
|
|
|
export const CopilotKitProvider = () => createRoot;
|
|
export const useAgent = () => null;
|
|
export const useFrontendTool = () => null;
|
|
export const useRenderTool = () => null;
|
|
export const useRenderToolCall = () => null;
|
|
export const useComponent = () => null;
|