chore(quickstart): promote quickstart NFS plugin from /alpha to stable api#3530
Conversation
|
This pull request adds a new top-level directory under |
|
Important This PR includes changes that affect public-facing API. Please ensure you are adding/updating documentation for new features or behavior. Changed Packages
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3530 +/- ##
==========================================
+ Coverage 54.01% 54.03% +0.01%
==========================================
Files 2325 2326 +1
Lines 89151 89181 +30
Branches 24911 24912 +1
==========================================
+ Hits 48156 48186 +30
Misses 40760 40760
Partials 235 235
*This pull request uses carry forward flags. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
354dfeb to
bd277da
Compare
|
Thanks for the PR 👏 I have verified in both plugin NFS dev app and RHDH app-next, both works as expected. I'm good to merge this PR once comments from @rohitkrai03 get addressed. |
bd277da to
6c536d0
Compare
|





Hey, I just made a Pull Request!
Story: https://redhat.atlassian.net/browse/RHIDP-14167
Graduate the New Frontend System (NFS) plugin from the
./alphaexport to the primary./entry point. OFS (legacy) exports are now available at./legacy. Translations remain at./alpha.Option 1: Quickstart Workspace NFS App (rhdh-plugins)
Screen.Recording.2026-06-26.at.12.09.04.PM.mov
This is the simplest way to test the plugin with all dependencies pre-wired.
Steps
cd workspaces/quickstart yarn startThe NFS app imports the graduated quickstart exports from the main entry point:
Option 2: RHDH
app-next(Dynamic Module Federation)Screen.Recording.2026-06-26.at.1.13.30.PM.mov
This tests the plugin as a dynamically loaded module federation remote in the showcase's NFS shell.
Step 1: Bundle the quickstart plugin for module federation
From the rhdh-plugins repo:
cd workspaces/quickstart/plugins/quickstart npx backstage-cli package bundle \ --output-destination /path/to/backstage-showcase/dynamic-plugins-rootThis produces a module federation bundle at:
The bundle automatically exposes three entry points:
.— the NFScreateFrontendPlugindefault export (drawer + help menu item)quickstart-init-module— the init module (first-visit auto-open)quickstart-translations-module— the translations moduleStep 2: Add infrastructure dependencies to
app-nextThe quickstart plugin's extensions attach to parent extensions provided by the app drawer and global header. These infrastructure modules must be present in the app for quickstart to render.
Add them to
packages/app-next/package.json:Notes:
app-reactandthemehave Backstage roleweb-libraryand cannot be bundled as module federation remotes, so they must be static dependencies.global-headerhas rolefrontend-pluginand could alternatively be bundled dynamically viabackstage-cli package bundle, but is added statically here since the rhdhapp-nextdoes not yet include it by default.Then update
packages/app-next/src/App.tsxto include the modules:Run
yarn installafter updatingpackage.json.Step 3: Configure
app-config.local.yamlCreate or update
app-config.local.yamlin the rhdh root:Step 4: Build and start
The
app-config.local.yamlmust exist before building — the frontend config is baked into the bundle at build time.The app is served at
http://localhost:7007(not port 3000 — the backend serves the built frontend directly).Step 5: Verify with the app visualizer
Navigate to
http://localhost:7007/visualizer/treeto see the NFS extension tree. Confirm these quickstart extensions are registered:app-root-wrapper:app/global-header→gh-menu-item:quickstart/quickstartapp-root-wrapper:app/drawer→app-drawer-content:quickstart/quickstartapp-root-element:app/quickstart-inittranslation:app/quickstart-translationsBackend logs to verify
The backend should log:
Issues
Global header not rendering visually in rhdh
app-nextSymptom: The NFS extension tree (visualizer) shows
app-root-wrapper:app/global-headeris registered with the quickstart menu item attached, but the header bar doesn't appear visually.Cause: The
@red-hat-developer-hub/backstage-plugin-global-headerpackage installed in the rhdh has an ESM import resolution issue with@mui/material/IconButton. The webpack build resolves this at compile time, but a runtime rendering error in the component prevents it from displaying.Impact: The quickstart NFS plugin is correctly loaded and all extensions are properly wired in the NFS tree. The visual rendering issue is in the global-header infrastructure, not in the quickstart plugin itself.
✔️ Checklist