diff --git a/.changeset/metal-candles-tease.md b/.changeset/metal-candles-tease.md new file mode 100644 index 0000000000..a48df562e4 --- /dev/null +++ b/.changeset/metal-candles-tease.md @@ -0,0 +1,5 @@ +--- +'@backstage/dev-utils': patch +--- + +Fixed routing when using React Router v6 stable. diff --git a/packages/dev-utils/src/devApp/render.tsx b/packages/dev-utils/src/devApp/render.tsx index 5cd77528a4..e04779b4d1 100644 --- a/packages/dev-utils/src/devApp/render.tsx +++ b/packages/dev-utils/src/devApp/render.tsx @@ -46,16 +46,23 @@ import { Box } from '@material-ui/core'; import BookmarkIcon from '@material-ui/icons/Bookmark'; import React, { ComponentType, ReactNode } from 'react'; import ReactDOM from 'react-dom'; -import { Route } from 'react-router'; +import { createRoutesFromChildren, Route } from 'react-router'; import { SidebarThemeSwitcher } from './SidebarThemeSwitcher'; -const GatheringRoute: (props: { +export function isReactRouterBeta(): boolean { + const [obj] = createRoutesFromChildren(} />); + return !obj.index; +} + +const MaybeGatheringRoute: (props: { path: string; element: JSX.Element; children?: ReactNode; }) => JSX.Element = ({ element }) => element; -attachComponentData(GatheringRoute, 'core.gatherMountPoints', true); +if (isReactRouterBeta()) { + attachComponentData(MaybeGatheringRoute, 'core.gatherMountPoints', true); +} /** @public */ export type DevAppPageOptions = { @@ -136,7 +143,7 @@ export class DevAppBuilder { ); } this.routes.push( -