diff --git a/.changeset/breezy-pets-hug.md b/.changeset/breezy-pets-hug.md new file mode 100644 index 0000000000..2c07e29f33 --- /dev/null +++ b/.changeset/breezy-pets-hug.md @@ -0,0 +1,5 @@ +--- +"react-router": patch +--- + +Don't bundle `react-router` in `react-router/dom` CJS export diff --git a/packages/react-router/__tests__/dom/dom-export-test.tsx b/packages/react-router/__tests__/dom/dom-export-test.tsx new file mode 100644 index 0000000000..2ecd4172b0 --- /dev/null +++ b/packages/react-router/__tests__/dom/dom-export-test.tsx @@ -0,0 +1,40 @@ +import * as React from "react"; + +import { render, screen } from "@testing-library/react"; +import { createMemoryRouter, useParams } from "react-router"; +import { RouterProvider } from "react-router/dom"; + +describe("react-router/dom", () => { + function ShowParams() { + return
{JSON.stringify(useParams())}; + } + + describe("Does not bundle react-router causing duplicate context issues", () => { + it("with route provider shows the url params", async () => { + const router = createMemoryRouter( + [ + { + path: "/blog/:slug", + element:
+ {"slug":"react-router"} ++ `); + }); + }); +}); diff --git a/packages/react-router/tsup.config.ts b/packages/react-router/tsup.config.ts index 5d93e3e81b..cd5f0def14 100644 --- a/packages/react-router/tsup.config.ts +++ b/packages/react-router/tsup.config.ts @@ -13,6 +13,8 @@ const config = (enableDevWarnings: boolean) => clean: false, entry, format: ["cjs"], + // Don't bundle `react-router` in sub-exports (i.e., `react-router/dom`) + external: ["react-router"], outDir: enableDevWarnings ? "dist/development" : "dist/production", dts: true, banner: { @@ -28,6 +30,10 @@ const config = (enableDevWarnings: boolean) => clean: false, entry, format: ["esm"], + // We don't do the external thing for `react-router` here because it + // doesn't get bundled by default in the ESM build, and when we tried it + // in https://github.com/remix-run/react-router/pull/13497 it changed up + // some chunk creation that we didn't want to risk having any side effects outDir: enableDevWarnings ? "dist/development" : "dist/production", dts: true, banner: {