diff --git a/knip.ts b/knip.ts index a44683ee68..97f8e0c837 100644 --- a/knip.ts +++ b/knip.ts @@ -38,9 +38,6 @@ const config: KnipConfig = { // This is an optional peer dependency because users without RSC don't need it // but Knip doesn't like such dependencies to be referenced directly in code 'react-on-rails-rsc', - // SWC transpiler dependencies used in dummy apps - '@swc/core', - 'swc-loader', ], }, @@ -100,8 +97,6 @@ const config: KnipConfig = { 'config/webpack/{production,development,test}.js', // Declaring this as webpack.config instead doesn't work correctly 'config/webpack/webpack.config.js', - // SWC configuration for Shakapacker - 'config/swc.config.js', ], ignore: ['**/app-react16/**/*'], project: ['**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}!', 'config/webpack/*.js'], diff --git a/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt b/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt index ec6e527918..f4d0e8734f 100644 --- a/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt +++ b/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt @@ -50,6 +50,8 @@ const configureServer = () => { serverWebpackConfig.output = { filename: 'server-bundle.js', globalObject: 'this', + // Note: libraryTarget should only be 'commonjs2' when using Node renderer + // For ExecJS (default), leave it undefined to allow proper evaluation // If using the React on Rails Pro node server renderer, uncomment the next line // libraryTarget: 'commonjs2', path: require('path').resolve(__dirname, '../../ssr-generated'), @@ -111,8 +113,18 @@ const configureServer = () => { // If using the default 'web', then libraries like Emotion and loadable-components // break with SSR. The fix is to use a node renderer and change the target. - // If using the React on Rails Pro node server renderer, uncomment the next line - // serverWebpackConfig.target = 'node' + // React 19 requires target: 'node' to properly handle Node.js built-in modules + serverWebpackConfig.target = 'node'; + + // React 19 Fix: Prevent webpack from resolving to react-server condition + // The server-bundle needs the full React with hooks for SSR, not the react-server build + // Explicitly set conditionNames without react-server + if (!serverWebpackConfig.resolve) { + serverWebpackConfig.resolve = {}; + } + // For target: 'node', webpack defaults to ['node', 'import', 'require', 'default'] + // We explicitly list them to ensure react-server is not included + serverWebpackConfig.resolve.conditionNames = ['node', 'import', 'require', 'default']; return serverWebpackConfig; }; diff --git a/package.json b/package.json index b972b7ca6c..f9392fbf50 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "@babel/preset-react": "^7.26.3", "@babel/preset-typescript": "^7.27.1", "@eslint/compat": "^1.2.7", - "@swc/core": "^1.15.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", @@ -55,7 +54,6 @@ "react-dom": "^19.0.0", "react-on-rails-rsc": "19.0.2", "redux": "^4.2.1", - "swc-loader": "^0.2.6", "ts-jest": "^29.2.5", "typescript": "^5.8.3", "typescript-eslint": "^8.35.0" diff --git a/react_on_rails_pro/spec/dummy/config/webpack/serverWebpackConfig.js b/react_on_rails_pro/spec/dummy/config/webpack/serverWebpackConfig.js index f47ea2ba26..4111738640 100644 --- a/react_on_rails_pro/spec/dummy/config/webpack/serverWebpackConfig.js +++ b/react_on_rails_pro/spec/dummy/config/webpack/serverWebpackConfig.js @@ -123,6 +123,16 @@ const configureServer = (rscBundle = false) => { serverWebpackConfig.node = false; + // React 19 Fix: Prevent webpack from resolving to react-server condition + // The server-bundle needs the full React with hooks for SSR, not the react-server build + // Explicitly set conditionNames without react-server + if (!serverWebpackConfig.resolve) { + serverWebpackConfig.resolve = {}; + } + // For target: 'node', webpack defaults to ['node', 'import', 'require', 'default'] + // We explicitly list them to ensure react-server is not included + serverWebpackConfig.resolve.conditionNames = ['node', 'import', 'require', 'default']; + return serverWebpackConfig; }; diff --git a/react_on_rails_pro/spec/dummy/yarn.lock b/react_on_rails_pro/spec/dummy/yarn.lock index 4474c54076..cd1bd4d392 100644 --- a/react_on_rails_pro/spec/dummy/yarn.lock +++ b/react_on_rails_pro/spec/dummy/yarn.lock @@ -1245,6 +1245,87 @@ resolved "https://registry.yarnpkg.com/@shakacode/use-ssr-computation.runtime/-/use-ssr-computation.runtime-2.0.0.tgz#3944be3dd57e036d794def69bd7a10cc26978e95" integrity sha512-cWeekG6ehf3TtBUWmKtitQgXZOcqLlodmzCccWniAsE+1VmwcIJzCagTu72Ocq8fCtgfdMs94XSu314zfeWFAw== +"@swc/core-darwin-arm64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.0.tgz#158a0890fb2546b4d57b99234c1033e4a38b62e2" + integrity sha512-TBKWkbnShnEjlIbO4/gfsrIgAqHBVqgPWLbWmPdZ80bF393yJcLgkrb7bZEnJs6FCbSSuGwZv2rx1jDR2zo6YA== + +"@swc/core-darwin-x64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.0.tgz#d03a71e60244f19ac921bf23c2cafc4122d76d8e" + integrity sha512-f5JKL1v1H56CIZc1pVn4RGPOfnWqPwmuHdpf4wesvXunF1Bx85YgcspW5YxwqG5J9g3nPU610UFuExJXVUzOiQ== + +"@swc/core-linux-arm-gnueabihf@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.0.tgz#fe978712a8924c0555c6b248ad3b57912ba123fb" + integrity sha512-duK6nG+WyuunnfsfiTUQdzC9Fk8cyDLqT9zyXvY2i2YgDu5+BH5W6wM5O4mDNCU5MocyB/SuF5YDF7XySnowiQ== + +"@swc/core-linux-arm64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.0.tgz#a5dacdd857dec4ac2931820def17bc0e42c88ede" + integrity sha512-ITe9iDtTRXM98B91rvyPP6qDVbhUBnmA/j4UxrHlMQ0RlwpqTjfZYZkD0uclOxSZ6qIrOj/X5CaoJlDUuQ0+Cw== + +"@swc/core-linux-arm64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.0.tgz#243643a7d22c8e2f334046c1d76f342ad4369be9" + integrity sha512-Q5ldc2bzriuzYEoAuqJ9Vr3FyZhakk5hiwDbniZ8tlEXpbjBhbOleGf9/gkhLaouDnkNUEazFW9mtqwUTRdh7Q== + +"@swc/core-linux-x64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.0.tgz#26936f55c916f65d33a4cf957c7573722f9eca54" + integrity sha512-pY4is+jEpOxlYCSnI+7N8Oxbap9TmTz5YT84tUvRTlOlTBwFAUlWFCX0FRwWJlsfP0TxbqhIe8dNNzlsEmJbXQ== + +"@swc/core-linux-x64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.0.tgz#a7164c11ac86ed99a1d5d8bef86ec0fbe6235f6c" + integrity sha512-zYEt5eT8y8RUpoe7t5pjpoOdGu+/gSTExj8PV86efhj6ugB3bPlj3Y85ogdW3WMVXr4NvwqvzdaYGCZfXzSyVg== + +"@swc/core-win32-arm64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.0.tgz#645fe54564eab4224127672f2f4fe44876223af0" + integrity sha512-zC1rmOgFH5v2BCbByOazEqs0aRNpTdLRchDExfcCfgKgeaD+IdpUOqp7i3VG1YzkcnbuZjMlXfM0ugpt+CddoA== + +"@swc/core-win32-ia32-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.0.tgz#fd70c8c8b542a52a88cda758fb82569d52ea949a" + integrity sha512-7t9U9KwMwQblkdJIH+zX1V4q1o3o41i0HNO+VlnAHT5o+5qHJ963PHKJ/pX3P2UlZnBCY465orJuflAN4rAP9A== + +"@swc/core-win32-x64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.0.tgz#1d4f06078c7dbf757c537dd08740472694257198" + integrity sha512-VE0Zod5vcs8iMLT64m5QS1DlTMXJFI/qSgtMDRx8rtZrnjt6/9NW8XUaiPJuRu8GluEO1hmHoyf1qlbY19gGSQ== + +"@swc/core@^1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.15.0.tgz#6ae4dbd5a164261ba799ccdf9eae3bbc61e112c2" + integrity sha512-8SnJV+JV0rYbfSiEiUvYOmf62E7QwsEG+aZueqSlKoxFt0pw333+bgZSQXGUV6etXU88nxur0afVMaINujBMSw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.25" + optionalDependencies: + "@swc/core-darwin-arm64" "1.15.0" + "@swc/core-darwin-x64" "1.15.0" + "@swc/core-linux-arm-gnueabihf" "1.15.0" + "@swc/core-linux-arm64-gnu" "1.15.0" + "@swc/core-linux-arm64-musl" "1.15.0" + "@swc/core-linux-x64-gnu" "1.15.0" + "@swc/core-linux-x64-musl" "1.15.0" + "@swc/core-win32-arm64-msvc" "1.15.0" + "@swc/core-win32-ia32-msvc" "1.15.0" + "@swc/core-win32-x64-msvc" "1.15.0" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.25": + version "0.1.25" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078" + integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== + dependencies: + "@swc/counter" "^0.1.3" + "@tailwindcss/aspect-ratio@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz#9ffd52fee8e3c8b20623ff0dcb29e5c21fb0a9ba" @@ -6341,6 +6422,13 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" +swc-loader@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8" + integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg== + dependencies: + "@swc/counter" "^0.1.3" + symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" diff --git a/react_on_rails_pro/spec/execjs-compatible-dummy/config/webpack/serverWebpackConfig.js b/react_on_rails_pro/spec/execjs-compatible-dummy/config/webpack/serverWebpackConfig.js index 9673f64a0a..11ba1a94d0 100644 --- a/react_on_rails_pro/spec/execjs-compatible-dummy/config/webpack/serverWebpackConfig.js +++ b/react_on_rails_pro/spec/execjs-compatible-dummy/config/webpack/serverWebpackConfig.js @@ -48,6 +48,8 @@ const configureServer = () => { serverWebpackConfig.output = { filename: 'server-bundle.js', globalObject: 'this', + // Note: libraryTarget should only be 'commonjs2' when using Node renderer + // For ExecJS (default), leave it undefined to allow proper evaluation // If using the React on Rails Pro node server renderer, uncomment the next line // libraryTarget: 'commonjs2', path: config.outputPath, @@ -109,8 +111,18 @@ const configureServer = () => { // If using the default 'web', then libraries like Emotion and loadable-components // break with SSR. The fix is to use a node renderer and change the target. - // If using the React on Rails Pro node server renderer, uncomment the next line - // serverWebpackConfig.target = 'node' + // If using the React on Rails Pro node server renderer, uncomment the next lines + // serverWebpackConfig.target = 'node'; + // + // // React 19 Fix: Prevent webpack from resolving to react-server condition + // // The server-bundle needs the full React with hooks for SSR, not the react-server build + // // Explicitly set conditionNames without react-server + // if (!serverWebpackConfig.resolve) { + // serverWebpackConfig.resolve = {}; + // } + // // For target: 'node', webpack defaults to ['node', 'import', 'require', 'default'] + // // We explicitly list them to ensure react-server is not included + // serverWebpackConfig.resolve.conditionNames = ['node', 'import', 'require', 'default']; return serverWebpackConfig; }; diff --git a/react_on_rails_pro/spec/execjs-compatible-dummy/yarn.lock b/react_on_rails_pro/spec/execjs-compatible-dummy/yarn.lock index 3b2b4dad48..20b19ee354 100644 --- a/react_on_rails_pro/spec/execjs-compatible-dummy/yarn.lock +++ b/react_on_rails_pro/spec/execjs-compatible-dummy/yarn.lock @@ -934,6 +934,87 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@swc/core-darwin-arm64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.0.tgz#158a0890fb2546b4d57b99234c1033e4a38b62e2" + integrity sha512-TBKWkbnShnEjlIbO4/gfsrIgAqHBVqgPWLbWmPdZ80bF393yJcLgkrb7bZEnJs6FCbSSuGwZv2rx1jDR2zo6YA== + +"@swc/core-darwin-x64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.0.tgz#d03a71e60244f19ac921bf23c2cafc4122d76d8e" + integrity sha512-f5JKL1v1H56CIZc1pVn4RGPOfnWqPwmuHdpf4wesvXunF1Bx85YgcspW5YxwqG5J9g3nPU610UFuExJXVUzOiQ== + +"@swc/core-linux-arm-gnueabihf@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.0.tgz#fe978712a8924c0555c6b248ad3b57912ba123fb" + integrity sha512-duK6nG+WyuunnfsfiTUQdzC9Fk8cyDLqT9zyXvY2i2YgDu5+BH5W6wM5O4mDNCU5MocyB/SuF5YDF7XySnowiQ== + +"@swc/core-linux-arm64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.0.tgz#a5dacdd857dec4ac2931820def17bc0e42c88ede" + integrity sha512-ITe9iDtTRXM98B91rvyPP6qDVbhUBnmA/j4UxrHlMQ0RlwpqTjfZYZkD0uclOxSZ6qIrOj/X5CaoJlDUuQ0+Cw== + +"@swc/core-linux-arm64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.0.tgz#243643a7d22c8e2f334046c1d76f342ad4369be9" + integrity sha512-Q5ldc2bzriuzYEoAuqJ9Vr3FyZhakk5hiwDbniZ8tlEXpbjBhbOleGf9/gkhLaouDnkNUEazFW9mtqwUTRdh7Q== + +"@swc/core-linux-x64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.0.tgz#26936f55c916f65d33a4cf957c7573722f9eca54" + integrity sha512-pY4is+jEpOxlYCSnI+7N8Oxbap9TmTz5YT84tUvRTlOlTBwFAUlWFCX0FRwWJlsfP0TxbqhIe8dNNzlsEmJbXQ== + +"@swc/core-linux-x64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.0.tgz#a7164c11ac86ed99a1d5d8bef86ec0fbe6235f6c" + integrity sha512-zYEt5eT8y8RUpoe7t5pjpoOdGu+/gSTExj8PV86efhj6ugB3bPlj3Y85ogdW3WMVXr4NvwqvzdaYGCZfXzSyVg== + +"@swc/core-win32-arm64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.0.tgz#645fe54564eab4224127672f2f4fe44876223af0" + integrity sha512-zC1rmOgFH5v2BCbByOazEqs0aRNpTdLRchDExfcCfgKgeaD+IdpUOqp7i3VG1YzkcnbuZjMlXfM0ugpt+CddoA== + +"@swc/core-win32-ia32-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.0.tgz#fd70c8c8b542a52a88cda758fb82569d52ea949a" + integrity sha512-7t9U9KwMwQblkdJIH+zX1V4q1o3o41i0HNO+VlnAHT5o+5qHJ963PHKJ/pX3P2UlZnBCY465orJuflAN4rAP9A== + +"@swc/core-win32-x64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.0.tgz#1d4f06078c7dbf757c537dd08740472694257198" + integrity sha512-VE0Zod5vcs8iMLT64m5QS1DlTMXJFI/qSgtMDRx8rtZrnjt6/9NW8XUaiPJuRu8GluEO1hmHoyf1qlbY19gGSQ== + +"@swc/core@^1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.15.0.tgz#6ae4dbd5a164261ba799ccdf9eae3bbc61e112c2" + integrity sha512-8SnJV+JV0rYbfSiEiUvYOmf62E7QwsEG+aZueqSlKoxFt0pw333+bgZSQXGUV6etXU88nxur0afVMaINujBMSw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.25" + optionalDependencies: + "@swc/core-darwin-arm64" "1.15.0" + "@swc/core-darwin-x64" "1.15.0" + "@swc/core-linux-arm-gnueabihf" "1.15.0" + "@swc/core-linux-arm64-gnu" "1.15.0" + "@swc/core-linux-arm64-musl" "1.15.0" + "@swc/core-linux-x64-gnu" "1.15.0" + "@swc/core-linux-x64-musl" "1.15.0" + "@swc/core-win32-arm64-msvc" "1.15.0" + "@swc/core-win32-ia32-msvc" "1.15.0" + "@swc/core-win32-x64-msvc" "1.15.0" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.25": + version "0.1.25" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078" + integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== + dependencies: + "@swc/counter" "^0.1.3" + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -3890,6 +3971,13 @@ svgo@^3.3.2: csso "^5.0.5" picocolors "^1.0.0" +swc-loader@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8" + integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg== + dependencies: + "@swc/counter" "^0.1.3" + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" diff --git a/spec/dummy/config/webpack/serverWebpackConfig.js b/spec/dummy/config/webpack/serverWebpackConfig.js index 33af3e9eb1..14321044a5 100644 --- a/spec/dummy/config/webpack/serverWebpackConfig.js +++ b/spec/dummy/config/webpack/serverWebpackConfig.js @@ -45,6 +45,8 @@ const configureServer = () => { serverWebpackConfig.output = { filename: 'server-bundle.js', globalObject: 'this', + // Note: libraryTarget should only be 'commonjs2' when using Node renderer + // For ExecJS (default), leave it undefined to allow proper evaluation // If using the React on Rails Pro node server renderer, uncomment the next line // libraryTarget: 'commonjs2', path: config.outputPath, @@ -107,8 +109,18 @@ const configureServer = () => { // If using the default 'web', then libraries like Emotion and loadable-components // break with SSR. The fix is to use a node renderer and change the target. - // If using the React on Rails Pro node server renderer, uncomment the next line - // serverWebpackConfig.target = 'node' + // If using the React on Rails Pro node server renderer, uncomment the next lines + // serverWebpackConfig.target = 'node'; + // + // // React 19 Fix: Prevent webpack from resolving to react-server condition + // // The server-bundle needs the full React with hooks for SSR, not the react-server build + // // Explicitly set conditionNames without react-server + // if (!serverWebpackConfig.resolve) { + // serverWebpackConfig.resolve = {}; + // } + // // For target: 'node', webpack defaults to ['node', 'import', 'require', 'default'] + // // We explicitly list them to ensure react-server is not included + // serverWebpackConfig.resolve.conditionNames = ['node', 'import', 'require', 'default']; return serverWebpackConfig; }; diff --git a/spec/dummy/yarn.lock b/spec/dummy/yarn.lock index 861988c666..ed01f0e71a 100644 --- a/spec/dummy/yarn.lock +++ b/spec/dummy/yarn.lock @@ -1362,6 +1362,87 @@ dependencies: "@sinonjs/commons" "^3.0.0" +"@swc/core-darwin-arm64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.0.tgz#158a0890fb2546b4d57b99234c1033e4a38b62e2" + integrity sha512-TBKWkbnShnEjlIbO4/gfsrIgAqHBVqgPWLbWmPdZ80bF393yJcLgkrb7bZEnJs6FCbSSuGwZv2rx1jDR2zo6YA== + +"@swc/core-darwin-x64@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.0.tgz#d03a71e60244f19ac921bf23c2cafc4122d76d8e" + integrity sha512-f5JKL1v1H56CIZc1pVn4RGPOfnWqPwmuHdpf4wesvXunF1Bx85YgcspW5YxwqG5J9g3nPU610UFuExJXVUzOiQ== + +"@swc/core-linux-arm-gnueabihf@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.0.tgz#fe978712a8924c0555c6b248ad3b57912ba123fb" + integrity sha512-duK6nG+WyuunnfsfiTUQdzC9Fk8cyDLqT9zyXvY2i2YgDu5+BH5W6wM5O4mDNCU5MocyB/SuF5YDF7XySnowiQ== + +"@swc/core-linux-arm64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.0.tgz#a5dacdd857dec4ac2931820def17bc0e42c88ede" + integrity sha512-ITe9iDtTRXM98B91rvyPP6qDVbhUBnmA/j4UxrHlMQ0RlwpqTjfZYZkD0uclOxSZ6qIrOj/X5CaoJlDUuQ0+Cw== + +"@swc/core-linux-arm64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.0.tgz#243643a7d22c8e2f334046c1d76f342ad4369be9" + integrity sha512-Q5ldc2bzriuzYEoAuqJ9Vr3FyZhakk5hiwDbniZ8tlEXpbjBhbOleGf9/gkhLaouDnkNUEazFW9mtqwUTRdh7Q== + +"@swc/core-linux-x64-gnu@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.0.tgz#26936f55c916f65d33a4cf957c7573722f9eca54" + integrity sha512-pY4is+jEpOxlYCSnI+7N8Oxbap9TmTz5YT84tUvRTlOlTBwFAUlWFCX0FRwWJlsfP0TxbqhIe8dNNzlsEmJbXQ== + +"@swc/core-linux-x64-musl@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.0.tgz#a7164c11ac86ed99a1d5d8bef86ec0fbe6235f6c" + integrity sha512-zYEt5eT8y8RUpoe7t5pjpoOdGu+/gSTExj8PV86efhj6ugB3bPlj3Y85ogdW3WMVXr4NvwqvzdaYGCZfXzSyVg== + +"@swc/core-win32-arm64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.0.tgz#645fe54564eab4224127672f2f4fe44876223af0" + integrity sha512-zC1rmOgFH5v2BCbByOazEqs0aRNpTdLRchDExfcCfgKgeaD+IdpUOqp7i3VG1YzkcnbuZjMlXfM0ugpt+CddoA== + +"@swc/core-win32-ia32-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.0.tgz#fd70c8c8b542a52a88cda758fb82569d52ea949a" + integrity sha512-7t9U9KwMwQblkdJIH+zX1V4q1o3o41i0HNO+VlnAHT5o+5qHJ963PHKJ/pX3P2UlZnBCY465orJuflAN4rAP9A== + +"@swc/core-win32-x64-msvc@1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.0.tgz#1d4f06078c7dbf757c537dd08740472694257198" + integrity sha512-VE0Zod5vcs8iMLT64m5QS1DlTMXJFI/qSgtMDRx8rtZrnjt6/9NW8XUaiPJuRu8GluEO1hmHoyf1qlbY19gGSQ== + +"@swc/core@^1.15.0": + version "1.15.0" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.15.0.tgz#6ae4dbd5a164261ba799ccdf9eae3bbc61e112c2" + integrity sha512-8SnJV+JV0rYbfSiEiUvYOmf62E7QwsEG+aZueqSlKoxFt0pw333+bgZSQXGUV6etXU88nxur0afVMaINujBMSw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.25" + optionalDependencies: + "@swc/core-darwin-arm64" "1.15.0" + "@swc/core-darwin-x64" "1.15.0" + "@swc/core-linux-arm-gnueabihf" "1.15.0" + "@swc/core-linux-arm64-gnu" "1.15.0" + "@swc/core-linux-arm64-musl" "1.15.0" + "@swc/core-linux-x64-gnu" "1.15.0" + "@swc/core-linux-x64-musl" "1.15.0" + "@swc/core-win32-arm64-msvc" "1.15.0" + "@swc/core-win32-ia32-msvc" "1.15.0" + "@swc/core-win32-x64-msvc" "1.15.0" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.25": + version "0.1.25" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078" + integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== + dependencies: + "@swc/counter" "^0.1.3" + "@types/babel__core@^7.1.14": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -5968,6 +6049,13 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swc-loader@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8" + integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg== + dependencies: + "@swc/counter" "^0.1.3" + symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"