diff --git a/packages/create-twenty-app/package.json b/packages/create-twenty-app/package.json index 270a5be0ae..7764f7fc80 100644 --- a/packages/create-twenty-app/package.json +++ b/packages/create-twenty-app/package.json @@ -50,7 +50,7 @@ "jest-environment-node": "^29.4.1", "twenty-shared": "workspace:*", "typescript": "^5.9.3", - "vite": "^7.0.0", + "vite": "^8.0.0", "vite-plugin-dts": "^4.5.4", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/packages/twenty-client-sdk/package.json b/packages/twenty-client-sdk/package.json index 5e11a43821..834a8ad2e1 100644 --- a/packages/twenty-client-sdk/package.json +++ b/packages/twenty-client-sdk/package.json @@ -60,7 +60,7 @@ "tsc-alias": "^1.8.16", "twenty-shared": "workspace:*", "typescript": "^5.9.3", - "vite": "^7.0.0", + "vite": "^8.0.0", "vite-plugin-dts": "^4.5.4", "vite-tsconfig-paths": "^4.2.1", "vitest": "^4.1.0" diff --git a/packages/twenty-emails/package.json b/packages/twenty-emails/package.json index da92758fad..d5b520340b 100644 --- a/packages/twenty-emails/package.json +++ b/packages/twenty-emails/package.json @@ -27,7 +27,7 @@ "@types/react": "^19", "@types/react-dom": "^19", "@typescript/native-preview": "^7.0.0-dev.20260116.1", - "@vitejs/plugin-react-swc": "4.2.3", + "@vitejs/plugin-react-swc": "^4.3.1", "react-email": "6.5.0", "tsc-alias": "^1.8.16", "vite-plugin-dts": "^4.5.4" diff --git a/packages/twenty-front/package.json b/packages/twenty-front/package.json index 5579a066fd..e3e47b11a7 100644 --- a/packages/twenty-front/package.json +++ b/packages/twenty-front/package.json @@ -178,10 +178,11 @@ "@types/react-datepicker": "^6.2.0", "@types/react-grid-layout": "^1", "@types/uuid": "^9.0.2", - "@vitejs/plugin-react-swc": "4.2.3", + "@vitejs/plugin-react-swc": "^4.3.1", "@vitest/coverage-istanbul": "^4.1.0", "@wyw-in-js/vite": "^1.1.0", "dotenv-cli": "^7.4.4", + "esbuild": "^0.28.1", "jest": "29.7.0", "jest-environment-jsdom": "30.0.0-beta.3", "jest-fetch-mock": "^3.0.3", diff --git a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePicker.tsx b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePicker.tsx index 9e612c18c4..db824fc644 100644 --- a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePicker.tsx +++ b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePicker.tsx @@ -341,7 +341,11 @@ type DatePickerPropsType = ReactDatePickerLibProps< const ReactDatePicker = lazy>(() => import('react-datepicker').then((mod) => ({ - default: mod.default as unknown as ComponentType, + // react-datepicker ships CJS; under vite 8 this dynamic import's `default` + // can be the module namespace ({ default: Component }) rather than the + // component itself, so unwrap a nested default when present. + default: ((mod.default as any)?.default ?? + mod.default) as unknown as ComponentType, })), ); diff --git a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePickerWithoutCalendar.tsx b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePickerWithoutCalendar.tsx index 82f5c3e116..94122ebeba 100644 --- a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePickerWithoutCalendar.tsx +++ b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DatePickerWithoutCalendar.tsx @@ -316,7 +316,11 @@ type DatePickerPropsType = ReactDatePickerLibProps< const ReactDatePicker = lazy>(() => import('react-datepicker').then((mod) => ({ - default: mod.default as unknown as ComponentType, + // react-datepicker ships CJS; under vite 8 this dynamic import's `default` + // can be the module namespace ({ default: Component }) rather than the + // component itself, so unwrap a nested default when present. + default: ((mod.default as any)?.default ?? + mod.default) as unknown as ComponentType, })), ); diff --git a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DateTimePicker.tsx b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DateTimePicker.tsx index fc24004de0..805c090b64 100644 --- a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DateTimePicker.tsx +++ b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/DateTimePicker.tsx @@ -353,7 +353,11 @@ type DatePickerPropsType = ReactDatePickerLibProps< const ReactDatePicker = lazy>(() => import('react-datepicker').then((mod) => ({ - default: mod.default as unknown as ComponentType, + // react-datepicker ships CJS; under vite 8 this dynamic import's `default` + // can be the module namespace ({ default: Component }) rather than the + // component itself, so unwrap a nested default when present. + default: ((mod.default as any)?.default ?? + mod.default) as unknown as ComponentType, })), ); diff --git a/packages/twenty-front/vite.config.ts b/packages/twenty-front/vite.config.ts index 2ed6be89de..33d02e124b 100644 --- a/packages/twenty-front/vite.config.ts +++ b/packages/twenty-front/vite.config.ts @@ -139,6 +139,23 @@ export default defineConfig(({ mode }) => { '../../node_modules/twenty-ui', '../../node_modules/twenty-ui-deprecated', ], + // Pre-bundle React and the heavy libraries reached through lazy() chains + // (charts, rich-text editors). Otherwise a lazy story (e.g. a graph widget) + // makes Vite discover the dep mid-render, triggering a re-optimize + page + // reload that 404s every in-flight story import in browser-mode Storybook + // tests (vite 8 / rolldown). + include: [ + 'react', + 'react-dom', + 'react-dom/client', + 'react/jsx-runtime', + 'react/jsx-dev-runtime', + '@nivo/core', + '@nivo/pie', + '@nivo/line', + '@nivo/arcs', + 'd3-shape', + ], }, build: { diff --git a/packages/twenty-front/vitest.config.ts b/packages/twenty-front/vitest.config.ts index 81497d5bde..993c0379ff 100644 --- a/packages/twenty-front/vitest.config.ts +++ b/packages/twenty-front/vitest.config.ts @@ -58,6 +58,15 @@ export default defineConfig({ }, setupFiles: ['./.storybook/vitest.setup.ts'], testTimeout: 5 * MINUTES_IN_MS, + // Browser-mode interaction tests are inherently flaky under heavy + // shards (transient image loads, animation/timing). Retry transient + // failures rather than failing the whole shard on one flaky story. + retry: 2, + // Story play functions run as a hook; under vite 8 the modules shard + // is heavier, so the default 30s hook timeout trips multi-step + // interactions (e.g. the Dropdown open/close cycles) on slower CI + // runners. Match testTimeout so play functions get the same budget. + hookTimeout: 5 * MINUTES_IN_MS, }, }, ], diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json index 77b091ccaa..acaa9c8619 100644 --- a/packages/twenty-sdk/package.json +++ b/packages/twenty-sdk/package.json @@ -76,7 +76,7 @@ "chalk": "^5.3.0", "chokidar": "^4.0.0", "commander": "^12.0.0", - "esbuild": "^0.25.0", + "esbuild": "^0.28.1", "graphql": "^16.8.1", "graphql-sse": "^2.5.4", "ink": "^6.8.0", @@ -104,7 +104,7 @@ "tsx": "^4.7.0", "twenty-shared": "workspace:*", "twenty-ui-deprecated": "workspace:*", - "vite": "^7.0.0", + "vite": "^8.0.0", "vite-plugin-dts": "^4.5.4", "vite-tsconfig-paths": "^4.2.1", "wait-on": "^9.0.10" diff --git a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/package.json b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/package.json index d25082318a..cdb3872078 100644 --- a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/package.json +++ b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/package.json @@ -1,6 +1,6 @@ { "dependencies": { "archiver": "^7.0.1", - "esbuild": "^0.25.0" + "esbuild": "^0.28.1" } } diff --git a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/yarn.lock b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/yarn.lock index 87c58c25a6..8e8f4c1dce 100644 --- a/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/yarn.lock +++ b/packages/twenty-server/src/engine/core-modules/logic-function/logic-function-drivers/constants/common-layer-dependencies/yarn.lock @@ -5,184 +5,184 @@ __metadata: version: 8 cacheKey: 10c0 -"@esbuild/aix-ppc64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/aix-ppc64@npm:0.25.12" +"@esbuild/aix-ppc64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/aix-ppc64@npm:0.28.1" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/android-arm64@npm:0.25.12" +"@esbuild/android-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/android-arm64@npm:0.28.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/android-arm@npm:0.25.12" +"@esbuild/android-arm@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/android-arm@npm:0.28.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/android-x64@npm:0.25.12" +"@esbuild/android-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/android-x64@npm:0.28.1" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/darwin-arm64@npm:0.25.12" +"@esbuild/darwin-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/darwin-arm64@npm:0.28.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/darwin-x64@npm:0.25.12" +"@esbuild/darwin-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/darwin-x64@npm:0.28.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/freebsd-arm64@npm:0.25.12" +"@esbuild/freebsd-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/freebsd-arm64@npm:0.28.1" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/freebsd-x64@npm:0.25.12" +"@esbuild/freebsd-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/freebsd-x64@npm:0.28.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-arm64@npm:0.25.12" +"@esbuild/linux-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-arm64@npm:0.28.1" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-arm@npm:0.25.12" +"@esbuild/linux-arm@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-arm@npm:0.28.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-ia32@npm:0.25.12" +"@esbuild/linux-ia32@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-ia32@npm:0.28.1" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-loong64@npm:0.25.12" +"@esbuild/linux-loong64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-loong64@npm:0.28.1" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-mips64el@npm:0.25.12" +"@esbuild/linux-mips64el@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-mips64el@npm:0.28.1" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-ppc64@npm:0.25.12" +"@esbuild/linux-ppc64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-ppc64@npm:0.28.1" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-riscv64@npm:0.25.12" +"@esbuild/linux-riscv64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-riscv64@npm:0.28.1" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-s390x@npm:0.25.12" +"@esbuild/linux-s390x@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-s390x@npm:0.28.1" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/linux-x64@npm:0.25.12" +"@esbuild/linux-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/linux-x64@npm:0.28.1" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/netbsd-arm64@npm:0.25.12" +"@esbuild/netbsd-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/netbsd-arm64@npm:0.28.1" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/netbsd-x64@npm:0.25.12" +"@esbuild/netbsd-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/netbsd-x64@npm:0.28.1" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/openbsd-arm64@npm:0.25.12" +"@esbuild/openbsd-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/openbsd-arm64@npm:0.28.1" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/openbsd-x64@npm:0.25.12" +"@esbuild/openbsd-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/openbsd-x64@npm:0.28.1" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/openharmony-arm64@npm:0.25.12" +"@esbuild/openharmony-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/openharmony-arm64@npm:0.28.1" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/sunos-x64@npm:0.25.12" +"@esbuild/sunos-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/sunos-x64@npm:0.28.1" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/win32-arm64@npm:0.25.12" +"@esbuild/win32-arm64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/win32-arm64@npm:0.28.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/win32-ia32@npm:0.25.12" +"@esbuild/win32-ia32@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/win32-ia32@npm:0.28.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.12": - version: 0.25.12 - resolution: "@esbuild/win32-x64@npm:0.25.12" +"@esbuild/win32-x64@npm:0.28.1": + version: 0.28.1 + resolution: "@esbuild/win32-x64@npm:0.28.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -496,36 +496,36 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.25.0": - version: 0.25.12 - resolution: "esbuild@npm:0.25.12" +"esbuild@npm:^0.28.1": + version: 0.28.1 + resolution: "esbuild@npm:0.28.1" dependencies: - "@esbuild/aix-ppc64": "npm:0.25.12" - "@esbuild/android-arm": "npm:0.25.12" - "@esbuild/android-arm64": "npm:0.25.12" - "@esbuild/android-x64": "npm:0.25.12" - "@esbuild/darwin-arm64": "npm:0.25.12" - "@esbuild/darwin-x64": "npm:0.25.12" - "@esbuild/freebsd-arm64": "npm:0.25.12" - "@esbuild/freebsd-x64": "npm:0.25.12" - "@esbuild/linux-arm": "npm:0.25.12" - "@esbuild/linux-arm64": "npm:0.25.12" - "@esbuild/linux-ia32": "npm:0.25.12" - "@esbuild/linux-loong64": "npm:0.25.12" - "@esbuild/linux-mips64el": "npm:0.25.12" - "@esbuild/linux-ppc64": "npm:0.25.12" - "@esbuild/linux-riscv64": "npm:0.25.12" - "@esbuild/linux-s390x": "npm:0.25.12" - "@esbuild/linux-x64": "npm:0.25.12" - "@esbuild/netbsd-arm64": "npm:0.25.12" - "@esbuild/netbsd-x64": "npm:0.25.12" - "@esbuild/openbsd-arm64": "npm:0.25.12" - "@esbuild/openbsd-x64": "npm:0.25.12" - "@esbuild/openharmony-arm64": "npm:0.25.12" - "@esbuild/sunos-x64": "npm:0.25.12" - "@esbuild/win32-arm64": "npm:0.25.12" - "@esbuild/win32-ia32": "npm:0.25.12" - "@esbuild/win32-x64": "npm:0.25.12" + "@esbuild/aix-ppc64": "npm:0.28.1" + "@esbuild/android-arm": "npm:0.28.1" + "@esbuild/android-arm64": "npm:0.28.1" + "@esbuild/android-x64": "npm:0.28.1" + "@esbuild/darwin-arm64": "npm:0.28.1" + "@esbuild/darwin-x64": "npm:0.28.1" + "@esbuild/freebsd-arm64": "npm:0.28.1" + "@esbuild/freebsd-x64": "npm:0.28.1" + "@esbuild/linux-arm": "npm:0.28.1" + "@esbuild/linux-arm64": "npm:0.28.1" + "@esbuild/linux-ia32": "npm:0.28.1" + "@esbuild/linux-loong64": "npm:0.28.1" + "@esbuild/linux-mips64el": "npm:0.28.1" + "@esbuild/linux-ppc64": "npm:0.28.1" + "@esbuild/linux-riscv64": "npm:0.28.1" + "@esbuild/linux-s390x": "npm:0.28.1" + "@esbuild/linux-x64": "npm:0.28.1" + "@esbuild/netbsd-arm64": "npm:0.28.1" + "@esbuild/netbsd-x64": "npm:0.28.1" + "@esbuild/openbsd-arm64": "npm:0.28.1" + "@esbuild/openbsd-x64": "npm:0.28.1" + "@esbuild/openharmony-arm64": "npm:0.28.1" + "@esbuild/sunos-x64": "npm:0.28.1" + "@esbuild/win32-arm64": "npm:0.28.1" + "@esbuild/win32-ia32": "npm:0.28.1" + "@esbuild/win32-x64": "npm:0.28.1" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -581,7 +581,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b + checksum: 10c0/29cd456a79ce35ac2c7e05fe871330416b2c395c045d849653f843e51378d6e0d6e774d6dcd01b35f4e83238a29bf8decd04fcd34b3780c589a250b21e5f92bb languageName: node linkType: hard @@ -838,7 +838,7 @@ __metadata: resolution: "root-workspace-0b6124@workspace:." dependencies: archiver: "npm:^7.0.1" - esbuild: "npm:^0.25.0" + esbuild: "npm:^0.28.1" languageName: unknown linkType: soft diff --git a/packages/twenty-shared/package.json b/packages/twenty-shared/package.json index 56e6bef021..8f089b3613 100644 --- a/packages/twenty-shared/package.json +++ b/packages/twenty-shared/package.json @@ -38,7 +38,7 @@ "tsc-alias": "^1.8.16", "tsx": "^4.19.3", "typescript": "^5.9.3", - "vite": "^7.0.0", + "vite": "^8.0.0", "vite-plugin-dts": "^4.5.4", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/packages/twenty-ui-deprecated/package.json b/packages/twenty-ui-deprecated/package.json index d2494d32a3..b72680cace 100644 --- a/packages/twenty-ui-deprecated/package.json +++ b/packages/twenty-ui-deprecated/package.json @@ -28,12 +28,13 @@ "@types/jest": "^30.0.0", "@types/react": "^18.2.39", "@types/react-dom": "^18.2.15", - "@vitejs/plugin-react-swc": "4.2.3", + "@vitejs/plugin-react-swc": "^4.3.1", "@wyw-in-js/babel-preset": "^1.1.0", "@wyw-in-js/vite": "^1.1.0", "babel-plugin-inline-import": "^3.0.0", "babel-plugin-inline-react-svg": "^2.0.2", "babel-plugin-module-resolver": "^5.0.2", + "esbuild": "^0.28.1", "jest": "29.7.0", "jest-environment-jsdom": "30.0.0-beta.3", "prettier": "^3.1.1", @@ -54,7 +55,6 @@ "date-fns": "^2.30.0", "framer-motion": "^11.18.0", "glob": "^11.1.0", - "hex-rgb": "^5.0.0", "jotai": "^2.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/twenty-ui-deprecated/src/theme/constants/Rgba.ts b/packages/twenty-ui-deprecated/src/theme/constants/Rgba.ts index d36cfcd5d1..53420b589c 100644 --- a/packages/twenty-ui-deprecated/src/theme/constants/Rgba.ts +++ b/packages/twenty-ui-deprecated/src/theme/constants/Rgba.ts @@ -1,8 +1,18 @@ /* oxlint-disable twenty/no-hardcoded-colors */ -import hexRgb from 'hex-rgb'; export const RGBA = (hex: string, alpha: number) => { - return `rgba(${hexRgb(hex, { format: 'array' }) - .slice(0, -1) - .join(',')},${alpha})`; + const normalized = hex.replace(/^#/, ''); + // Expand #RGB / #RGBA shorthand (3 or 4 chars) to its full form; longer + // values (6 or 8 chars) already carry full r/g/b channels. + const expanded = + normalized.length === 3 || normalized.length === 4 + ? normalized + .split('') + .map((channel) => channel + channel) + .join('') + : normalized; + const red = parseInt(expanded.slice(0, 2), 16); + const green = parseInt(expanded.slice(2, 4), 16); + const blue = parseInt(expanded.slice(4, 6), 16); + return `rgba(${red},${green},${blue},${alpha})`; }; diff --git a/packages/twenty-ui-deprecated/vite.config.ts b/packages/twenty-ui-deprecated/vite.config.ts index e745f06461..a9a07bf24e 100644 --- a/packages/twenty-ui-deprecated/vite.config.ts +++ b/packages/twenty-ui-deprecated/vite.config.ts @@ -77,6 +77,16 @@ export default defineConfig(({ command }) => { }, optimizeDeps: { exclude: ['../../node_modules/.vite', '../../node_modules/.cache'], + // Pre-bundle React up front so Vite's dep optimizer doesn't re-bundle it + // mid-run during browser-mode Storybook tests — re-bundling rotates the + // optimized chunk hash and 404s in-flight dynamic imports (vite 8 / rolldown). + include: [ + 'react', + 'react-dom', + 'react-dom/client', + 'react/jsx-runtime', + 'react/jsx-dev-runtime', + ], }, root: __dirname, cacheDir: '../../node_modules/.vite/packages/twenty-ui-deprecated', diff --git a/packages/twenty-ui/package.json b/packages/twenty-ui/package.json index cd8b32d5b7..dcc0fcb375 100644 --- a/packages/twenty-ui/package.json +++ b/packages/twenty-ui/package.json @@ -46,8 +46,9 @@ "@types/jest": "^30.0.0", "@types/react": "^18.2.39", "@types/react-dom": "^18.2.15", - "@vitejs/plugin-react-swc": "4.2.3", + "@vitejs/plugin-react-swc": "^4.3.1", "@vitest/browser-playwright": "^4.1.0", + "esbuild": "^0.28.1", "jest": "29.7.0", "jest-environment-jsdom": "30.0.0-beta.3", "prettier": "^3.1.1", @@ -75,7 +76,6 @@ "date-fns": "^2.30.0", "framer-motion": "^11.18.0", "glob": "^11.1.0", - "hex-rgb": "^5.0.0", "jotai": "^2.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/twenty-ui/src/theme/constants/Rgba.ts b/packages/twenty-ui/src/theme/constants/Rgba.ts index d36cfcd5d1..53420b589c 100644 --- a/packages/twenty-ui/src/theme/constants/Rgba.ts +++ b/packages/twenty-ui/src/theme/constants/Rgba.ts @@ -1,8 +1,18 @@ /* oxlint-disable twenty/no-hardcoded-colors */ -import hexRgb from 'hex-rgb'; export const RGBA = (hex: string, alpha: number) => { - return `rgba(${hexRgb(hex, { format: 'array' }) - .slice(0, -1) - .join(',')},${alpha})`; + const normalized = hex.replace(/^#/, ''); + // Expand #RGB / #RGBA shorthand (3 or 4 chars) to its full form; longer + // values (6 or 8 chars) already carry full r/g/b channels. + const expanded = + normalized.length === 3 || normalized.length === 4 + ? normalized + .split('') + .map((channel) => channel + channel) + .join('') + : normalized; + const red = parseInt(expanded.slice(0, 2), 16); + const green = parseInt(expanded.slice(2, 4), 16); + const blue = parseInt(expanded.slice(4, 6), 16); + return `rgba(${red},${green},${blue},${alpha})`; }; diff --git a/packages/twenty-ui/vite.config.ts b/packages/twenty-ui/vite.config.ts index b0190e9cdd..bb7a7833b8 100644 --- a/packages/twenty-ui/vite.config.ts +++ b/packages/twenty-ui/vite.config.ts @@ -89,6 +89,16 @@ export default defineConfig(({ command }) => { }, optimizeDeps: { exclude: ['../../node_modules/.vite', '../../node_modules/.cache'], + // Pre-bundle React up front so Vite's dep optimizer doesn't re-bundle it + // mid-run during browser-mode Storybook tests — re-bundling rotates the + // optimized chunk hash and 404s in-flight dynamic imports (vite 8 / rolldown). + include: [ + 'react', + 'react-dom', + 'react-dom/client', + 'react/jsx-runtime', + 'react/jsx-dev-runtime', + ], }, root: __dirname, cacheDir: '../../node_modules/.vite/packages/twenty-ui', diff --git a/packages/twenty-zapier/package.json b/packages/twenty-zapier/package.json index 954aa491c9..e637cbaa0b 100644 --- a/packages/twenty-zapier/package.json +++ b/packages/twenty-zapier/package.json @@ -26,7 +26,7 @@ "rimraf": "^3.0.2", "ts-jest": "^29.1.1", "twenty-shared": "workspace:*", - "vite": "^7.0.0", + "vite": "^8.0.0", "vite-plugin-dts": "^4.5.4", "vite-tsconfig-paths": "^4.2.1", "zapier-platform-cli": "^19.0.0" diff --git a/yarn.lock b/yarn.lock index d863d2316c..d6be533af5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18178,13 +18178,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.2": - version: 1.0.0-rc.2 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.2" - checksum: 10c0/35d3dec35e00ab090d5ff8287e27af98a15da897dc8b034fe0e00d03e0931b9e993603c054be9e8925e2bde040c44c18b48cb8aeea6a261fd1c8f46837038927 - languageName: node - linkType: hard - "@rolldown/pluginutils@npm:^1.0.0": version: 1.0.1 resolution: "@rolldown/pluginutils@npm:1.0.1" @@ -24709,15 +24702,15 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react-swc@npm:4.2.3": - version: 4.2.3 - resolution: "@vitejs/plugin-react-swc@npm:4.2.3" +"@vitejs/plugin-react-swc@npm:^4.3.1": + version: 4.3.1 + resolution: "@vitejs/plugin-react-swc@npm:4.3.1" dependencies: - "@rolldown/pluginutils": "npm:1.0.0-rc.2" + "@rolldown/pluginutils": "npm:^1.0.0" "@swc/core": "npm:^1.15.11" peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 - checksum: 10c0/464e153ca11105c7274c08613b7c43227efb8818ddb57d1c38338ec320e1abcf1471f2e4cb9a32ba6c91e11692d2599cab4695b55775c477f9d80ee521d63e4e + vite: ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/1c77f2214df83175c15db9b0045ed212d96e3f375a7396304441eb82614e9a2969db948daf66346159376ee8c2b45c01a01dad79756d19f75cbbd323075e3d79 languageName: node linkType: hard @@ -30874,7 +30867,7 @@ __metadata: twenty-shared: "workspace:*" typescript: "npm:^5.9.3" uuid: "npm:^13.0.2" - vite: "npm:^7.0.0" + vite: "npm:^8.0.0" vite-plugin-dts: "npm:^4.5.4" vite-tsconfig-paths: "npm:^4.2.1" bin: @@ -33459,7 +33452,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0, esbuild@npm:^0.27.0, esbuild@npm:~0.27.0": +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0, esbuild@npm:~0.27.0": version: 0.27.2 resolution: "esbuild@npm:0.27.2" dependencies: @@ -37134,7 +37127,7 @@ __metadata: languageName: node linkType: hard -"hex-rgb@npm:5.0.0, hex-rgb@npm:^5.0.0": +"hex-rgb@npm:5.0.0": version: 5.0.0 resolution: "hex-rgb@npm:5.0.0" checksum: 10c0/9b1a71776490406c10aa31a4cbf04bc209562820ec839982c2ac98295135ecd01526be13cef91f8fe6bb3d5559ed0f5193c75143e4e75393baa4bf1e04b1a4e8 @@ -47279,7 +47272,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.5.15, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.47, postcss@npm:^8.5.15, postcss@npm:^8.5.6": +"postcss@npm:8.5.15, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.47, postcss@npm:^8.5.15": version: 8.5.15 resolution: "postcss@npm:8.5.15" dependencies: @@ -50384,7 +50377,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.14.0, rollup@npm:^4.43.0": +"rollup@npm:^4.14.0": version: 4.59.0 resolution: "rollup@npm:4.59.0" dependencies: @@ -54413,7 +54406,7 @@ __metadata: tsc-alias: "npm:^1.8.16" twenty-shared: "workspace:*" typescript: "npm:^5.9.3" - vite: "npm:^7.0.0" + vite: "npm:^8.0.0" vite-plugin-dts: "npm:^4.5.4" vite-tsconfig-paths: "npm:^4.2.1" vitest: "npm:^4.1.0" @@ -54498,7 +54491,7 @@ __metadata: "@types/react": "npm:^19" "@types/react-dom": "npm:^19" "@typescript/native-preview": "npm:^7.0.0-dev.20260116.1" - "@vitejs/plugin-react-swc": "npm:4.2.3" + "@vitejs/plugin-react-swc": "npm:^4.3.1" react-email: "npm:6.5.0" tsc-alias: "npm:^1.8.16" twenty-shared: "workspace:*" @@ -54626,7 +54619,7 @@ __metadata: "@types/react-datepicker": "npm:^6.2.0" "@types/react-grid-layout": "npm:^1" "@types/uuid": "npm:^9.0.2" - "@vitejs/plugin-react-swc": "npm:4.2.3" + "@vitejs/plugin-react-swc": "npm:^4.3.1" "@vitest/coverage-istanbul": "npm:^4.1.0" "@wyw-in-js/vite": "npm:^1.1.0" "@xyflow/react": "npm:^12.4.2" @@ -54641,6 +54634,7 @@ __metadata: date-fns-tz: "npm:^2.0.0" deep-equal: "npm:^2.2.2" dotenv-cli: "npm:^7.4.4" + esbuild: "npm:^0.28.1" file-saver: "npm:^2.0.5" framer-motion: "npm:^11.18.0" fuse.js: "npm:^7.1.0" @@ -54746,7 +54740,7 @@ __metadata: chalk: "npm:^5.3.0" chokidar: "npm:^4.0.0" commander: "npm:^12.0.0" - esbuild: "npm:^0.25.0" + esbuild: "npm:^0.28.1" graphql: "npm:^16.8.1" graphql-sse: "npm:^2.5.4" ink: "npm:^6.8.0" @@ -54766,7 +54760,7 @@ __metadata: twenty-ui-deprecated: "workspace:*" typescript: "npm:^5.9.3" uuid: "npm:^13.0.2" - vite: "npm:^7.0.0" + vite: "npm:^8.0.0" vite-plugin-dts: "npm:^4.5.4" vite-tsconfig-paths: "npm:^4.2.1" wait-on: "npm:^9.0.10" @@ -55030,7 +55024,7 @@ __metadata: tsx: "npm:^4.19.3" typescript: "npm:^5.9.3" uuid: "npm:^11.1.1" - vite: "npm:^7.0.0" + vite: "npm:^8.0.0" vite-plugin-dts: "npm:^4.5.4" vite-tsconfig-paths: "npm:^4.2.1" zod: "npm:^4.1.11" @@ -55065,16 +55059,16 @@ __metadata: "@types/jest": "npm:^30.0.0" "@types/react": "npm:^18.2.39" "@types/react-dom": "npm:^18.2.15" - "@vitejs/plugin-react-swc": "npm:4.2.3" + "@vitejs/plugin-react-swc": "npm:^4.3.1" "@wyw-in-js/babel-preset": "npm:^1.1.0" "@wyw-in-js/vite": "npm:^1.1.0" babel-plugin-inline-import: "npm:^3.0.0" babel-plugin-inline-react-svg: "npm:^2.0.2" babel-plugin-module-resolver: "npm:^5.0.2" date-fns: "npm:^2.30.0" + esbuild: "npm:^0.28.1" framer-motion: "npm:^11.18.0" glob: "npm:^11.1.0" - hex-rgb: "npm:^5.0.0" jest: "npm:29.7.0" jest-environment-jsdom: "npm:30.0.0-beta.3" jotai: "npm:^2.17.1" @@ -55124,13 +55118,13 @@ __metadata: "@types/jest": "npm:^30.0.0" "@types/react": "npm:^18.2.39" "@types/react-dom": "npm:^18.2.15" - "@vitejs/plugin-react-swc": "npm:4.2.3" + "@vitejs/plugin-react-swc": "npm:^4.3.1" "@vitest/browser-playwright": "npm:^4.1.0" clsx: "npm:^2.1.1" date-fns: "npm:^2.30.0" + esbuild: "npm:^0.28.1" framer-motion: "npm:^11.18.0" glob: "npm:^11.1.0" - hex-rgb: "npm:^5.0.0" jest: "npm:29.7.0" jest-environment-jsdom: "npm:30.0.0-beta.3" jotai: "npm:^2.17.1" @@ -55230,7 +55224,7 @@ __metadata: rimraf: "npm:^3.0.2" ts-jest: "npm:^29.1.1" twenty-shared: "workspace:*" - vite: "npm:^7.0.0" + vite: "npm:^8.0.0" vite-plugin-dts: "npm:^4.5.4" vite-tsconfig-paths: "npm:^4.2.1" zapier-platform-cli: "npm:^19.0.0" @@ -56952,7 +56946,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": +"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0, vite@npm:^8.0.0": version: 8.0.16 resolution: "vite@npm:8.0.16" dependencies: @@ -57009,61 +57003,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:^7.0.0": - version: 7.3.2 - resolution: "vite@npm:7.3.2" - dependencies: - esbuild: "npm:^0.27.0" - fdir: "npm:^6.5.0" - fsevents: "npm:~2.3.3" - picomatch: "npm:^4.0.3" - postcss: "npm:^8.5.6" - rollup: "npm:^4.43.0" - tinyglobby: "npm:^0.2.15" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - jiti: ">=1.21.0" - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/74be36907e208916f18bfec81c8eba18b869f0a170f1ece0a4dcb14874d0f0e7c022fb6c2ad896e3ee6c973fe88f53ac23b4078879ada340d8b263260868b8d4 - languageName: node - linkType: hard - "vitest@npm:^4.1.0": version: 4.1.8 resolution: "vitest@npm:4.1.8"