ref(dashboards): Remove old prebuilt General dashboard#113608
Merged
ref(dashboards): Remove old prebuilt General dashboard#113608
Conversation
Remove `get_prebuilt_dashboards()` and the surrounding `default-overview` prebuilt dashboard system, which returned a hardcoded widget configuration as a plain Python dict injected into API responses. The new system (gated behind `dashboards-prebuilt-insights-dashboards`) syncs real `Dashboard` DB records with a `prebuilt_id` field, making this code dead. The `DashboardTombstone` model is kept for now and will be removed in a follow-up PR. Refs DAIN-1562 Co-Authored-By: Claude <noreply@anthropic.com>
…-1562-remove-old-prebuilt-dashboards-backend-code ; Conflicts: ; src/sentry/dashboards/endpoints/organization_dashboard_details.py
…-1562-remove-old-prebuilt-dashboards-backend-code ; Conflicts: ; src/sentry/dashboards/endpoints/organization_dashboard_details.py ; tests/sentry/dashboards/endpoints/test_organization_dashboard_details.py
Remove the `num_dashboards > 1` guard in the dashboard delete endpoint. Blocking deletion of the last dashboard left users unable to delete a custom dashboard they created themselves. The check existed because the hardcoded `default-overview` prebuilt dashboard used to act as a fallback so the UI always had something to render — now that prebuilt dashboards are real DB rows, the guard isn't needed. Co-Authored-By: Claude <noreply@anthropic.com>
edwardgou-sentry
approved these changes
Apr 23, 2026
gggritso
added a commit
that referenced
this pull request
Apr 30, 2026
…dling (#114249) In #113608 I removed the "General" dashboard (AKA `"default-overview"`) that the backend returned. That is all fine and well, but there's still some FE handling for it. Some is explicit (e.g., checking if something is the "General" dashboard before allowing to star it) and some is implicit (forbidding the removal of the final dashboard because it's the "General" dashboard). This PR removes those, which removes all FE knowledge of this old pre-built dashboard. --------- Co-authored-by: Claude <noreply@anthropic.com>
cleptric
pushed a commit
that referenced
this pull request
May 5, 2026
Follow-up to #113758, see more context there! tl;dr we have a new pre-built dashboard system, where pre-built dashboards are stored as database stubs, with the full dashboard config living in JSON. Therefore, I am getting rid of the last vestiges of the _previous_ prebuilt dashboard system. Right now there is just one single old pre-built dashboard called "General". This PR removes it, so it never comes back in the UI. According to the access logs, single digits users per months are looking at it, and I think they might be _us_. Here, I remove `get_prebuilt_dashboards()` and the surrounding `default-overview` prebuilt dashboard system, which returned a hardcoded widget configuration as a plain Python dict injected into API responses. Notable changes: - types that used `Dashboard | dict...` are gone now, because only _real_ `Dashboard` objects are passed around - specs that counted dashboards are all decremented by one, since the "General" dashboard is gone - there are bits of odd code where one dashboard must be left remaining, due to the "General" dashboard. I left it for now, and I'll remove it (and the front-end counterparts) in the next PR - The `DashboardTombstone` model is kept for now and will be removed in a follow-up PR along with the DB table drop. Refs DAIN-1562 --------- Co-authored-by: Claude <noreply@anthropic.com>
cleptric
pushed a commit
that referenced
this pull request
May 5, 2026
…dling (#114249) In #113608 I removed the "General" dashboard (AKA `"default-overview"`) that the backend returned. That is all fine and well, but there's still some FE handling for it. Some is explicit (e.g., checking if something is the "General" dashboard before allowing to star it) and some is implicit (forbidding the removal of the final dashboard because it's the "General" dashboard). This PR removes those, which removes all FE knowledge of this old pre-built dashboard. --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #113758, see more context there!
tl;dr we have a new pre-built dashboard system, where pre-built dashboards are stored as database stubs, with the full dashboard config living in JSON. Therefore, I am getting rid of the last vestiges of the previous prebuilt dashboard system. Right now there is just one single old pre-built dashboard called "General". This PR removes it, so it never comes back in the UI. According to the access logs, single digits users per months are looking at it, and I think they might be us.
Here, I remove
get_prebuilt_dashboards()and the surroundingdefault-overviewprebuilt dashboard system, which returned a hardcoded widget configuration as a plain Python dict injected into API responses.Notable changes:
Dashboard | dict...are gone now, because only realDashboardobjects are passed aroundDashboardTombstonemodel is kept for now and will be removed in a follow-up PR along with the DB table drop.Refs DAIN-1562