diff --git a/modules/banner/element-web/package.json b/modules/banner/element-web/package.json index a2af841d74..c9a36d3b84 100644 --- a/modules/banner/element-web/package.json +++ b/modules/banner/element-web/package.json @@ -21,6 +21,7 @@ "matrix-web-i18n": "^3.6.0", "matrix-widget-api": "^1.17.0", "react": "19.2.6", + "rollup-plugin-external-globals": "^0.13.0", "typescript": "^6.0.0", "vite": "^8.0.0", "vite-plugin-node-polyfills": "^0.28.0", diff --git a/modules/banner/element-web/vite.config.ts b/modules/banner/element-web/vite.config.ts index 5556992672..ab331f6419 100644 --- a/modules/banner/element-web/vite.config.ts +++ b/modules/banner/element-web/vite.config.ts @@ -10,6 +10,7 @@ import { fileURLToPath } from "node:url"; import { defineConfig, esmExternalRequirePlugin } from "vite"; import react from "@vitejs/plugin-react"; import { nodePolyfills } from "vite-plugin-node-polyfills"; +import externalGlobals from "rollup-plugin-external-globals"; import svgr from "vite-plugin-svgr"; import { importCSSSheet } from "@arcmantle/vite-plugin-import-css-sheet"; @@ -54,5 +55,9 @@ export default defineConfig({ nodePolyfills({ include: ["events"], }), + externalGlobals({ + // Reuse React from the host app + react: "window.React", + }), ], }); diff --git a/modules/opendesk/element-web/package.json b/modules/opendesk/element-web/package.json index 70814d9062..c69700b632 100644 --- a/modules/opendesk/element-web/package.json +++ b/modules/opendesk/element-web/package.json @@ -24,6 +24,7 @@ "@vitejs/plugin-react": "^5.0.0", "react": "19.2.6", "react-dom": "19.2.6", + "rollup-plugin-external-globals": "^0.13.0", "typescript": "^6.0.0", "vite": "^8.0.0", "vite-plugin-node-polyfills": "^0.28.0" diff --git a/modules/opendesk/element-web/vite.config.ts b/modules/opendesk/element-web/vite.config.ts index d55959680e..23a0515ef8 100644 --- a/modules/opendesk/element-web/vite.config.ts +++ b/modules/opendesk/element-web/vite.config.ts @@ -10,6 +10,7 @@ import { fileURLToPath } from "node:url"; import { defineConfig, esmExternalRequirePlugin } from "vite"; import react from "@vitejs/plugin-react"; import { nodePolyfills } from "vite-plugin-node-polyfills"; +import externalGlobals from "rollup-plugin-external-globals"; const __dirname = dirname(fileURLToPath(import.meta.url)); @@ -51,5 +52,9 @@ export default defineConfig({ nodePolyfills({ include: ["events"], }), + externalGlobals({ + // Reuse React from the host app + react: "window.React", + }), ], }); diff --git a/modules/restricted-guests/element-web/package.json b/modules/restricted-guests/element-web/package.json index b014f82147..70d9b16709 100644 --- a/modules/restricted-guests/element-web/package.json +++ b/modules/restricted-guests/element-web/package.json @@ -18,6 +18,7 @@ "@types/react": "^19", "@vitejs/plugin-react": "^5.0.0", "react": "19.2.6", + "rollup-plugin-external-globals": "^0.13.0", "typescript": "^6.0.0", "vite": "^8.0.0", "vite-plugin-node-polyfills": "^0.28.0" diff --git a/modules/restricted-guests/element-web/vite.config.ts b/modules/restricted-guests/element-web/vite.config.ts index 95a5175ae3..048b48335f 100644 --- a/modules/restricted-guests/element-web/vite.config.ts +++ b/modules/restricted-guests/element-web/vite.config.ts @@ -10,6 +10,7 @@ import { fileURLToPath } from "node:url"; import { defineConfig, esmExternalRequirePlugin } from "vite"; import react from "@vitejs/plugin-react"; import { nodePolyfills } from "vite-plugin-node-polyfills"; +import externalGlobals from "rollup-plugin-external-globals"; import { importCSSSheet } from "@arcmantle/vite-plugin-import-css-sheet"; const __dirname = dirname(fileURLToPath(import.meta.url)); @@ -52,5 +53,9 @@ export default defineConfig({ nodePolyfills({ include: ["events"], }), + externalGlobals({ + // Reuse React from the host app + react: "window.React", + }), ], }); diff --git a/modules/widget-toggles/element-web/package.json b/modules/widget-toggles/element-web/package.json index 38e6b87177..9e4f5d8a1d 100644 --- a/modules/widget-toggles/element-web/package.json +++ b/modules/widget-toggles/element-web/package.json @@ -24,6 +24,7 @@ "@vitest/coverage-v8": "^4.0.0", "react": "^19", "typescript": "^6.0.0", + "rollup-plugin-external-globals": "^0.13.0", "vite": "^8.0.0", "vite-plugin-node-polyfills": "^0.28.0", "vite-plugin-svgr": "^5.0.0", diff --git a/modules/widget-toggles/element-web/vite.config.ts b/modules/widget-toggles/element-web/vite.config.ts index 0e28cdffd8..51770551f9 100644 --- a/modules/widget-toggles/element-web/vite.config.ts +++ b/modules/widget-toggles/element-web/vite.config.ts @@ -10,6 +10,7 @@ import { fileURLToPath } from "node:url"; import { defineConfig, esmExternalRequirePlugin } from "vite"; import react from "@vitejs/plugin-react"; import { nodePolyfills } from "vite-plugin-node-polyfills"; +import externalGlobals from "rollup-plugin-external-globals"; import svgr from "vite-plugin-svgr"; import { importCSSSheet } from "@arcmantle/vite-plugin-import-css-sheet"; @@ -54,5 +55,9 @@ export default defineConfig({ nodePolyfills({ include: ["events"], }), + externalGlobals({ + // Reuse React from the host app + react: "window.React", + }), ], });