Please make sure you are familiar with the SIP process documented here. The SIP will be numbered by a committer upon acceptance.

[SIP] Proposal for Archiving Dashboards

Motivation

Dashboards have 2 states published and draft. However, there is state in which a dashboard my be deprecated and no longer needed, but required to be kept around for some time whether as a reference or any other reason. The archive status allows for these dashboard assets to be kept around for a while longer and not clutter up the dashboard lists of the owner (hidden) until searched for using the archived status filter.

Proposed Change

I added a new state for dashboards. Archived. This will make it so that it will not appear in the list of dashboard, unless it's set as Archived.

Archived Dashboard Image Image Image

Unarchived Dashboard Image

Dashboard List Image Image

New or Changed Public Interfaces

  1. Added archive to dashboard model
  2. Added button to archive dashboard
  3. Added archive label to put in place of publish/draft labels for archived dashboards
  4. Going from published to archived will unpublish it and put it back to draft. 4.5 Unarchiving it will make it remain in draft
  5. Archived dashboards will not be seen on the dashboard list without the Archived status filter
  6. Enabling the archive status filter will allow users to see all archived dashboards

Migration Plan and Compatibility

Needs to add a new column to the dashboards. "archived" Default value will be false. Can fully remove the column to downgrade

Rejected Alternatives

Describe alternative approaches that were considered and rejected.

Comment From: betodealmeida

Needs to add a new column to the dashboards. "archived"

I assume we have a Boolean column for draft today? (Sorry, on my phone and away from computer) It might be better to convert that column to a string, a pseudo-enum with options "draft", "published", "archived". See https://maximilianocontieri.com/code-smell-07-boolean-variables for context of why.

Comment From: betodealmeida

Also, this is a great feature!

Comment From: mattitoo

This is a great feature - one thing to (maybe) keep in mind: The dashboard list gets really slow when there are a lot of dashboards. Archiving the dashboards should also make the search quicker. I am not technical enough to say how this should be achieved, but this is something to consider. I was also thinking if it makes sense to be able to archive charts, but I believe the complexity increases in that case. Or maybe this should also be thought of?

Comment From: JZ6

This is a great feature - one thing to (maybe) keep in mind: The dashboard list gets really slow when there are a lot of dashboards. Archiving the dashboards should also make the search quicker. I am not technical enough to say how this should be achieved, but this is something to consider. I was also thinking if it makes sense to be able to archive charts, but I believe the complexity increases in that case. Or maybe this should also be thought of?

we have archive charts as well, will put work in creating a pr if this archived dashboards gets merged

Comment From: rusackas

Love the idea. A couple early questions/comments: * Would there be a show/hide Archived Items switch in the list view? * Do we need to do anything with alerts/reports/charts/etc that are preferentially attached to Archived dashboards? * Should we consider replacing "Delete" with "Archive" since this... seems safer? * If the answer is NO to the last one, then should/could selecting "Delete" be migrated (in a similar way) to add a "deleted" status in the DB, but hides it completely from the UI? This would be a "soft delete" so things could be recovered by someone with DB access. * I believe there was another SIP/PR that adds Published/Draft status for Charts. This would be relevant there too.

Comment From: ethan-l-geotab

Thanks for the feedback.

  1. Should overhauling the existing publishing/draft system be in the scope of this sip? It seems to have a large scope, but I'm totally for it. Seems like the right way to do it to be honest, but I wasn't so sure such a big update would be approved without a big headache.
  2. I think that modifying the status would be a good place to start. I'm open to other suggestions, not married to this idea, just what I had coded out at the moment. Theres no way of seeing both archived along with the other states at the same time the way it's done right now. Image

  3. I think that alerts/reports and stuff that are attached to archived dashboards should NOT be modified. Don't want to inadvertently break someone else's workflow i guess?

  4. I think archiving and deleting although share a similar purpose are distinct and soft deleting is something that might be better addressed in the future?
  5. Regarding the Published/Draft status for charts. Would be easier starting off with the triple status vs refactoring everything to work with the triple status. I didn't make a SIP for it quite just yet, but if we want archiving for it I think perhaps that PR can just be closed and work on it can be done with it under this SIP. Or I create a new one SIP regarding Draft/Publish/Archive for charts if that's preferable. https://github.com/apache/superset/pull/32969

Comment From: zuzana-vej

Very exciting thanks for the proposal! Few minor queestions

  1. "Going from published to archived will unpublish it and put it back to draft."

Can you clarify this? if you archive published dashboard, is the status draft or archived?

  1. Alerts & reports: To @rusackas question/point about alerts & reports. While we don't want to stop exiting alerts/reports, in ideal case, owners of those alerts/reports would be notified in some way that the dashboard their report is referencing has been archived.

  2. Currently dashboard owner can flip dashboard from draft to published and back by clicking the little button next to be dashboard's name. But to archive it, users will do it via dropdown. What are the thoughts of these two pieces of UX being different? If marking as archived is done via the dropdown, is the button next to dashboard's name just to flip between draft and published?

  3. @rusackas question: "Should we consider replacing "Delete" with "Archive" since this... seems safer?"

I think we should provide both options to users - both Archive and Delete. Certainly want to keep Delete option around - just to not keep clutter around - broken / unused charts / dashboards etc.

Thanks!

