From 3f45861646221a9a55d5ead3dfe93b0abbd62138 Mon Sep 17 00:00:00 2001 From: Paul Schultz Date: Tue, 13 May 2025 17:00:20 -0500 Subject: [PATCH] feat: add a react 17 deprecation warning Signed-off-by: Paul Schultz --- .changeset/fluffy-lands-stand.md | 5 +++++ .../modules/start/commands/package/start/startFrontend.ts | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/fluffy-lands-stand.md diff --git a/.changeset/fluffy-lands-stand.md b/.changeset/fluffy-lands-stand.md new file mode 100644 index 0000000000..8f1452d7b3 --- /dev/null +++ b/.changeset/fluffy-lands-stand.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': minor +--- + +Add a warning for React 17 deprecation that triggers when frontend packages and plugins start. diff --git a/packages/cli/src/modules/start/commands/package/start/startFrontend.ts b/packages/cli/src/modules/start/commands/package/start/startFrontend.ts index d4b2f6a1cd..aaadf3ed95 100644 --- a/packages/cli/src/modules/start/commands/package/start/startFrontend.ts +++ b/packages/cli/src/modules/start/commands/package/start/startFrontend.ts @@ -22,6 +22,7 @@ import { } from '../../../../build/lib/bundler'; import { paths } from '../../../../../lib/paths'; import { BackstagePackageJson } from '@backstage/cli-node'; +import { hasReactDomClient } from '../../../../build/lib/bundler/hasReactDomClient'; interface StartAppOptions { verifyVersions?: boolean; @@ -40,6 +41,12 @@ export async function startFrontend(options: StartAppOptions) { resolvePath(options.targetDir ?? paths.targetDir, 'package.json'), )) as BackstagePackageJson; + if (!hasReactDomClient()) { + console.warn( + 'React 17 is now deprecated! Please follow the Backstage migration guide to update to React 18: https://backstage.io/docs/tutorials/react18-migration/', + ); + } + const waitForExit = await serveBundle({ entry: options.entry, targetDir: options.targetDir,