From 3e358b0dff0af5740206e84d6aaf2ebd28eac0dc Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 23 Nov 2023 16:43:19 +0100 Subject: [PATCH] deprecate support for react-router beta Signed-off-by: Patrik Oldsberg --- .changeset/kind-cycles-happen.md | 6 ++++++ packages/cli/src/lib/bundler/server.ts | 14 ++++++++++++++ packages/core-app-api/src/app/AppManager.tsx | 12 +++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 .changeset/kind-cycles-happen.md 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,