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,