Skip to content

feat(quay): migrate plugin to the new frontend system#9441

Open
rohitkrai03 wants to merge 2 commits into
backstage:mainfrom
rohitkrai03:nfs-quay-migration
Open

feat(quay): migrate plugin to the new frontend system#9441
rohitkrai03 wants to merge 2 commits into
backstage:mainfrom
rohitkrai03:nfs-quay-migration

Conversation

@rohitkrai03

@rohitkrai03 rohitkrai03 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Migrate the Quay frontend plugin to the new frontend system (NFS) using createFrontendPlugin, ApiBlueprint, and EntityContentBlueprint
  • Preserve legacy frontend system exports under the /legacy subpath for backwards compatibility
  • Add NFS-based dev app setup alongside a legacy dev app entry point
  • Removed packages/app and packages/backend and started using dev app as primary testing mechanism.

Test plan

  • Verify the NFS dev app renders correctly with yarn start
  • Verify the legacy dev app renders correctly with yarn start:legacy
  • Verify Quay tab appears on entity pages with the quay.io/repository-slug annotation
  • Verify tag details and security scan pages work end-to-end

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
@backstage-goalie

backstage-goalie Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Missing Changesets

The following package(s) are changed by this PR but do not have a changeset:

  • @backstage-community/plugin-scaffolder-backend-module-quay
  • @backstage-community/plugin-quay-backend
  • @backstage-community/plugin-quay-common

See CONTRIBUTING.md for more information about how to add changesets.

Changed Packages

Package Name Package Path Changeset Bump Current Version
@backstage-community/plugin-scaffolder-backend-module-quay workspaces/quay/plugins/quay-actions none v2.19.0
@backstage-community/plugin-quay-backend workspaces/quay/plugins/quay-backend none v1.15.0
@backstage-community/plugin-quay-common workspaces/quay/plugins/quay-common none v1.20.0
@backstage-community/plugin-quay workspaces/quay/plugins/quay minor v1.33.0

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the Quay frontend plugin in the workspaces/quay example workspace to Backstage’s new frontend system (NFS) by introducing an NFS createFrontendPlugin entry point, while keeping the legacy frontend system available via a /legacy subpath and a dedicated legacy dev entrypoint.

Changes:

  • Added an NFS-based Quay plugin entry (createFrontendPlugin) and updated exports to make it the default plugin export.
  • Preserved legacy frontend system exports under @backstage-community/plugin-quay/legacy and added a legacy dev start script/entry.
  • Updated the Quay workspace/app wiring and bumped Backstage package versions to align with NFS dependencies.

Reviewed changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
workspaces/quay/yarn.lock Updates lockfile to newer Backstage/NFS-related dependencies.
workspaces/quay/plugins/quay/src/plugin.tsx Adds NFS createFrontendPlugin implementation for Quay.
workspaces/quay/plugins/quay/src/plugin.test.tsx Adjusts test import to match default export.
workspaces/quay/plugins/quay/src/legacy.ts Marks legacy exports deprecated and clarifies legacy usage.
workspaces/quay/plugins/quay/src/index.ts Switches package root exports to default NFS plugin export.
workspaces/quay/plugins/quay/src/components/QuayWidget/QuayWidget.tsx Updates isQuayAvailable import source.
workspaces/quay/plugins/quay/package.json Adds /legacy export + NFS dev deps + legacy start script.
workspaces/quay/plugins/quay/dev/legacy.tsx Adds legacy dev app entrypoint.
workspaces/quay/plugins/quay/dev/index.tsx Replaces legacy dev app with an NFS createApp dev setup.
workspaces/quay/plugins/quay-common/package.json Bumps permission common peer/dev deps.
workspaces/quay/plugins/quay-backend/package.json Bumps backend dependencies to newer Backstage versions.
workspaces/quay/plugins/quay-actions/package.json Bumps scaffolder module deps to newer Backstage versions.
workspaces/quay/packages/app/src/components/EntityPage.tsx Updates Quay imports to use /legacy subpath.
workspaces/quay/package.json Bumps workspace-level Backstage tooling versions.
workspaces/quay/backstage.json Bumps Backstage version for the Quay workspace.
workspaces/quay/app-config.yaml Adds an NFS route redirect from / to /catalog.
workspaces/quay/.changeset/migrate-quay-to-nfs.md Adds changeset describing NFS migration + legacy subpath.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +16 to +23
import {
ApiBlueprint,
configApiRef,
createFrontendPlugin,
discoveryApiRef,
identityApiRef,
} from '@backstage/frontend-plugin-api';
import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
Comment on lines +46 to +51
path: '/quay',
title: 'Quay',
routeRef: rootRouteRef,
filter: isQuayAvailable,
loader: async () => import('./components/Router').then(m => <m.Router />),
},
Comment on lines +59 to +66
export default createFrontendPlugin({
pluginId: 'quay',
extensions: [quayApi, quayEntityContent],
routes: {
root: rootRouteRef,
tag: tagRouteRef,
},
});
Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 10, 2026 06:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 39 out of 46 changed files in this pull request and generated 5 comments.

Comment on lines +1 to +5
---
'@backstage-community/plugin-quay': minor
---

Migrate Quay plugin to the new frontend system (NFS). The legacy frontend system exports are now available under the `/legacy` subpath.
Comment on lines +16 to +24
import {
ApiBlueprint,
configApiRef,
createFrontendPlugin,
discoveryApiRef,
identityApiRef,
} from '@backstage/frontend-plugin-api';
import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';

Comment on lines +46 to +50
path: '/quay',
title: 'Quay',
routeRef: rootRouteRef,
filter: isQuayAvailable,
loader: async () => import('./components/Router').then(m => <m.Router />),
Comment on lines +62 to +66
routes: {
root: rootRouteRef,
tag: tagRouteRef,
},
});
Comment on lines +56 to +61
"@backstage/catalog-model": "^1.9.0",
"@backstage/core-components": "^0.18.10",
"@backstage/core-plugin-api": "^1.12.6",
"@backstage/frontend-plugin-api": "^0.17.1",
"@backstage/plugin-catalog-react": "^3.0.0",
"@backstage/plugin-permission-react": "^0.5.1",
@backstage-goalie

Copy link
Copy Markdown
Contributor

Thanks for the contribution!
All commits need to be DCO signed before they are reviewed. Please refer to the the DCO section in CONTRIBUTING.md or the DCO status for more info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants