diff --git a/.changeset/kind-cycles-happen.md b/.changeset/kind-cycles-happen.md new file mode 100644 index 0000000000..7ebe870d46 --- /dev/null +++ b/.changeset/kind-cycles-happen.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-app-api': patch +'@backstage/cli': patch +--- + +Added deprecation warning for React Router v6 beta, please make sure you have migrated your apps to use React Router v6 stable as support for the beta version will be removed. See the [migration tutorial](https://backstage.io/docs/tutorials/react-router-stable-migration) for more information. diff --git a/packages/cli/src/lib/bundler/server.ts b/packages/cli/src/lib/bundler/server.ts index bd70b2b074..2fd1385584 100644 --- a/packages/cli/src/lib/bundler/server.ts +++ b/packages/cli/src/lib/bundler/server.ts @@ -72,6 +72,20 @@ export async function serveBundle(options: ServeOptions) { ), ); } + + if ( + targetPkg.dependencies?.['react-router']?.includes('beta') || + targetPkg.dependencies?.['react-router-dom']?.includes('beta') + ) { + // eslint-disable-next-line no-console + console.warn( + chalk.yellow(` +DEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release. + Please migrate to use React Router v6 stable. + See https://backstage.io/docs/tutorials/react-router-stable-migration +`), + ); + } } checkReactVersion(); diff --git a/packages/core-app-api/src/app/AppManager.tsx b/packages/core-app-api/src/app/AppManager.tsx index 37407283b5..c8cdfd7c23 100644 --- a/packages/core-app-api/src/app/AppManager.tsx +++ b/packages/core-app-api/src/app/AppManager.tsx @@ -240,11 +240,21 @@ export class AppManager implements BackstageApp { ); const { routing, featureFlags, routeBindings } = useMemo(() => { + const usesReactRouterBeta = isReactRouterBeta(); + if (usesReactRouterBeta) { + // eslint-disable-next-line no-console + console.warn(` +DEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release. + Please migrate to use React Router v6 stable. + See https://backstage.io/docs/tutorials/react-router-stable-migration +`); + } + const result = traverseElementTree({ root: children, discoverers: [childDiscoverer, routeElementDiscoverer], collectors: { - routing: isReactRouterBeta() + routing: usesReactRouterBeta ? routingV1Collector : routingV2Collector, collectedPlugins: pluginCollector,