From e220589506824d48b82103ccd3856dfb895880fd Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Mar 2026 13:43:08 +0100 Subject: [PATCH 1/4] frontend-plugin-api: remove defineParams from PluginHeaderActionBlueprint Replace the defineParams + createExtensionBlueprintParams pattern with inline param types on the factory, matching PageBlueprint, SubPageBlueprint, and other blueprints. Update the app-visualizer usage accordingly. Signed-off-by: Patrik Oldsberg Made-with: Cursor --- .../remove-plugin-header-action-define-params.md | 5 +++++ .changeset/update-app-visualizer-header-action.md | 5 +++++ packages/frontend-plugin-api/report.api.md | 6 ++---- .../src/blueprints/PluginHeaderActionBlueprint.tsx | 11 ++--------- plugins/app-visualizer/report.api.md | 7 ++----- plugins/app-visualizer/src/plugin.tsx | 9 ++++----- 6 files changed, 20 insertions(+), 23 deletions(-) create mode 100644 .changeset/remove-plugin-header-action-define-params.md create mode 100644 .changeset/update-app-visualizer-header-action.md diff --git a/.changeset/remove-plugin-header-action-define-params.md b/.changeset/remove-plugin-header-action-define-params.md new file mode 100644 index 0000000000..8bbdf99466 --- /dev/null +++ b/.changeset/remove-plugin-header-action-define-params.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': minor +--- + +**BREAKING**: Removed the `defineParams` callback from `PluginHeaderActionBlueprint`. Params are now typed inline on the factory, matching the pattern used by `PageBlueprint`, `SubPageBlueprint`, and others. To migrate, change `params: defineParams => defineParams({ ... })` to `params: { ... }` when calling `PluginHeaderActionBlueprint.make(...)`. diff --git a/.changeset/update-app-visualizer-header-action.md b/.changeset/update-app-visualizer-header-action.md new file mode 100644 index 0000000000..e95e84eb43 --- /dev/null +++ b/.changeset/update-app-visualizer-header-action.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-app-visualizer': patch +--- + +Updated `PluginHeaderActionBlueprint` usage to pass params as a plain object. diff --git a/packages/frontend-plugin-api/report.api.md b/packages/frontend-plugin-api/report.api.md index c3936ba0da..7008aae801 100644 --- a/packages/frontend-plugin-api/report.api.md +++ b/packages/frontend-plugin-api/report.api.md @@ -1951,11 +1951,9 @@ export type PendingOAuthRequest = { // @public export const PluginHeaderActionBlueprint: ExtensionBlueprint_2<{ kind: 'plugin-header-action'; - params: (params: { + params: { loader: () => Promise; - }) => ExtensionBlueprintParams_2<{ - loader: () => Promise; - }>; + }; output: ExtensionDataRef_2; inputs: {}; config: {}; diff --git a/packages/frontend-plugin-api/src/blueprints/PluginHeaderActionBlueprint.tsx b/packages/frontend-plugin-api/src/blueprints/PluginHeaderActionBlueprint.tsx index 84ed9da7ff..eb0c24420d 100644 --- a/packages/frontend-plugin-api/src/blueprints/PluginHeaderActionBlueprint.tsx +++ b/packages/frontend-plugin-api/src/blueprints/PluginHeaderActionBlueprint.tsx @@ -16,11 +16,7 @@ import { lazy as reactLazy } from 'react'; import { ExtensionBoundary } from '../components'; -import { - coreExtensionData, - createExtensionBlueprint, - createExtensionBlueprintParams, -} from '../wiring'; +import { coreExtensionData, createExtensionBlueprint } from '../wiring'; /** * Creates extensions that provide plugin-scoped header actions. @@ -36,10 +32,7 @@ export const PluginHeaderActionBlueprint = createExtensionBlueprint({ kind: 'plugin-header-action', attachTo: { id: 'api:app/plugin-header-actions', input: 'actions' }, output: [coreExtensionData.reactElement], - defineParams(params: { loader: () => Promise }) { - return createExtensionBlueprintParams(params); - }, - *factory(params, { node }) { + *factory(params: { loader: () => Promise }, { node }) { const LazyAction = reactLazy(() => params.loader().then(element => ({ default: () => element })), ); diff --git a/plugins/app-visualizer/report.api.md b/plugins/app-visualizer/report.api.md index 9ee06eccb0..ba29cb92dc 100644 --- a/plugins/app-visualizer/report.api.md +++ b/plugins/app-visualizer/report.api.md @@ -5,7 +5,6 @@ ```ts import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { IconComponent } from '@backstage/frontend-plugin-api'; @@ -124,11 +123,9 @@ const visualizerPlugin: OverridableFrontendPlugin< configInput: {}; output: ExtensionDataRef; inputs: {}; - params: (params: { + params: { loader: () => Promise; - }) => ExtensionBlueprintParams<{ - loader: () => Promise; - }>; + }; }>; 'sub-page:app-visualizer/details': OverridableExtensionDefinition<{ kind: 'sub-page'; diff --git a/plugins/app-visualizer/src/plugin.tsx b/plugins/app-visualizer/src/plugin.tsx index 9fa7b2cd72..fab8479c54 100644 --- a/plugins/app-visualizer/src/plugin.tsx +++ b/plugins/app-visualizer/src/plugin.tsx @@ -76,11 +76,10 @@ const appVisualizerTextPage = SubPageBlueprint.make({ }); const copyTreeAsJson = PluginHeaderActionBlueprint.make({ - params: defineParams => - defineParams({ - loader: () => - import('./components/CopyTreeButton').then(m => ), - }), + params: { + loader: () => + import('./components/CopyTreeButton').then(m => ), + }, }); export const appVisualizerNavItem = NavItemBlueprint.make({ From 5a9297ac8d1e6974a79413d0825ba5c678b70114 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Mar 2026 15:05:59 +0100 Subject: [PATCH 2/4] Downgrade changeset to patch (not a breaking change) Signed-off-by: Patrik Oldsberg Made-with: Cursor --- .changeset/remove-plugin-header-action-define-params.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/remove-plugin-header-action-define-params.md b/.changeset/remove-plugin-header-action-define-params.md index 8bbdf99466..fa19efeb37 100644 --- a/.changeset/remove-plugin-header-action-define-params.md +++ b/.changeset/remove-plugin-header-action-define-params.md @@ -1,5 +1,5 @@ --- -'@backstage/frontend-plugin-api': minor +'@backstage/frontend-plugin-api': patch --- -**BREAKING**: Removed the `defineParams` callback from `PluginHeaderActionBlueprint`. Params are now typed inline on the factory, matching the pattern used by `PageBlueprint`, `SubPageBlueprint`, and others. To migrate, change `params: defineParams => defineParams({ ... })` to `params: { ... }` when calling `PluginHeaderActionBlueprint.make(...)`. +Removed the `defineParams` callback from `PluginHeaderActionBlueprint`. Params are now typed inline on the factory, matching the pattern used by `PageBlueprint`, `SubPageBlueprint`, and others. From a39ab350429991dc98b5d8eb508abe7785880f78 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Mar 2026 19:09:06 +0100 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Patrik Oldsberg Signed-off-by: Patrik Oldsberg --- .changeset/remove-plugin-header-action-define-params.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/remove-plugin-header-action-define-params.md b/.changeset/remove-plugin-header-action-define-params.md index fa19efeb37..d3dbcdc410 100644 --- a/.changeset/remove-plugin-header-action-define-params.md +++ b/.changeset/remove-plugin-header-action-define-params.md @@ -2,4 +2,4 @@ '@backstage/frontend-plugin-api': patch --- -Removed the `defineParams` callback from `PluginHeaderActionBlueprint`. Params are now typed inline on the factory, matching the pattern used by `PageBlueprint`, `SubPageBlueprint`, and others. +Removed the unnecessary need to use `defineParams` callback from `PluginHeaderActionBlueprint`. It still works, but is no longer required. From f5d727ab6025cf450ef2944c6e6a57784f5bad85 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Mar 2026 19:23:17 +0100 Subject: [PATCH 4/4] Fix prettier formatting in changeset Signed-off-by: Patrik Oldsberg Made-with: Cursor --- .changeset/remove-plugin-header-action-define-params.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/remove-plugin-header-action-define-params.md b/.changeset/remove-plugin-header-action-define-params.md index d3dbcdc410..93a85856e2 100644 --- a/.changeset/remove-plugin-header-action-define-params.md +++ b/.changeset/remove-plugin-header-action-define-params.md @@ -2,4 +2,4 @@ '@backstage/frontend-plugin-api': patch --- -Removed the unnecessary need to use `defineParams` callback from `PluginHeaderActionBlueprint`. It still works, but is no longer required. +Removed the unnecessary need to use `defineParams` callback from `PluginHeaderActionBlueprint`. It still works, but is no longer required.