diff --git a/.changeset/tiny-phones-dedup.md b/.changeset/tiny-phones-dedup.md new file mode 100644 index 0000000000..c55a797b8b --- /dev/null +++ b/.changeset/tiny-phones-dedup.md @@ -0,0 +1,5 @@ +--- +'@tanstack/react-start': patch +--- + +Deduplicate React packages in the React Start Rsbuild plugin. diff --git a/packages/react-start/src/plugin/rsbuild.ts b/packages/react-start/src/plugin/rsbuild.ts index 7e0fcbb6c2..bd159690f1 100644 --- a/packages/react-start/src/plugin/rsbuild.ts +++ b/packages/react-start/src/plugin/rsbuild.ts @@ -10,6 +10,16 @@ import type { } from '@tanstack/start-plugin-core/rsbuild' import type { RsbuildPlugin } from '@rsbuild/core' +const reactStartRsbuildEnvironmentOverrides = { + all: { + resolve: { + dedupe: ['react', 'react-dom'], + }, + }, +} satisfies NonNullable< + TanStackStartRsbuildPluginCoreOptions['rsbuild'] +>['environments'] + export function tanstackStart( options?: TanStackStartRsbuildInputConfig & { rsc?: { enabled?: boolean } }, ): RsbuildPlugin { @@ -20,6 +30,9 @@ export function tanstackStart( defaultEntryPaths: reactStartDefaultEntryPaths, providerEnvironmentName: RSBUILD_ENVIRONMENT_NAMES.server, ssrIsProvider: true, + rsbuild: { + environments: reactStartRsbuildEnvironmentOverrides, + }, } if (rscEnabled) {