feat(lightspeed): add dedicated FAB module export for new frontend system#3397
feat(lightspeed): add dedicated FAB module export for new frontend system#3397its-mitesh-kumar wants to merge 2 commits into
Conversation
|
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 #3397 +/- ##
==========================================
- Coverage 54.01% 54.01% -0.01%
==========================================
Files 2409 2409
Lines 87709 87704 -5
Branches 24284 24280 -4
==========================================
- Hits 47377 47372 -5
Misses 38757 38757
Partials 1575 1575
*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:
|
…stem Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com>
ec7cd10 to
173de65
Compare
|



Description
Adds a dedicated module export (
./lightspeed-fab-module) for the Lightspeed Floating Action Button (FAB) component. This enables the FAB to be registered as a standaloneapp-root-wrapperextension in the new frontend system without importing the entire alpha entrypoint. The change includes the new export file, package.json export/typesVersions entries, and the dynamic plugin exposed module configuration.Screen recording
S_.2026-06-14.at.5.11.52.AM.mov
Problem
In the New Frontend System (NFS), the Lightspeed FAB was not appearing because of three layered gaps:
Gap 1: NFS Only Loads Default Exports
Gap 2: AppRootWrapperBlueprint Can't Live in createFrontendPlugin
Gap 3: The lightspeedFABModule Was a Named Export Only
Solution
Expose the FAB module as a separate Module Federation entry point with its own default export.
Changes Made
Why This Is the Best Approach
createFrontendPlugin()AppRootWrapperBlueprintnot recognized from a plugin (only from module withappscope)[plugin, module]as default fromalpha/index.tsxappscope, auto-discovered, zero couplingIn one sentence: The NFS loader only loads default exports of separately-exposed Module Federation modules, and
AppRootWrapperBlueprintmust come from a module targetingpluginId: 'app'— so we gave the FAB module its own entry point with its own default export.Testing in RHDH-local
Prerequisites
.env:Steps
Configure dynamic-plugins to use local plugin:
In
developer-lightspeed/configs/dynamic-plugins/dynamic-plugins.lightspeed.yaml:Enable the FAB extension in app-config:
In
developer-lightspeed/configs/app-config/app-config.lightspeed.local.yaml:Start RHDH-local with dynamic-plugins-root override:
Verify:
http://localhost:7007/lightspeedand confirm the page loads/remotesendpoint includeslightspeed-fab-module:curl -s http://localhost:7007/.backstage/dynamic-features/remotes | python3 -m json.tool"exposedModules": [".", "alpha", "lightspeed-fab-module"]✔️ Checklist