From 44d77e9680117281a8743295696c2fea69469ec1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 19 May 2026 11:01:58 +0200 Subject: [PATCH] Split nav item removal into separate changesets Use dedicated changesets for the breaking frontend-plugin-api removal, plugin migrations, and frontend-test-utils update. Signed-off-by: Patrik Oldsberg Co-authored-by: Cursor --- .changeset/remove-nav-item-blueprint-api.md | 22 +++++++++++++++++++ ...d => remove-nav-item-blueprint-plugins.md} | 6 ++--- .../remove-nav-item-blueprint-test-utils.md | 5 +++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 .changeset/remove-nav-item-blueprint-api.md rename .changeset/{remove-nav-item-blueprint.md => remove-nav-item-blueprint-plugins.md} (57%) create mode 100644 .changeset/remove-nav-item-blueprint-test-utils.md diff --git a/.changeset/remove-nav-item-blueprint-api.md b/.changeset/remove-nav-item-blueprint-api.md new file mode 100644 index 0000000000..93d27d1a39 --- /dev/null +++ b/.changeset/remove-nav-item-blueprint-api.md @@ -0,0 +1,22 @@ +--- +'@backstage/frontend-plugin-api': minor +--- + +**BREAKING**: Removed the deprecated `NavItemBlueprint`. Navigation items are now discovered from `PageBlueprint` extensions based on their `title` and `icon` params. + +If you were still using `NavItemBlueprint`, migrate by moving `title` and `icon` to your `PageBlueprint` instead: + +```diff +-const navItem = NavItemBlueprint.make({ +- params: { title: 'Example', icon: ExampleIcon, routeRef }, +-}); + const page = PageBlueprint.make({ + params: { ++ title: 'Example', ++ icon: , + routeRef, + path: '/example', + loader: () => import('./Page').then(m => ), + }, + }); +``` diff --git a/.changeset/remove-nav-item-blueprint.md b/.changeset/remove-nav-item-blueprint-plugins.md similarity index 57% rename from .changeset/remove-nav-item-blueprint.md rename to .changeset/remove-nav-item-blueprint-plugins.md index b54e59f74c..3d096363ea 100644 --- a/.changeset/remove-nav-item-blueprint.md +++ b/.changeset/remove-nav-item-blueprint-plugins.md @@ -1,5 +1,4 @@ --- -'@backstage/frontend-plugin-api': minor '@backstage/plugin-app': patch '@backstage/plugin-catalog': patch '@backstage/plugin-search': patch @@ -11,7 +10,8 @@ '@backstage/plugin-devtools': patch '@backstage/plugin-catalog-unprocessed-entities': patch '@backstage/plugin-app-visualizer': patch -'@backstage/frontend-test-utils': patch --- -Removed the deprecated `NavItemBlueprint`. Navigation items are now discovered from page extensions via their `title` and `icon` params. The app nav extension still accepts legacy `nav-item` extensions for backward compatibility. +Removed separate nav item extensions. Sidebar entries are now provided via `title` and `icon` on each plugin's page extension. + +The app nav extension still accepts legacy `nav-item` extensions for backward compatibility with older plugin versions. diff --git a/.changeset/remove-nav-item-blueprint-test-utils.md b/.changeset/remove-nav-item-blueprint-test-utils.md new file mode 100644 index 0000000000..96e4554556 --- /dev/null +++ b/.changeset/remove-nav-item-blueprint-test-utils.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-test-utils': patch +--- + +Updated `renderInTestApp` to render legacy nav-item extensions without relying on the removed `NavItemBlueprint` from `@backstage/frontend-plugin-api`.