mirror of
https://github.com/apache/superset.git
synced 2026-07-03 21:35:32 +00:00
Introduces a single-slot `dashboards` contribution point (SIP-151 architecture) that lets an extension replace Superset's built-in dashboard renderer while the host keeps owning data fetching, hydration, URL/permalink resolution, CSS injection, and theming. - New `dashboards` namespace in @apache-superset/core defining the DashboardRenderer descriptor and the Redux-free DashboardRendererProps contract (dashboard identity/metadata/layout, charts, datasets, initial dataMask/tabs/anchor, uiConfig, reserved change callbacks). - Host registry (DashboardRendererProviders) with chat-style singleton semantics: most recent registration wins, displaced providers are unregistered with a warning, disposal of a displaced provider is a no-op. - DashboardRendererHost resolves the active provider via useSyncExternalStore (late registration swaps live), wraps custom renderers in an ErrorBoundary, and always falls back to the built-in renderer in edit mode or when the EnableExtensions flag is off. - The built-in stack (DashboardContainer/DashboardBuilder + filter selectors) moves behind the same contract as DefaultDashboardRenderer, preserving the lazy DashboardBuilder chunk. - DashboardPage now builds the contract props from data it already fetches and renders DashboardRendererHost; hydration and all other host behavior are unchanged, so the embedded path inherits the seam. This is the first step toward a fully Redux-decoupled dashboard renderer and an Embedded SDK that is a thin wrapper over this extension point. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>