From 85406a58fb05d64e6c36f2183dfbdd74b0775da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?= <71827178+bosiraphael@users.noreply.github.com> Date: Tue, 23 Jun 2026 13:25:48 +0200 Subject: [PATCH] Use minimal babel presets for wyw to fix the website Cloudflare build (#21994) The website's Cloudflare build (`opennextjs-cloudflare` / Turbopack) was failing with `_defineProperty is not a function` while linaria/wyw evaluates `twenty-ui/dist/theme.cjs` at build time. It regressed in #21946, whose twenty-ui build rework changed the emitted `theme.cjs` so the theme objects ship as runtime object spreads (`{ ...THEME_COMMON }`). **Cause:** wyw evaluates modules in Node through `next/babel`, which pulls in `preset-env` + `transform-runtime`. Those re-lower the runtime spreads into `@babel/runtime` helpers imported as ESM; wyw then `require()`s that ESM module in a CJS context where the export is not callable, so `_defineProperty` fails. **Fix:** wyw runs in Node and needs no downleveling, so replace `next/babel` with minimal presets (`@babel/preset-typescript`, `@babel/preset-react`, `@wyw-in-js/babel-preset`, plus `@babel/plugin-transform-export-namespace-from`), matching twenty-front's wyw config. No `@babel/runtime` helpers get injected. Kept on the website side so twenty-ui keeps react/react-dom as peer deps (#21946). Note: no blocking PR check runs the website production build, so this is best validated via the website preview build or the twenty-infra deploy. --- packages/twenty-website/package.json | 3 + packages/twenty-website/wyw-in-js.config.cjs | 4 +- yarn.lock | 79 ++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/packages/twenty-website/package.json b/packages/twenty-website/package.json index 5d175b0007..fac24c4868 100644 --- a/packages/twenty-website/package.json +++ b/packages/twenty-website/package.json @@ -34,6 +34,9 @@ "zod": "^4.1.11" }, "devDependencies": { + "@babel/plugin-transform-export-namespace-from": "^7.24.6", + "@babel/preset-react": "^7.24.6", + "@babel/preset-typescript": "^7.24.6", "@lingui/cli": "^5.1.2", "@lingui/conf": "5.1.2", "@lingui/format-po": "5.1.2", diff --git a/packages/twenty-website/wyw-in-js.config.cjs b/packages/twenty-website/wyw-in-js.config.cjs index 8a04d8b17d..213fca3c85 100644 --- a/packages/twenty-website/wyw-in-js.config.cjs +++ b/packages/twenty-website/wyw-in-js.config.cjs @@ -1,9 +1,11 @@ module.exports = { babelOptions: { presets: [ - require.resolve('next/babel'), + require.resolve('@babel/preset-typescript'), + require.resolve('@babel/preset-react'), require.resolve('@wyw-in-js/babel-preset'), ], + plugins: [require.resolve('@babel/plugin-transform-export-namespace-from')], compact: true, }, }; diff --git a/yarn.lock b/yarn.lock index 449076c792..be7fcf685c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3544,6 +3544,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-export-namespace-from@npm:^7.24.6": + version: 7.29.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6cd951e366c5c30223c409157e312d949feecfae8b4b4927053764ec71ff2bacf43aceda9b53239cd90d71caf4ae849c70549e0d3e31377dd8f42a0c283bdda2 + languageName: node + linkType: hard + "@babel/plugin-transform-export-namespace-from@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" @@ -3907,6 +3918,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-display-name@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/plugin-transform-react-display-name@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0a3b2461b189d6f4ca4f691bb4d1872bdebbac90d2e933a42a2fb22a0d26c81fa1ba7bc8128f3886b3f0f8a0ffe5aa0d7eaf4cd5b9610fc4967913a060501781 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-development@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1" @@ -3918,6 +3940,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx-development@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.29.7" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a2d44d068d35f8e6bc0437ba0da86526d4473491a43108caf77cba467a3ab522cbd09bcd8184b7a49f3d2b52e0883ad797ed2f91c090b857a80a6f383e88f449 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx@npm:^7.27.1": version: 7.28.6 resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" @@ -3933,6 +3966,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/plugin-transform-react-jsx@npm:7.29.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.29.7" + "@babel/helper-module-imports": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.29.7" + "@babel/plugin-syntax-jsx": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ae6487c3deafcffda8a2c1b1eb77e0b7121630fa1a9646cecd73dbbdd8271532a0f7f0e8c01f69b6d39a36d8d79eb67e2d51031369c9055f18f7d8e70d9b5446 + languageName: node + linkType: hard + "@babel/plugin-transform-react-pure-annotations@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1" @@ -3945,6 +3993,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-pure-annotations@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.29.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ad85d57dfa105cd19dc5271f68c9a3e134ab96edce9b8c6b521fdb158499bc616df9d4ee9b386e9dc5532e67bd5682ba2047b88550699d7f1060eaaba80fb6d1 + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" @@ -4250,6 +4310,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.24.6": + version: 7.29.7 + resolution: "@babel/preset-react@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + "@babel/helper-validator-option": "npm:^7.29.7" + "@babel/plugin-transform-react-display-name": "npm:^7.29.7" + "@babel/plugin-transform-react-jsx": "npm:^7.29.7" + "@babel/plugin-transform-react-jsx-development": "npm:^7.29.7" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a84e90805ce06dd5d7fcbfd8e32fe0c79966feba218e1d89097699ff5224d232e56191688ae264be2c6ef516523e3e2246949439e1e141d21def881a5752181f + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5, @babel/preset-typescript@npm:^7.24.6": version: 7.28.5 resolution: "@babel/preset-typescript@npm:7.28.5" @@ -54208,6 +54284,9 @@ __metadata: version: 0.0.0-use.local resolution: "twenty-website@workspace:packages/twenty-website" dependencies: + "@babel/plugin-transform-export-namespace-from": "npm:^7.24.6" + "@babel/preset-react": "npm:^7.24.6" + "@babel/preset-typescript": "npm:^7.24.6" "@babel/runtime": "npm:^7.27.6" "@base-ui/react": "npm:^1.3.0" "@calcom/embed-react": "npm:^1.5.3"