Comment From: ethan-l-geotab

  1. This is without the overhaul of having triple states. Currently there is a "published" property in the dashboard model. I intended it to go "back to draft" once it is in archived. I will still consider it archived as that takes priority. but I figured i should do something with that value instead of leaving it as published. That being said, changing published -> state and having it hold Published, Draft and Archived would be better.
  2. I guess a "This dashboard is archived" wouldn't hurt in the report or something near the top?
  3. Open to ideas. I figured "archiving" could be tucked away somewhere hidden cuz it wont be a common operation? Currently we have a modal popup where users can choose between archiving and publishing upon clicking the existing "publish status" button. Literally this: Image

Comment From: TechAuditBI

May we look at this feature as a begining of dashboards versioning? I do understand that statuses and versions are two quite different things. But hiding functionality seems to be a crossing point here. Do these features actually affect each other? Maybe some minor tweaks can be done now so that further evolution is simplier.

Comment From: vedantprajapati17

May we look at this feature as a begining of dashboards versioning? I do understand that statuses and versions are two quite different things. But hiding functionality seems to be a crossing point here. Do these features actually affect each other? Maybe some minor tweaks can be done now so that further evolution is simplier.

how would the dashboards versioning work? would multiple versions of a dashboard be published/draft? archiving sets all current dashboard and previous versions to archived.

I think it makes sense to keep an enum for the scope of this SIP.

With dashboard versioning we need to define if its all of the dashboard versions we'll be archiving and it will effectively be multiplicative in the number of dashboards created in the DB.

Comment From: zuzana-vej

Thanks for the additional responses/thoughts. @ethan-l-geotab re (1) & (3)

state and having it hold Published, Draft and Archived would be better

Agreed, most users flow between draft and published, but having that "archived" displayed at the top as one of the 3 status options (even if flipping it to archived is harder) would be useful for dashboard consumers.

re (2)

I guess a "This dashboard is archived" wouldn't hurt in the report or something near the top? that would be great !

Regarding dashboard versions vs. archived - I also think they are different. Archived might be step before deletion. And while some people may use it as solution for versioning it's not exactly the same.

Comment From: TechAuditBI

May we look at this feature as a begining of dashboards versioning? I do understand that statuses and versions are two quite different things. But hiding functionality seems to be a crossing point here. Do these features actually affect each other? Maybe some minor tweaks can be done now so that further evolution is simplier.

how would the dashboards versioning work? would multiple versions of a dashboard be published/draft? archiving sets all current dashboard and previous versions to archived.

I think it makes sense to keep an enum for the scope of this SIP.

With dashboard versioning we need to define if its all of the dashboard versions we'll be archiving and it will effectively be multiplicative in the number of dashboards created in the DB.

@vedantprajapati17 Well, totally agree. I've got ahead of myself)

Comment From: rusackas

I feel like we should recap here, and clarify the proposal a bit... maybe @dosu can take the above comment thread and write the proposal up in a way we can all agree on? (Go, AI, go!)

Or, @ethan-l-geotab if you would like to consolidate the above questions/answers into the original proposal, I think we can put this through to a VOTE.

Comment From: dosubot[bot]

Here's a consolidated draft of the SIP proposal for dashboard archiving, reflecting the discussion and feedback so far:


[SIP-163] Archiving Dashboards

Motivation

Superset dashboards currently have two states: published and draft. However, there's a need for a third state—archived—for dashboards that are deprecated but must be retained for reference or compliance. Archiving keeps these dashboards out of default views, reducing clutter and improving performance, especially for instances with many dashboards.

Proposed Change

  • Replace the boolean published field in the dashboard model with a string/enum state field supporting draft, published, and archived.
  • Add UI controls for archiving/unarchiving dashboards (e.g., via dropdown/modal), with clear status indicators and a filter to show archived dashboards in the list view.
  • When a dashboard is archived, it is hidden from the default list and only visible when the "archived" filter is enabled. Unarchiving returns it to draft status.
  • The status toggle between draft and published remains a quick-access button; archiving is a less prominent action, accessible via dropdown or modal.
  • Both "Archive" and "Delete" actions remain available. Archiving is distinct from deleting; deletion removes dashboards, while archiving hides them but retains them in the system.
  • Alerts/reports referencing archived dashboards are not modified, but ideally, a notification or banner should inform owners if their referenced dashboard is archived.
  • The design should be future-proofed for possible dashboard versioning and similar status management for charts (see chart status PR).

New or Changed Public Interfaces

  • Dashboard model: replace published boolean with state enum/string (draft, published, archived).
  • REST API and UI: support for new state, archiving/unarchiving actions, and filtering by state.
  • Status indicators and tooltips in the dashboard list and dashboard view.
  • Modal/dialog for changing dashboard status, with options for publish, draft, and archive.

Migration Plan and Compatibility

  • Add a migration to convert the published boolean to a state field.
  • Default all existing dashboards to published or draft as appropriate.
  • Archived dashboards default to archived state.
  • The migration should be reversible (downgrade path).

Rejected Alternatives

  • Keeping separate boolean fields for each state (e.g., published, archived)—this increases complexity and is less extensible.
  • Replacing "Delete" with "Archive"—both actions serve different purposes and should coexist.
  • Implementing dashboard versioning as part of this SIP—versioning is a separate concern and may be addressed in future proposals.

Open Questions / Next Steps

  • Confirm technical feasibility and blockers for migrating from boolean to enum/string for dashboard state.
  • Define the notification mechanism for alerts/reports referencing archived dashboards.
  • Coordinate with chart status/archiving efforts for consistency.

Let me know if anything needs clarification or if you'd like to adjust any part of this draft before moving to a vote.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X