Skip to content

Bug: Ghost extension card generated on installed tab #17763

@aalves08

Description

@aalves08

Setup

  • Rancher version: 2.15-head
  • Rancher UI Extensions: SUSE OS Management (Elemental)
  • Browser type & version: Chrome/Firefox (latest)

Describe the bug
When a UI extension is installed and the user navigates away from the Extensions page and then returns, a duplicate/phantom card for the extension appears in the UI extensions list. The phantom card appears to be loaded from cache or previous state, creating a confusing user experience with multiple entries for the same extension.

To Reproduce

  1. Install the ui-plugin-charts repo, branch main
  2. Open the Extensions page in Rancher Dashboard
  3. Install a UI extension (e.g., SUSE OS Management/Elemental)
  4. Navigate away from the Extensions page (e.g., click on another menu item like the SUSE OS Management extension)
  5. Navigate back to the Extensions page
  6. Observe the extension card appearing twice or a phantom/stale card appearing

Result
Image

A duplicate or phantom extension card appears in the UI extensions list alongside the actual installed extension. The duplicate persists across navigation.

Expected Result
Only one card for each installed extension should appear in the UI extensions list. When returning to the Extensions page, the list should be refreshed correctly without duplicate or phantom entries.

Additional context
The issue appears to stem from the deduplication logic in the available computed property. Plugin items can be created from two sources:

  • Chart versions (via mapChartToPluginItem)
  • Loaded plugins from the backend (via buildLoadedPluginItem)

When the same extension exists in both sources, a phantom/duplicate card can appear. The deduplication logic should prefer CR-backed entries (which have management capabilities) over phantom loaded-plugin entries. A preference condition of !existing || plugin.uiplugin ensures only the better entry is kept.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions