Description
RFC: Dashboard Banners UI Plugin for OpenSearch Dashboards
Proposal
Introduce a standalone UI plugin to provide a global, configurable header banner system in OpenSearch Dashboards (OSD). Unlike the existing core banner system, this plugin is dedicated to top-of-page announcements, offering styling, markdown, dismissal, and configuration capabilities. While Phase 1 may appear functionally similar to the current core banner service, the key distinction is architectural: this plugin is not designed for reuse by other plugins and affects layout and configuration scopes that go beyond temporary notifications.
Background
The existing core OverlayBannersService
was built to support temporary, client-only notifications within the main body of the OSD layout. Extending it to support global banners would introduce significant risk and complexity:
-
Separation of Concerns: The core service's implementation is tightly coupled with existing layout logic and expectations. Altering it to support global banners, custom styling, and content types introduces branching logic and degrades its clarity.
-
Widespread Usage: The core banner system is already used by several plugins, including data source management. Modifying its behavior (e.g., adding support for a new banner location or styling) could lead to regressions.
-
Scope Differences: The global banner is intended to be persistent and not tied to plugin behavior or runtime logic. It may also eventually require server-side logic (e.g., fetching banner content from external links), which the client-only core banner system cannot support.
-
Ownership and Lifecycle: The banner plugin manages its own configuration and rendering lifecycle. This isolates it from the OSD core and improves maintainability, versioning, and backporting.
The plugin model also allows the system to evolve—such as integrating with feature flags or server routes—without impacting unrelated parts of Dashboards.
Terminology
- Header Banner: A persistent, top-of-page banner distinct from ephemeral system notifications.
- Banner Configuration: YAML or Advanced Settings controlling banner content, visibility, and styling.
- Banner Dismissal: Per-user setting to hide the banner, persisted in local storage or Advanced Settings.
Design Considerations
Mount Point and Layout
Because OSD does not currently expose a mount point at the very top of the layout, the plugin will require changes to the core layout (e.g., adding a <div id="globalBanner" />
to header.tsx
). This modification is minimal and localized, and allows the plugin to render above the main header.
Potential for Future Expansion
Phase 2 anticipates server-side logic and dynamic sources for banner content. This may include:
- Pulling markdown from a server
- Introducing REST APIs for banner content
- Role-based visibility or scheduled banners
Metadata
Metadata
Assignees
Labels
Type
Projects
Status