Skip to content

Commit

Permalink
Don’t use native built-ins for additional bundler
Browse files Browse the repository at this point in the history
This opts us out of using the native built-in plugins for Rspack for now.

The existing swc plugin we use for webpack does additional work beyond just swc transformation, including validating RSC components to make sure they don’t use React APIs unavailable in that context.

In total, the native plugins result in a less than 20% performance gain which, while significant, isn’t necessary as we focus on correctness for now.

If we decide the maintenance cost of maintaining multiple plugins in parity is worth the performance gain in the future, we can selectively re-enable some or all of these plugins.

Test Plan: `pnpm test-dev-rspack test/development/acceptance/server-component-compiler-errors-in-pages.test.ts` no longer fails by missing the invalid React api messages.
  • Loading branch information
wbinnssmith committed Feb 27, 2025
1 parent 8df92f1 commit ad2f311
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 7 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"storybook": "turbo run storybook",
"build-storybook": "turbo run build-storybook",
"test-storybook": "turbo run test-storybook",
"with-rspack": "cross-env NEXT_RSPACK=1 NEXT_TEST_USE_RSPACK=1 BUILTIN_FLIGHT_CLIENT_ENTRY_PLUGIN=1 BUILTIN_APP_LOADER=1 BUILTIN_SWC_LOADER=1"
"with-rspack": "cross-env NEXT_RSPACK=1 NEXT_TEST_USE_RSPACK=1"
},
"devDependencies": {
"@actions/core": "1.10.1",
Expand Down
4 changes: 1 addition & 3 deletions packages/next-plugin-rspack/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
module.exports = function withRspack(config) {
process.env.NEXT_RSPACK = 'true'
process.env.BUILTIN_FLIGHT_CLIENT_ENTRY_PLUGIN = 'true'
process.env.BUILTIN_APP_LOADER = 'true'
process.env.BUILTIN_SWC_LOADER = 'true'
process.env.RSPACK_CONFIG_VALIDATE = 'loose-silent'
return config
}
4 changes: 1 addition & 3 deletions test/lib/create-next-install.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,7 @@ async function createNextInstall({
// This is what the @next/plugin-rspack plugin does.
// TODO: Load the plugin properly during test
process.env.NEXT_RSPACK = 'true'
process.env.BUILTIN_FLIGHT_CLIENT_ENTRY_PLUGIN = 'true'
process.env.BUILTIN_APP_LOADER = 'true'
process.env.BUILTIN_SWC_LOADER = 'true'
process.env.RSPACK_CONFIG_VALIDATE = 'loose-silent'
}

return {
Expand Down

0 comments on commit ad2f311

Please sign in to comment.