ADR-013: Route-based deferred loading for dynamic frontend plugins - #23
ADR-013: Route-based deferred loading for dynamic frontend plugins#23its-mitesh-kumar wants to merge 2 commits into
Conversation
Documents the approach for deferring dynamic plugin loading until route navigation, reducing initial load from 12s TTI to under 3s with 40+ plugins. Co-authored-by: Cursor <cursoragent@cursor.com>
PR Summary by QodoAdd ADR-013 for route-based deferred loading of dynamic frontend plugins
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by QodoGreat, no actions required You can view lower severity findings below. View more (3) 1. Invalid JS example
|
Replace incorrect metrics from local Backstage dev build (which did not use dynamic plugin loading) with real RHDH cluster Lighthouse data: 55/100 score, 13.9s LCP with 16-18 dynamic plugins. Co-authored-by: Cursor <cursoragent@cursor.com>
|
I verified on the cluster that dynamic import() is working properly — UI components (React pages, entity tabs) are loaded lazily on demand via PageBlueprint.loader. My ADR-23 was also working in that direction, and since the mechanism is already functional, I am closing my ADR. |
Summary
backstage/backstage#35037but provides an independent fallback viarhdhDynamicFeaturesLoaderPerformance Report by LightHouse
Lightspeed.pdf
Key decisions
/<pluginId>— inferred automatically, zero changes neededbackstage.routesinpackage.jsonapp.extensionsfor non-conventional paths,dynamicPlugins.loading.eagerfor app-wide pluginsExtensionBoundary.lazy()internally, no action neededTest plan