What Is New in Grafana 13.0
| Category | Highlights |
|---|---|
| New Features | Dynamic dashboards GA; Git Sync GA; Grafana Assistant on-prem; revamped Gauge visualization GA; Graphviz panel (private preview); IBM DB2 data source; Filter and Group By dashboard controls; panel styles; copy-paste panel styles; Grafana Advisor GA; annotation clustering; saved queries improvements; variable scoping per row/tab |
| Improvements | Restore deleted dashboards GA; updated visualization suggestions GA; Elasticsearch DSL and ES|QL query support; SQL Expressions in Grafana Assistant; legend series limits; revamped query editor experience (private preview); alerting provenance support for Kubernetes API; HTTP compression enabled by default |
| Breaking Changes | Grafana Image Renderer plugin fully removed; grafana-cli and grafana-server commands removed; deprecated data source APIs (numeric ID) disabled by default; React upgraded to 19 (TwinMaker SceneViewer broken); deprecated @grafana/ui components removed; legacy Alertmanager config API endpoints changed; Alertmanager status endpoint needs new permission; RBAC enforcement tightened; unified storage migration for dashboards and folders |
| Deprecations | /api path deprecated in favor of /apis; go_sql_stats_* and grafana_database_conn_* Prometheus metrics deprecated and replaced; config.apps and config.panels from @grafana/runtime deprecated (removal in 13.2.0); ad hoc filters renamed to Filters (schema still uses AdhocVariable) |
What changes does Grafana 13.0 bring to dashboard building and the editing experience?
Grafana 13.0 makes dynamic dashboards the default for every user, eliminating the opt-in step that existed since v11. Every dashboard -- new and existing -- now uses the Scenes-powered layout engine automatically. Existing dashboards are migrated to the new schema on first open, with no manual intervention required. The pre-Scenes feature toggle has been fully removed, so you cannot fall back to the old engine.
For teams managing large dashboard portfolios, several quality-of-life improvements land at GA in this release:
- Restore deleted dashboards -- a "Recently deleted" view lets you recover an accidentally removed dashboard without opening a support ticket.
- Filter and Group By controls -- a new dashboard-level control replaces the friction of re-entering filters on every load and makes it clear which filters are active across panels.
- Variable scoping per row or tab -- if your dashboard covers multiple services (say, an API gateway and a database), you can now scope a variable like
$instanceto a specific row or tab instead of blasting all panels simultaneously. This removes one of the most common reasons teams split one logical dashboard into multiple. - Copy-paste panel styles (experimental) -- copy the visual styling from one panel and apply it to another in two clicks, ending the tedious manual work of duplicating panels just to reuse their look.
- Panel styles presets (public preview) -- apply a curated set of colors, thresholds, and display options with a single click across time series, gauge, bar gauge, stat, and bar chart panels.
In practice, the biggest day-to-day win is the variable scoping feature -- teams that were maintaining duplicate dashboards just to isolate service-level variable context can now consolidate back to a single source of truth.
How does Git Sync work in Grafana 13.0 and what are the upgrade risks?
Git Sync reaches general availability in Grafana 13.0 for both Grafana Cloud and self-managed users, enabling proper GitOps workflows for dashboard management. You connect your Grafana instance to GitHub, GitLab, Bitbucket, or any git repository, and can then edit dashboards in the UI, commit, and open a pull request without leaving Grafana.
Watch out for a critical migration bug in the v13.0.0 release. If you upgrade from Grafana v12.x with Git Sync already enabled, a storage migration issue can cause dashboards and folders to be lost or reverted. The bug is addressed in v13.0.1, but upgrading from v13.0.0 to v13.0.1 does not automatically recover lost data -- you must restore your database first, then upgrade to v13.0.1. Most teams should skip v13.0.0 entirely and go directly to v13.0.1 or later if Git Sync is active.
Git Sync is backed by the new unified storage layer for folders and dashboards, which is also a breaking change in this release. This unified storage replaces the previous database-backed model and is the foundation for both Git Sync and the App Platform's Kubernetes-style API layer.
What breaking changes in Grafana 13.0 will affect existing automation and plugin integrations?
Grafana 13.0 has one of the heavier breaking-change lists in recent releases. Before upgrading, audit your environment against these specific areas.
Command-line tooling
The grafana-cli and grafana-server commands (deprecated in v10.0) are fully removed. If you have deployment scripts, Dockerfiles, or init scripts referencing these, update them to grafana cli and grafana server (space-separated) before upgrading.
Data source API numeric ID references
APIs that referenced data sources using a numeric id were deprecated in v9.0 and are now disabled by default. Any automation, Terraform modules, or custom tooling that calls /api/datasources/id/<number> endpoints will break silently or return errors. Migrate to UID-based endpoints before upgrading.
# Old (broken in v13 by default)
GET /api/datasources/id/3
# New (use UID instead)
GET /api/datasources/uid/abc123def
Image Renderer plugin fully removed
The Grafana Image Renderer plugin was deprecated in September 2025 and is now completely removed. Screenshot generation and scheduled PDF reports that relied on this plugin no longer work. If you use reporting features, you must migrate to the new rendering approach that uses JWT authentication by default instead of the previous opaque-token model. This matters if you run scheduled reports or export panel images from the API.
React 19 upgrade and plugin compatibility
Grafana's core application has been upgraded from React 18 to React 19. The IoT TwinMaker SceneViewer panel (grafana-iot-twinmaker-app) uses React APIs removed in React 19 and will fail to render after upgrading. Check with your plugin vendors for compatibility updates before rolling out v13 if you rely on third-party panels.
Alerting API changes
Two alerting-related breaking changes require attention. The Alertmanager status endpoint (GET /api/alertmanager/grafana/api/v2/status) now requires the new alert.notifications.system-status:read permission instead of the old alert.notifications:read. Additionally, several legacy single-tenant Alertmanager configuration API endpoints deprecated in v12.0 are now removed or access-restricted in v13.0.
RBAC tightening
Grafana 13 tightens RBAC enforcement for custom roles, Terraform-managed roles, and role provisioning. This is low-risk for most teams but specifically affects roles with data source permissions scoped to specific UIDs or roles using legacy annotation scopes. Review custom role definitions before upgrading in environments with fine-grained access control.
@grafana/ui component removals
Several components deprecated since 2023 have been removed from the @grafana/ui package, including Graph, GraphWithLegend, GraphContextMenu, and related graph API types. Plugin developers need to migrate to the current alternatives before building against v13.
How does Grafana Assistant integrate with dashboards and data in Grafana 13.0?
Grafana Assistant expands significantly in v13.0, with availability now extending to self-managed Grafana Enterprise and OSS users. Previously limited to Grafana Cloud, on-prem users can now connect their Grafana installation to a Grafana Cloud account via a one-click setup to enable Assistant features. The integration is in public preview for self-managed deployments.
Three notable capability additions ship in this release:
- SQL Expressions assistance -- SQL Expressions allow you to join and transform data across multiple queries using familiar SQL syntax, where query names become table names. Previously, knowing the feature existed and getting the MySQL dialect right required experience. The Assistant now guides you through writing SQL Expressions, making cross-query joins accessible without deep prior knowledge of the feature.
- Dashboard template customization -- when building from a template, the Assistant helps you map real-world metric names and data source specifics to the template's structure, bridging the gap between the generic template and your actual environment.
- Suggested dashboard customization -- when data source suggestions are presented, a "Customize with Assistant" option provides a preconfigured prompt to adapt a suggested dashboard to your specific setup.
This matters if your org has users who struggle with the blank-slate problem when setting up new monitoring for a service. The combination of templates, saved queries, and the Assistant reduces the time from "I installed a new data source" to "I have a useful dashboard" dramatically.
Which Prometheus metrics are deprecated in Grafana 13.0 and what are the replacements?
Grafana 13.0 deprecates two sets of Prometheus metrics for database connection pool monitoring and replaces them with standardized alternatives. If you have dashboards, alerts, or recording rules targeting any of these metric names, update them before the eventual removal in a future release.
The deprecated metrics and their replacements are:
# Deprecated (will be removed in a future release)
go_sql_stats_connections_max_open -> go_sql_max_open_connections
go_sql_stats_connections_open -> go_sql_open_connections
go_sql_stats_connections_in_use -> go_sql_in_use_connections
go_sql_stats_connections_idle -> go_sql_idle_connections
go_sql_stats_connections_waited_for -> go_sql_wait_count_total
go_sql_stats_connections_blocked_seconds -> go_sql_wait_duration_seconds_total
go_sql_stats_connections_closed_max_idle -> go_sql_max_idle_closed_total
go_sql_stats_connections_closed_max_lifetime -> go_sql_max_lifetime_closed_total
go_sql_stats_connections_closed_max_idle_time -> go_sql_max_idle_time_closed_total
grafana_database_conn_max_open -> go_sql_max_open_connections
grafana_database_conn_open -> go_sql_open_connections
grafana_database_conn_in_use -> go_sql_in_use_connections
grafana_database_conn_idle -> go_sql_idle_connections
grafana_database_conn_wait_count_total -> go_sql_wait_count_total
grafana_database_conn_wait_duration_seconds -> go_sql_wait_duration_seconds_total
grafana_database_conn_max_idle_closed_total -> go_sql_max_idle_closed_total
grafana_database_conn_max_idle_closed_seconds -> go_sql_max_idle_time_closed_total
grafana_database_conn_max_lifetime_closed_total -> go_sql_max_lifetime_closed_total
The data provided is identical -- this is purely a naming standardization. Also note that the /api path itself is being deprecated in favor of /apis, aligning with the new App Platform architecture. Grafana is committed to the /apis path going forward, and any tooling constructing API calls to the old path should plan for migration.
Additionally, config.apps and config.panels from the @grafana/runtime package are deprecated in v13.0 and are scheduled for removal in Grafana 13.2.0 (expected in the second half of 2026). Plugin developers using these properties should migrate now.
Frequently Asked Questions about Grafana 13.0
Is upgrading to Grafana 13.0 safe if Git Sync is already enabled on my instance?
No, you should skip v13.0.0 if Git Sync is active. A migration bug in v13.0.0 can cause dashboards and folders to be lost or reverted when upgrading from v12.x with Git Sync enabled, and upgrading from v13.0.0 to v13.0.1 does not automatically restore lost data -- you must restore your database from backup first.
Does Grafana 13.0 break existing dashboards when the dynamic dashboard engine becomes the default?
Existing dashboards are automatically migrated to the new schema when you open them, with no manual steps required, and the Scenes-powered engine has been the default for Grafana Cloud users for several minor releases already, so the migration path is well-tested.
What do I need to change if my scripts use grafana-cli or grafana-server commands after upgrading to 13.0?
Replace every occurrence of grafana-cli with grafana cli (space, not hyphen) and every occurrence of grafana-server with grafana server throughout your deployment scripts, Dockerfiles, systemd unit files, and CI pipelines before upgrading.
Will third-party Grafana plugins continue working after the React 19 upgrade in v13.0?
Most plugins will continue to work, but any plugin relying on React APIs removed in React 19 will break -- the known example is the IoT TwinMaker SceneViewer panel, and you should check with your plugin vendors for compatibility status before deploying v13 in production.
What replaces the Grafana Image Renderer plugin for screenshot and PDF report generation in Grafana 13.0?
The new rendering approach uses JWT authentication by default instead of the previous opaque-token model stored in the Grafana database, and you should review the updated image rendering documentation and rendering configuration to migrate scheduled reports and panel screenshot workflows.
How does the new Grafana Advisor tool help with instance health monitoring in v13.0?
Grafana Advisor is now generally available and runs automated checks once a week by default (also triggerable manually) to surface issues such as data sources failing health checks, outdated or potentially insecure plugins, and misconfigured SSO settings -- you can also configure alerts to fire when Advisor detects new issues.