<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Breaking changes on Grafana Labs</title><link>https://grafana.com/docs/grafana/v12.4/breaking-changes/</link><description>Recent content in Breaking changes on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v12.4/breaking-changes/index.xml" rel="self" type="application/rss+xml"/><item><title>Breaking changes in Grafana v11.0</title><link>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v11-0/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v11-0/</guid><content><![CDATA[&lt;!-- vale GoogleWe = NO --&gt;
&lt;!-- vale We = NO --&gt;
&lt;h1 id=&#34;breaking-changes-in-grafana-v110&#34;&gt;Breaking changes in Grafana v11.0&lt;/h1&gt;
&lt;p&gt;Following are breaking changes that you should be aware of when upgrading to Grafana v11.0.&lt;/p&gt;
&lt;p&gt;For our purposes, a breaking change is any change that requires users or operators to do something. This includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Changes in one part of the system that could cause other components to fail&lt;/li&gt;
&lt;li&gt;Deprecations or removal of a feature&lt;/li&gt;
&lt;li&gt;Changes to an API that could break automation&lt;/li&gt;
&lt;li&gt;Changes that affect some plugins or functions of Grafana&lt;/li&gt;
&lt;li&gt;Migrations that can’t be rolled back&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each change, the provided information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helps you determine if you’re affected&lt;/li&gt;
&lt;li&gt;Describes the change or relevant background information&lt;/li&gt;
&lt;li&gt;Guides you in how to mitigate for the change or migrate&lt;/li&gt;
&lt;li&gt;Provides more learning resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For release highlights and deprecations, refer to our 
    &lt;a href=&#34;/docs/grafana/v12.4/whatsnew/whats-new-in-v11-0/&#34;&gt;v11.0 What’s new&lt;/a&gt;. For the specific steps we recommend when you upgrade to v11.0, check out our 
    &lt;a href=&#34;/docs/grafana/v12.4/upgrade-guide/upgrade-v11.0/&#34;&gt;Upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;!--
## Feature

You must use relative references when linking to docs within the Grafana repo. Please do not use absolute URLs. For more information about relrefs, refer to [Links and references](/docs/writers-toolkit/writing-guide/references/).--&gt;
&lt;!-- Last copied from Google Doc March 26th 8:45pm --&gt;
&lt;h2 id=&#34;users-and-operators&#34;&gt;Users and Operators&lt;/h2&gt;
&lt;h3 id=&#34;angularjs-support-is-turned-off-by-default&#34;&gt;AngularJS support is turned off by default&lt;/h3&gt;
&lt;h4 id=&#34;description&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In Grafana v11, support for the deprecated AngularJS framework is turned off by default for all self-managed (on-premise) and Cloud instances of Grafana. This prevents any data source or panel visualization which relies on AngularJS from being loaded, and therefore has the potential to significantly disrupt your dashboards. Support will be fully removed in the next major release of Grafana.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;To avoid disruption, ensure all plugins are up to date and migrate from any remaining AngularJS plugins to a React-based alternative. If a plugin relies on AngularJS, a warning icon and message will be displayed in the 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/plugin-management/#access-the-plugin-catalog&#34;&gt;plugins catalog&lt;/a&gt; in Grafana and any dashboard panel where it&amp;rsquo;s used. Additionally, a warning banner will appear in any impacted dashboards. A list of all impacted dashboards can also be generated using the &lt;a href=&#34;https://github.com/grafana/detect-angular-dashboards&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;detect-angular-dashboards&lt;/code&gt;&lt;/a&gt; tool.&lt;/p&gt;
&lt;p&gt;Our 
    &lt;a href=&#34;/docs/grafana/v12.4/developers/angular_deprecation/angular-plugins/&#34;&gt;documentation&lt;/a&gt; lists all known public plugins and provides migration advice when possible.&lt;/p&gt;
&lt;p&gt;For self-managed users of Grafana and existing Grafana Cloud instances, you can temporarily re-enable support through the 
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-grafana/#angular_support_enabled&#34;&gt;configuration parameter&lt;/a&gt;, &lt;code&gt;angular_support_enabled=false&lt;/code&gt;. However, AngularJS-based plugins will not receive any further updates and we strongly recommend migration as soon as possible. This configuration parameter will also be removed in the next major release after Grafana v11.&lt;/p&gt;
&lt;p&gt;New Grafana Cloud users will be unable to request that support be added to their instance.&lt;/p&gt;
&lt;h4 id=&#34;learn-more&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;Refer to this &lt;a href=&#34;/blog/2024/03/11/removal-of-angularjs-support-in-grafana-what-you-need-to-know/&#34;&gt;blog post&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&#34;grafana-enterprise-anonymous-devices-are-billed-as-users&#34;&gt;Grafana Enterprise: Anonymous devices are billed as users&lt;/h3&gt;
&lt;h4 id=&#34;description-1&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Effective starting in Grafana v11, anonymous users are counted and charged as users in Grafana Enterprise. When you upgrade to v11, anonymous users will be automatically counted as active users against your Grafana Enterprise license.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-1&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;Turn off anonymous access, and consider using public dashboards to allow view-only access to publicly-accessible dashboards.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-1&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/anonymous-auth/&#34;&gt;Anonymous access documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;legacy-alerting-is-entirely-removed&#34;&gt;Legacy alerting is entirely removed&lt;/h3&gt;
&lt;p&gt;Legacy alerting has reached its end-of-life. In Grafana v11 you can no longer enable legacy alerting, and Grafana will fail to start if the settings are not updated to run the new Grafana Alerting. This also means that starting in Grafana v11, it is no longer possible to migrate from legacy alerting to our new alerting. Grafana v10.4.x is the last version that offers migration, so make sure to migrate to the new Grafana Alerting system &lt;em&gt;before&lt;/em&gt; upgrading to Grafana v11. Learn more about Grafana Alerting and the advantages of the new system in the &lt;a href=&#34;/docs/grafana/v10.4/alerting/set-up/migrating-alerts/legacy-alerting-deprecation/&#34;&gt;legacy alerting deprecation documentation&lt;/a&gt;. Learn more about migration in the &lt;a href=&#34;/docs/grafana/v10.4/alerting/set-up/migrating-alerts/&#34;&gt;upgrade alerting documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more details on the code removal, review the following PRs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/83651&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/grafana/pull/83651&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/grafana/issues/81268&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/grafana/issues/81268&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;deprecated-endpoints-and-fields-in-reporting-removed&#34;&gt;Deprecated endpoints and fields in Reporting removed&lt;/h3&gt;
&lt;h4 id=&#34;description-2&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In Grafana v11, support for deprecated endpoints and fields in &lt;strong&gt;Reporting&lt;/strong&gt; related to the old scheduling format, email, and dashboard is fully removed. This prevents any calls to deprecated endpoints and passing in values to deprecated fields. This feature only affects Cloud and Enterprise customers who use the API to generate reports.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-2&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;Ensure deprecated endpoints are updated to new corresponding endpoints and deprecated fields are removed and replaced with new corresponding fields.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-2&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;The 
    &lt;a href=&#34;/docs/grafana/v12.4/developers/http_api/reporting/&#34;&gt;Reporting API documentation&lt;/a&gt; lists all supported endpoints and fields.&lt;/p&gt;
&lt;h3 id=&#34;change-custom-branding-public-dashboard-footer-behavior&#34;&gt;Change custom branding public dashboard footer behavior&lt;/h3&gt;
&lt;h4 id=&#34;description-3&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In Grafana v11, custom branding public dashboard footer behavior is changed to default to the Grafana logo if no footer logo or footer text is set. There is no option to hide the public dashboard footer anymore. This feature only affects Cloud Advanced and Enterprise customers.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-3&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;Ensure you have a public dashboard footer logo or footer text set if you don&amp;rsquo;t want to display the default Grafana footer.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-3&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-grafana/configure-custom-branding/#custom-branding-for-shared-dashboards&#34;&gt;Configure custom branding documentation&lt;/a&gt; for public dashboards&lt;/p&gt;
&lt;h3 id=&#34;subfolders-cause-very-rare-issues-with-folders-that-have-forward-slashes-in-their-names&#34;&gt;Subfolders cause very rare issues with folders that have forward slashes in their names&lt;/h3&gt;
&lt;h4 id=&#34;description-and-migrationmitigation&#34;&gt;Description and migration/mitigation&lt;/h4&gt;
&lt;p&gt;The upgrade to enable subfolders can cause some issues with alerts in certain cases. If you&amp;rsquo;ve previously set up a folder that uses a forward slash in its name, you have an alert rule in that folder, and the notification policy is set to match that folder&amp;rsquo;s name, notifications will be sent to the default receiver instead of the configured receiver.&lt;/p&gt;
&lt;p&gt;In these cases, we recommend that you take these steps before the upgrade to enable subfolders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a copy of the affected routes and rewrite the matchers for the new copy. For example, if the original matcher was &lt;code&gt;grafana_folder=MyFolder/sub-folder&lt;/code&gt;, then the new route matcher will be &lt;code&gt;grafana_folder=MyFolder\/sub-folder&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After enabling subfolders, you can delete the old routes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please note that if you use file provisioning, you can upgrade and update the routes at the same time.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-4&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/whatsnew/whats-new-in-v11-0/#subfolders&#34;&gt;Subfolders announcement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/79793&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Provisioning: Provision dashboards into subfolders PR&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;the-input-data-source-is-removed&#34;&gt;The Input data source is removed&lt;/h3&gt;
&lt;p&gt;The direct input data source plugin has been removed in Grafana v11. It has been in alpha for four years and is superseded by 
    &lt;a href=&#34;/docs/grafana/v12.4/datasources/testdata/&#34;&gt;TestData&lt;/a&gt;, which ships with Grafana. This is a small deprecation.&lt;/p&gt;
&lt;p&gt;Review &lt;a href=&#34;https://github.com/grafana/grafana/pull/83163&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;this PR&lt;/a&gt; for details.&lt;/p&gt;
&lt;h3 id=&#34;data-sources-query-filtering-changes&#34;&gt;Data sources: Query filtering changes&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Disable query&lt;/strong&gt; button in the query editor row has caused a lot of confusion among data source developers and end-users. Until now, it has been up to data source developers to filter out any hidden queries before or after they’re executed. Starting from Grafana v11, the tooltip of this button is changed from &lt;strong&gt;Disable query&lt;/strong&gt; to &lt;strong&gt;Hide response/Show response&lt;/strong&gt;. Responses that are associated with hidden queries will be removed by Grafana before they’re passed to the panel.&lt;/p&gt;
&lt;p&gt;Users of data source plugins that didn&amp;rsquo;t previously remove hidden queries (before or after they were executed) will see a change of behavior as, previously, clicking the &lt;strong&gt;Disable query&lt;/strong&gt; button had no impact on the query result. Starting from Grafana v11, responses associated with hidden queries are longer returned to the panel.&lt;/p&gt;
&lt;p&gt;We’re also moving the call to the &lt;code&gt;datasource.filterQuery&lt;/code&gt; method to the query runner. This means that frontend-only data sources (or any data source that doesn&amp;rsquo;t extend &lt;code&gt;DataSourceWithBackend&lt;/code&gt; class) can implement this method. This streamlines data source plugin behavior, ensuring filtering works in the same way for all kinds of data source plugins.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-4&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;If data is missing in panels, make sure the query editor &lt;strong&gt;Hide response&lt;/strong&gt; button is not clicked.&lt;/p&gt;
&lt;p&gt;For data sources that extend &lt;code&gt;DataSourceWithBackend&lt;/code&gt;, the filterQuery method is now called before the data source query method. If the &lt;code&gt;filterQuery&lt;/code&gt; method assumes that some kind of query migration happens before this method is called, you now need to do the migration inside this method too.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-5&#34;&gt;Learn more&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/84656&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GitHub PR&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;chore-query-oauth-info-from-a-new-instance&#34;&gt;Chore: Query oauth info from a new instance&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve added a validation between the response of the ID token HD parameter and the list of allowed domains as an extra layer of security. In the event that the HD parameter doesn&amp;rsquo;t match the list of allowed domains, we&amp;rsquo;re denying access to Grafana.&lt;/p&gt;
&lt;p&gt;If you set Google OAuth configuration using &lt;code&gt;api_url,&lt;/code&gt; you might be using the legacy implementation of OAuth, which doesn&amp;rsquo;t have the HD parameter describing the organization from which the approved token comes. This could break your login flow.&lt;/p&gt;
&lt;p&gt;You can turn off this feature through the configuration toggle &lt;code&gt;validate_hd &lt;/code&gt;. Anyone using the legacy Google OAuth configuration should turn off this validation if the ID Token response doesn&amp;rsquo;t have the HD parameter.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/83229&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GitHub PR&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;changes-to-how-the-panel-view-url-is-generated-for-repeated-panels&#34;&gt;Changes to how the panel view URL is generated for repeated panels&lt;/h3&gt;
&lt;h4 id=&#34;description-4&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;With the introduction of the Scenes library to dashboards, the URL that’s generated when viewing an individual repeated panel has changed. We’ve changed how these panels are referenced and what used to be &lt;code&gt;&amp;amp;viewPanel=panel-5&lt;/code&gt; is now &lt;code&gt;&amp;amp;viewPanel=panel-3-clone1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This means that the previous URLs won’t work anymore and instead you&amp;rsquo;ll be redirected to the dashboard view and you&amp;rsquo;ll get a &lt;em&gt;Panel not found&lt;/em&gt; error. From this point on, the dashboard will continue to work as expected.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-5&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;Reopen the panel in view mode and you&amp;rsquo;ll get the new URL.&lt;/p&gt;
&lt;h2 id=&#34;plugin-developers&#34;&gt;Plugin developers&lt;/h2&gt;
&lt;h3 id=&#34;react-router-is-deprecated&#34;&gt;React Router is deprecated&lt;/h3&gt;
&lt;h4 id=&#34;description-5&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In Grafana v11 we&amp;rsquo;re marking react-router v5 as deprecated. App plugins should start migrating to use react-router v6.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-6&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;For a complete guide, please follow our &lt;a href=&#34;/developers/plugin-tools/migration-guides/update-from-grafana-versions/migrate-9_x-to-10_x#update-to-react-router-v6&#34;&gt;migration docs on the developer portal&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-6&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Grafana v9.x to v10.x &lt;a href=&#34;/developers/plugin-tools/migration-guides/update-from-grafana-versions/migrate-9_x-to-10_x#update-to-react-router-v6&#34;&gt;migration guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Official react-router v5 to v6 &lt;a href=&#34;https://reactrouter.com/en/main/upgrading/v5&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;migration guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Grafana community forum &lt;a href=&#34;https://community.grafana.com/t/migrating-app-plugins-to-use-react-router-v6/115410&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;topic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-grafanae2e-testing-tool-is-deprecated&#34;&gt;The grafana/e2e testing tool is deprecated&lt;/h3&gt;
&lt;h4 id=&#34;description-6&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;The Cypress based grafana/e2e end-to-end testing tool is now deprecated.&lt;/p&gt;
&lt;h4 id=&#34;migrationmitigation-7&#34;&gt;Migration/mitigation&lt;/h4&gt;
&lt;p&gt;We recommend all plugin authors to migrate their end-to-end tests to use the new Playwright-based &lt;a href=&#34;https://www.npmjs.com/package/@grafana/plugin-e2e?activeTab=readme&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;grafana/plugin-e2e&lt;/a&gt; package instead. Find details on how to migrate from grafana/e2e to grafana/plugin-e2e in the &lt;a href=&#34;/developers/plugin-tools/e2e-test-a-plugin/migrate-from-grafana-e2e&#34;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;chore-taint-arrayvector-with-never-to-further-discourage&#34;&gt;Chore: Taint ArrayVector with &lt;code&gt;never&lt;/code&gt; to further discourage&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/83681&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GitHub PR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Vector interface that was deprecated in Grafana v10 is further deprecated. Using it now generates build-time Typescript errors, but it remains working at runtime. If you&amp;rsquo;re still using ArrayVector in your code, you should remove it immediately and replace it with plain arrays. Plugins that are compiled against older versions and depend on calling get/set will continue to work because the Array prototype still has a modified prototype. This will be removed in the future.&lt;/p&gt;
&lt;h3 id=&#34;chore-remove-react-17-peer-deps&#34;&gt;Chore: Remove React 17 peer deps&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/83524&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GitHub PR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve removed React 17 as a peer dependency from our packages. Anyone using the new versions of these packages should ensure they&amp;rsquo;ve upgraded to React 18 following &lt;a href=&#34;https://react.dev/blog/2022/03/08/react-18-upgrade-guide&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;the upgrade steps&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;chore-remove-systemjs-from-grafanaruntime&#34;&gt;Chore: Remove SystemJS from Grafana/Runtime&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/pull/84561&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GitHub PR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SystemJS is no longer exported from &lt;code&gt;@grafana/runtime&lt;/code&gt;. Plugin developers should instead rely on importing modules/packages using standard TS import syntax and npm/yarn for package installation.&lt;/p&gt;
]]></content><description>&lt;!-- vale GoogleWe = NO -->
&lt;!-- vale We = NO -->
&lt;h1 id="breaking-changes-in-grafana-v110">Breaking changes in Grafana v11.0&lt;/h1>
&lt;p>Following are breaking changes that you should be aware of when upgrading to Grafana v11.0.&lt;/p></description></item><item><title>Breaking changes in Grafana v10.3</title><link>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v10-3/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v10-3/</guid><content><![CDATA[&lt;h1 id=&#34;breaking-changes-in-grafana-v103&#34;&gt;Breaking changes in Grafana v10.3&lt;/h1&gt;
&lt;p&gt;Following are breaking changes that you should be aware of when upgrading to Grafana v10.3. Breaking changes that were introduced in release 10.2.3 are also included here and are marked with an asterisk.&lt;/p&gt;
&lt;p&gt;For our purposes, a breaking change is any change that requires users or operators to do something. This includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Changes in one part of the system that could cause other components to fail&lt;/li&gt;
&lt;li&gt;Deprecations or removal of a feature&lt;/li&gt;
&lt;li&gt;Changes to an API that could break automation&lt;/li&gt;
&lt;li&gt;Changes that affect some plugins or functions of Grafana&lt;/li&gt;
&lt;li&gt;Migrations that can’t be rolled back&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each change, the provided information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helps you determine if you’re affected&lt;/li&gt;
&lt;li&gt;Describes the change or relevant background information&lt;/li&gt;
&lt;li&gt;Guides you in how to mitigate for the change or migrate&lt;/li&gt;
&lt;li&gt;Provides more learning resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For release highlights and deprecations, refer to our 
    &lt;a href=&#34;/docs/grafana/v12.4/whatsnew/whats-new-in-v10-3/&#34;&gt;v10.3 What’s new&lt;/a&gt;. For the specific steps we recommend when you upgrade to v10.3, check out our 
    &lt;a href=&#34;/docs/grafana/v12.4/upgrade-guide/upgrade-v10.3/&#34;&gt;Upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;!--
## Feature

You must use relative references when linking to docs within the Grafana repo. Please do not use absolute URLs. For more information about relrefs, refer to [Links and references](/docs/writers-toolkit/writing-guide/references/).--&gt;
&lt;h2 id=&#34;general-breaking-changes&#34;&gt;General breaking changes&lt;/h2&gt;
&lt;h3 id=&#34;transformations&#34;&gt;Transformations*&lt;/h3&gt;
&lt;p&gt;In panels using the extract fields transformation, where one of the extracted names collides with one of the already existing fields, the extracted field will be renamed. Issue &lt;a href=&#34;https://github.com/grafana/grafana/issues/77569&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#77569&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you use the Table visualization, you might see some inconsistencies in your panels. We have updated the table column naming. This will potentially affect field transformations and/or field overrides. To resolve this, either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update the transformation you are using&lt;/li&gt;
&lt;li&gt;Update field override. Issue &lt;a href=&#34;https://github.com/grafana/grafana/issues/76899&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#76899&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Users who have transformations with the Time field might see their transformations are not working. Those panels that have broken transformations will fail to render. This is because we changed the field key. See related PR: &lt;a href=&#34;https://github.com/grafana/grafana/pull/69865&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#69865&lt;/a&gt;. To resolve this, either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remove the affected panel and re-create it&lt;/li&gt;
&lt;li&gt;Select the Time field again&lt;/li&gt;
&lt;li&gt;Edit the time field as Time for transformation in panel.json or dashboard.json. Issue &lt;a href=&#34;https://github.com/grafana/grafana/issues/76641&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#76641&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;data-source-permissions&#34;&gt;Data source permissions*&lt;/h3&gt;
&lt;p&gt;The following data source permission endpoints have been removed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /datasources/:datasourceId/permissions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/datasources/:datasourceId/permissions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /datasources/:datasourceId/permissions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /datasources/:datasourceId/enable-permissions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /datasources/:datasourceId/disable-permissions&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please use the following endpoints instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/access-control/datasources/:uid&lt;/code&gt; for listing data source permissions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/access-control/datasources/:uid/users/:id&lt;/code&gt;, &lt;code&gt;POST /api/access-control/datasources/:uid/teams/:id&lt;/code&gt;, and &lt;code&gt;POST /api/access-control/datasources/:uid/buildInRoles/:id&lt;/code&gt; for adding or removing data source permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are using the Grafana provider for Terraform to manage data source permissions, you will need to upgrade your provider to &lt;a href=&#34;https://registry.terraform.io/providers/grafana/grafana/2.6.0/docs&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;version 2.6.0&lt;/a&gt; or newer to ensure that data source permission provisioning keeps working. Issue &lt;a href=&#34;https://github.com/grafana/grafana-enterprise/pull/5880&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#5880&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="breaking-changes-in-grafana-v103">Breaking changes in Grafana v10.3&lt;/h1>
&lt;p>Following are breaking changes that you should be aware of when upgrading to Grafana v10.3. Breaking changes that were introduced in release 10.2.3 are also included here and are marked with an asterisk.&lt;/p></description></item><item><title>Breaking changes in Grafana v10.0</title><link>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v10-0/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/breaking-changes/breaking-changes-v10-0/</guid><content><![CDATA[&lt;h1 id=&#34;breaking-changes-in-grafana-v100&#34;&gt;Breaking changes in Grafana v10.0&lt;/h1&gt;
&lt;p&gt;Following are breaking changes that you should be aware of when upgrading to Grafana v10.0.&lt;/p&gt;
&lt;p&gt;For our purposes, a breaking change is any change that requires users or operators to do something. This includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Changes in one part of the system that could cause other components to fail&lt;/li&gt;
&lt;li&gt;Deprecations or removal of a feature&lt;/li&gt;
&lt;li&gt;Changes to an API that could break automation&lt;/li&gt;
&lt;li&gt;Changes that affect some plugins or functions of Grafana&lt;/li&gt;
&lt;li&gt;Migrations that can’t be rolled back&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each change, the provided information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helps you determine if you’re affected&lt;/li&gt;
&lt;li&gt;Describes the change or relevant background information&lt;/li&gt;
&lt;li&gt;Guides you in how to mitigate for the change or migrate&lt;/li&gt;
&lt;li&gt;Provides more learning resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For release highlights and deprecations, refer to our &lt;a href=&#34;../../whatsnew/whats-new-in-v10-0/&#34;&gt;v10.0 What’s new&lt;/a&gt;. For the specific steps we recommend when you upgrade to v10.0, check out our &lt;a href=&#34;../../upgrade-guide/upgrade-v10.0/&#34;&gt;Upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;!--
## Feature

You must use relative references when linking to docs within the Grafana repo. Please do not use absolute URLs. For more information about relrefs, refer to [Links and references](/docs/writers-toolkit/writing-guide/references/).--&gt;
&lt;h2 id=&#34;general-breaking-changes&#34;&gt;General breaking changes&lt;/h2&gt;
&lt;h3 id=&#34;angular-is-deprecated-and-turned-off-by-default-for-new-grafana-cloud-stacks&#34;&gt;Angular is deprecated and turned off by default for new Grafana Cloud stacks&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You create a new Grafana Cloud stack and intend to use any panel or data source plugins written using the Angular.js JavaScript framework. See the &lt;a href=&#34;../../developers/angular_deprecation/angular-plugins/&#34;&gt;list of Angular plugins&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;background&#34;&gt;Background&lt;/h4&gt;
&lt;p&gt;AngularJS is an old frontend framework that stopped active development many years ago. Because of that, it&amp;rsquo;s a security risk. AngularJS also requires &lt;strong&gt;unsafe-eval&lt;/strong&gt; in the &lt;a href=&#34;https://developer.mozilla.org/en/Security/CSP&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CSP (Content Security Policy)&lt;/a&gt; settings, which also reduces the security level of how javascript is executed in the browser.&lt;/p&gt;
&lt;p&gt;Angular plugin support in Grafana is deprecated, meaning it will be removed in a future release. There are still some community and private plugins built using Angular. Starting with v9.0, Grafana has a server configuration option, called &lt;a href=&#34;../../setup-grafana/configure-grafana/#angular_support_enabled&#34;&gt;angular_support_enabled&lt;/a&gt;, that controls whether Angular plugin support is available.&lt;/p&gt;
&lt;h4 id=&#34;change-in-grafana-v10&#34;&gt;Change in Grafana v10&lt;/h4&gt;
&lt;p&gt;Angular is disabled by default for all new Grafana Cloud stacks. Existing stacks in Grafana Cloud, Grafana Enterprise on-premise instances, and Grafana OSS instances will not be automatically impacted.&lt;/p&gt;
&lt;h4 id=&#34;how-to-mitigate&#34;&gt;How to mitigate&lt;/h4&gt;
&lt;p&gt;If you&amp;rsquo;re using Angular plugins in Grafana, try an alternative panel or data source that doesn&amp;rsquo;t use Angular. This list of detected &lt;a href=&#34;../../developers/angular_deprecation/angular-plugins/&#34;&gt;Angular plugins&lt;/a&gt; offers alternatives where they exist.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a developer maintaining a plugin that uses Angular, we recommend you refactor or rewrite its frontend using React.js instead. The team at Grafana is ready to help and provide tools and guidance; you can reach us in &lt;a href=&#34;https://grafana.slack.com/archives/C3HJV5PNE&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Slack&lt;/a&gt; or on our &lt;a href=&#34;https://community.grafana.com/c/plugin-development/30&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Forum&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;learn-more&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../developers/angular_deprecation/&#34;&gt;Angular Support Deprecation documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;grafana-legacy-alerting-is-deprecated-and-no-longer-accepts-internal-or-external-contributions&#34;&gt;Grafana legacy alerting is deprecated and no longer accepts internal or external contributions&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-1&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You use Grafana legacy alerting and have requested new features or changes to it.&lt;/p&gt;
&lt;h4 id=&#34;description&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Grafana legacy alerting (dashboard alerts) has been deprecated since Grafana v9.0, in favor of the new, improved Grafana Alerting. In Grafana v10, the legacy alerting codebase—which depends on Angular—is still available, but we&amp;rsquo;ll no longer contribute to it or accept external contributions for it. We&amp;rsquo;ll continue to work on the migration path from legacy alerting to Grafana Alerting for our remaining users that need to migrate.&lt;/p&gt;
&lt;h4 id=&#34;migration-path&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;The new Grafana Alerting was introduced in Grafana 8 and is a superset of legacy alerting. Learn how to migrate your alerts in the &lt;a href=&#34;/docs/grafana/v10.4/alerting/set-up/migrating-alerts/&#34;&gt;Upgrade Alerting documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;api-keys-are-migrating-to-service-accounts&#34;&gt;API keys are migrating to service accounts&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-2&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You use Grafana API keys and haven&amp;rsquo;t yet migrated to service accounts&lt;/p&gt;
&lt;h4 id=&#34;description-1&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In Grafana v8.5, we introduced &lt;a href=&#34;/blog/2022/08/24/new-in-grafana-9.1-service-accounts-are-now-ga/&#34;&gt;service accounts&lt;/a&gt;, which are a superset of API keys that support token rotation and role-based access control (RBAC). They were promoted to general availability (GA) in v9.1, with an option to manually migrate API keys to service accounts through the UI and API since then. &lt;strong&gt;When you upgrade to Grafana v10, Grafana will automatically migrate all API keys to service accounts and hide the API keys screen that was under the Admin section.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a &amp;ldquo;breaking&amp;rdquo; change because if users are used to seeing and interacting with API keys, they won&amp;rsquo;t see that page in navigation anymore and will need to navigate to the &lt;strong&gt;Service accounts&lt;/strong&gt; page instead. However, your existing API tokens will remain fully functional and migrated to service accounts, so no automation will break. If you roll back to a previous version of Grafana, your API keys will remain intact.&lt;/p&gt;
&lt;p&gt;Grafana&amp;rsquo;s &lt;a href=&#34;../../developers/http_api/auth/#create-api-token&#34;&gt;HTTP API endpoints for generating and managing API Keys&lt;/a&gt; remain functional, but we recommend you begin using the &lt;a href=&#34;../../developers/http_api/serviceaccount/&#34;&gt;Service account HTTP API&lt;/a&gt; to generate and manage machine authentication instead.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-1&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;While upgrading to Grafana v10, you don&amp;rsquo;t need to take any action; your API keys will be automatically migrated. To test or perform the migration from API keys to service accounts before upgrading to Grafana v10, follow our 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/service-accounts/migrate-api-keys/&#34;&gt;migration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-1&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/administration/service-accounts/migrate-api-keys/&#34;&gt;Documentation on migrating from API keys to service accounts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/blog/2022/08/24/new-in-grafana-9.1-service-accounts-are-now-ga/&#34;&gt;Blog post announcement with a video demo including how to migrate&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-experimental-dashboard-previews-feature-is-removed&#34;&gt;The experimental &amp;ldquo;dashboard previews&amp;rdquo; feature is removed&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-3&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You have the &lt;code&gt;dashboardPreviews&lt;/code&gt; feature toggle switched on.&lt;/p&gt;
&lt;h4 id=&#34;description-2&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;re removing the experimental dashboard previews feature due to user permission and performance issues that prevented us from continuing its development. Dashboard previews have been behind a feature toggle since Grafana v9.0.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-2&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;The entire feature has been removed from Grafana. For users who enabled the &lt;code&gt;dashboardPreviews&lt;/code&gt; feature flag, Grafana will continue to work as-is but without dashboard previews. We recommend you remove the &lt;code&gt;dashboardPreviews&lt;/code&gt; feature flag from your Grafana configuration.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-2&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/v9.5/search/dashboard-previews/&#34;&gt;Previous dashboard previews documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rbac-is-on-by-default-in-grafana-enterprise-and-cannot-be-disabled&#34;&gt;RBAC is on by default in Grafana Enterprise and cannot be disabled&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-4&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You have actively disabled RBAC in Grafana&amp;rsquo;s configuration.&lt;/p&gt;
&lt;h4 id=&#34;description-3&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Starting from Grafana 9, RBAC has been enabled by default. An option to disable RBAC was introduced as an emergency mechanism and has only been used in rare cases. With Grafana v10 we removed the configuration option to disable RBAC. This ensures that Grafana works consistently across different features and decreases the risk of having issues with Grafana&amp;rsquo;s legacy access control. Additionally, access control for some of the Grafana v10 features only work with the RBAC, so disabling it is no longer an option.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-3&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;No action is needed—migration is automatic. Users&amp;rsquo; current roles, permissions, SSO mapping, and other authorization functionality will continue to work as before.&lt;/p&gt;
&lt;h3 id=&#34;usernames-are-now-case-insensitive-by-default&#34;&gt;Usernames are now case-insensitive by default&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-5&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You run Grafana with a Postgres or sqlite database, you import users from different SSO identity providers (like Google and Active Directory), and users who signed in from different providers were previously created twice because of case differences (for example &amp;ldquo;&lt;a href=&#34;mailto:Myra@Grafana.com&#34;&gt;Myra@Grafana.com&lt;/a&gt;&amp;rdquo; vs &amp;ldquo;&lt;a href=&#34;mailto:myra@grafana.com&#34;&gt;myra@grafana.com&lt;/a&gt;.&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;background-1&#34;&gt;Background&lt;/h4&gt;
&lt;p&gt;When someone signs up for a Grafana account, they can do it using an email or a login. The fields were case sensitive, which could lead to two or more accounts being created for the same user. Additionally, Grafana allows users to set up an authentication provider, and that provider might return an individual&amp;rsquo;s sign-up email with an uppercased domain name or some combination of uppercase and lowercase letters.&lt;/p&gt;
&lt;p&gt;Having several accounts leads to split user permissions, confusion among signup flows, and unused &amp;ldquo;zombie&amp;rdquo; accounts in your database. Plus, multiple accounts can introduce issues when switching between authentication providers. We refer to these inconsistencies in user uniqueness as a &lt;em&gt;user identity conflict&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id=&#34;change-in-grafana-v10-1&#34;&gt;Change in Grafana v10&lt;/h4&gt;
&lt;p&gt;Grafana will start matching users without regard for case. Conflicting users will not be able to sign in.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-4&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ve built a &lt;a href=&#34;/blog/2022/12/12/guide-to-using-the-new-grafana-cli-user-identity-conflict-tool-in-grafana-9.3/&#34;&gt;CLI tool&lt;/a&gt; which users can use to resolve any potential conflicts beforehand. This breaking change was communicated already with Grafana v9.3.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-3&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/blog/2022/12/12/guide-to-using-the-new-grafana-cli-user-identity-conflict-tool-in-grafana-9.3/&#34;&gt;Blog post describing usage of the new CLI command&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;grafana-oauth-integrations-do-not-work-anymore-with-email-lookups&#34;&gt;Grafana OAuth integrations do not work anymore with email lookups&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-6&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;You have configured Grafana to use multiple identity providers, and you have users with the same email address in multiple identity providers.&lt;/li&gt;
&lt;li&gt;You have configured Grafana to use Generic OAuth with an identity provider that does not support a unique ID field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;background-2&#34;&gt;Background&lt;/h4&gt;
&lt;p&gt;Grafana used to validate identity provider accounts based on the email claim. On many identity providers, the email field is not unique, and this could open a possible account vector to perform an account takeover and authentication bypass in certain scenarios.
This change also ensures that Grafana is protected against the &lt;a href=&#34;/security/security-advisories/cve-2023-3128/&#34;&gt;CVE-2023-3128&lt;/a&gt; vulnerability.&lt;/p&gt;
&lt;h4 id=&#34;change-in-grafana-v10-2&#34;&gt;Change in Grafana v10&lt;/h4&gt;
&lt;p&gt;Grafana will not allow the affected users to sign in.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-5&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;In order to address any errors, we have provided an escape hatch that allows you to activate email lookup. You can use the following configuration in your Grafana instance to return the previous behavior.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;[auth]
oauth_allow_insecure_email_lookup = true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We strongly recommend not doing this in case you are using Azure AD as an identity provider with a multi-tenant app.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-4&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/security/security-advisories/cve-2023-3128//&#34;&gt;CVE-2023-3128 Advisory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../setup-grafana/configure-access/configure-authentication/&#34;&gt;Enable email lookup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-alias-field-in-the-cloudwatch-data-source-is-removed&#34;&gt;The &amp;ldquo;Alias&amp;rdquo; field in the CloudWatch data source is removed&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-7&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;re using the &amp;ldquo;Alias&amp;rdquo; field in the CloudWatch data source, instead of using dynamic labels.&lt;/p&gt;
&lt;h4 id=&#34;description-4&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Alias patterns in the CloudWatch query editor were replaced by Label (dynamic labels) behind a feature toggle. Starting from Grafana v9, Label has been enabled by default. With Grafana v10 we removed the option to disable Label and remove the Alias field entirely.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-6&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;Open and save each dashboard that uses the Alias field. Alias is migrated to Label automatically when you load the dashboard.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-5&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../datasources/aws-cloudwatch/query-editor/#label&#34;&gt;Grafana CloudWatch documentation about the change&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;athena-data-source-plugin-must-be-updated-to-version-293&#34;&gt;Athena data source plugin must be updated to version &amp;gt;=2.9.3&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-8&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;ve installed and are using the Athena data source plugin.&lt;/p&gt;
&lt;h4 id=&#34;description-5&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Grafana v10.0.0 ships with the new React 18 upgrade. In turn, changes in the batching of state updates in React 18 cause a bug in the query editor in Athena plugin versions &amp;lt;=2.9.2.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-7&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;Update the plugin to version 2.9.3 or higher in your Grafana instance management console. This will ensure your plugin query editor works as intended.&lt;/p&gt;
&lt;h3 id=&#34;redshift-data-source-plugin-must-be-updated-to-version-183&#34;&gt;Redshift data source plugin must be updated to version &amp;gt;=1.8.3&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-9&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;ve installed and are using the Redshift data source plugin.&lt;/p&gt;
&lt;h4 id=&#34;description-6&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Grafana v10.0.0 ships with the new React 18 upgrade. In turn, changes in the batching of state updates in React 18 cause a bug in the query editor in Redshift plugin versions &amp;lt;=1.8.3.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-8&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;Update the plugin to version 1.8.3 or higher in your Grafana instance management console. This will ensure your plugin query editor works as intended.&lt;/p&gt;
&lt;h3 id=&#34;doit-international-bigquery-plugin-no-longer-supported&#34;&gt;DoiT International BigQuery plugin no longer supported&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-10&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;ve installed and are using the &lt;a href=&#34;https://github.com/doitintl/bigquery-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DoiT International BigQuery data source plugin&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;description-7&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;In v10.0.0, Grafana no longer supports the use of the &lt;a href=&#34;https://github.com/doitintl/bigquery-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DoiT International BigQuery data source plugin&lt;/a&gt;, which was moved to a &amp;ldquo;retired&amp;rdquo; state in the latter half of 2022, and for which the GitHub repository was archived in December 2022. For BigQuery data sources to continue functioning, you&amp;rsquo;re required to migrate to the &lt;a href=&#34;https://github.com/grafana/google-bigquery-datasource/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Official Grafana BigQuery data source plugin&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-9&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;For everyone using Grafana v8.5&#43;, it’s possible to import queries created with the DoiT International BigQuery community plugin by simply changing the data source to Grafana BigQuery in the data source selector in the affected panel. Please note that &lt;a href=&#34;https://github.com/grafana/google-bigquery-datasource#importing-queries-created-with-doit-international-bigquery-datasource-plugin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;queries will be imported&lt;/a&gt; as raw SQL queries.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-6&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/google-bigquery-datasource#importing-queries-created-with-doit-international-bigquery-datasource-plugin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Information about importing DoiT International BigQuery queries&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;for-plugin-developers&#34;&gt;For Plugin Developers&lt;/h2&gt;
&lt;h3 id=&#34;upgrading-to-react-18&#34;&gt;Upgrading to React 18&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-11&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;ve developed a Grafana plugin that uses the React JS framework (this includes most app, panel, and data source plugins).&lt;/p&gt;
&lt;h4 id=&#34;description-8&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Grafana has been upgraded to React 18 and now leverages the new React client rendering API. Plugin authors in particular should be aware, as there could be unintended side effects due to the changes around automatic batching of state updates and consistent &lt;code&gt;useEffect&lt;/code&gt; timings.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-10&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;As a plugin developer: once a canary build has been released (post-9.5.0), test your plugin against one of the grafana-dev docker builds &lt;a href=&#34;https://hub.docker.com/r/grafana/grafana-dev/tags?page=1&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;here&lt;/a&gt; (&lt;a href=&#34;https://hub.docker.com/layers/grafana/grafana-dev/10.0.0-111404pre/images/sha256-ac78acf54b44bd2ce7e68b796b1df47030da7f35e53b02bc3eec3f4de05f780f?context=explore&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;this one&lt;/a&gt; for example). Because of the extra optimisations made by React 18, some changes may be needed to maintain previous behavior.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-7&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2022/03/29/react-v18&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;React 18 release notes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2022/03/08/react-18-upgrade-guide&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;React 18 upgrade guide&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;deprecated-logs-related-functions-and-variables-have-been-removed-from-the-grafanadata-and-grafanaui-packages&#34;&gt;Deprecated logs-related functions and variables have been removed from the &amp;ldquo;@grafana/data&amp;rdquo; and &amp;ldquo;@grafana/ui&amp;rdquo; packages&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-12&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;re a plugin author and you use one of the following logs-related functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The interface type LogsParser in grafana-data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The following functions and classes related to logs in the grafana-ui package: &lt;code&gt;1LogLabels&lt;/code&gt;, &lt;code&gt;LogMessageAnsi&lt;/code&gt;, &lt;code&gt;LogRows&lt;/code&gt;, &lt;code&gt;getLogRowStyles.&lt;/code&gt;, &lt;code&gt;getLogLevel&lt;/code&gt;, &lt;code&gt;getLogLevelFromKey&lt;/code&gt;, &lt;code&gt;addLogLevelToSeries&lt;/code&gt;, &lt;code&gt;LogsParsers&lt;/code&gt;, &lt;code&gt;calculateFieldStats&lt;/code&gt;, &lt;code&gt;calculateLogsLabelStats&lt;/code&gt;, &lt;code&gt;calculateStats&lt;/code&gt;, &lt;code&gt;getParser&lt;/code&gt;, &lt;code&gt;sortInAscendingOrder&lt;/code&gt;, &lt;code&gt;sortInDescendingOrder&lt;/code&gt;, &lt;code&gt;sortLogsResult&lt;/code&gt;, &lt;code&gt;sortLogRows&lt;/code&gt;, &lt;code&gt;checkLogsError&lt;/code&gt;, &lt;code&gt;escapeUnescapedString&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;description-9&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Certain rarely-used logs-related functions and variables have been moved from grafana-packages to the core grafana codebase. These items have been marked as deprecated previously, and a deprecation-notice was issued in the grafana changelog. Plugin authors who have relied on these functions and variables being available will have to adjust their codebase.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-11&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;If you&amp;rsquo;ve written a data source or panel plugin, make sure it doesn&amp;rsquo;t use the functions and variables that have been deprecated and removed.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-8&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/issues/65779&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/grafana/issues/65779&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/grafana/issues/65778&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/grafana/issues/65778&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dataframe-use-array-or-vector-for-field-values&#34;&gt;DataFrame: Use Array&lt;T&gt; or Vector&lt;T&gt; for field values&lt;/h3&gt;
&lt;!--check on how the &lt;T&gt; are supposed to show up --&gt;
&lt;h4 id=&#34;you-are-affected-if-13&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;re a plugin author and you&amp;rsquo;ve implemented your own version of Vector for data frames.&lt;/p&gt;
&lt;h4 id=&#34;description-10&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;Working with DataFrames was more complicated than it should have been because data was held in a Vector interface rather than a simple Array. In Grafana v10, the interface has been changed so developers can use simple arrays or Vectors.&lt;/p&gt;
&lt;h4 id=&#34;migration-path-12&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;Any code using Vectors will continue to work without issue. If you&amp;rsquo;ve implemented your own version of Vector, it will need to be updated. The easiest approach is to refactor code so it extends MutableVector. This will work in both Grafana v9 and v10.&lt;/p&gt;
&lt;h4 id=&#34;learn-more-9&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/grafana/issues/66480&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/grafana/issues/66480&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;grafanatoolkit-cli-commands-have-been-removed-and-migrated-to-the-create-plugin-package&#34;&gt;grafana/toolkit CLI commands have been removed and migrated to the create-plugin package&lt;/h3&gt;
&lt;h4 id=&#34;you-are-affected-if-14&#34;&gt;You are affected if:&lt;/h4&gt;
&lt;p&gt;You develop plugins using @grafana/toolkit CLI commands.&lt;/p&gt;
&lt;h4 id=&#34;description-11&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;We announced the deprecation of the grafana/toolkit in v9.3 (November 2022) and have a new tool called create-plugin now available as a replacement. We encourage you to migrate and use our updated tooling. All grafana/toolkit commands except &lt;code&gt;build&lt;/code&gt; are removed in Grafana v10.&lt;/p&gt;
&lt;p&gt;Here are some of the benefits of create-plugin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;More flexible:&lt;/strong&gt; With @grafana/create-plugin, you have more control over your plugins and their dependencies, and can more easily customize the tooling to fit your specific needs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Faster development time:&lt;/strong&gt; With its out-of-the-box development environment @grafana/create-plugin can significantly reduce development time compared to using @grafana/toolkit.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Improved testing capabilities:&lt;/strong&gt; Testing plugins with @grafana/create-plugin is much easier with GitHub workflows that automate unit and e2e test runs whenever changes are pushed to GitHub.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Better documentation:&lt;/strong&gt; The &lt;a href=&#34;/developers/plugin-tools/&#34;&gt;documentation&lt;/a&gt; for @grafana/create-plugin is more comprehensive and easier to discover than that of @grafana/toolkit.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;migration-path-13&#34;&gt;Migration path&lt;/h4&gt;
&lt;p&gt;You may already be using the new tooling. If you have an existing plugin previously created using the @grafana/toolkit, you can use the following command to migrate it to the new build tooling:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;
# Run this command from the root of your plugin

cd ./my-plugin

npx @grafana/create-plugin@latest migrate&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;learn-more-10&#34;&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/developers/plugin-tools/migration-guides/migrate-from-toolkit&#34;&gt;Migration guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deprecations&#34;&gt;Deprecations&lt;/h2&gt;
&lt;p&gt;Changing the folder UID through the API is deprecated. This functionality will be removed in a future release.&lt;/p&gt;
]]></content><description>&lt;h1 id="breaking-changes-in-grafana-v100">Breaking changes in Grafana v10.0&lt;/h1>
&lt;p>Following are breaking changes that you should be aware of when upgrading to Grafana v10.0.&lt;/p>
&lt;p>For our purposes, a breaking change is any change that requires users or operators to do something. This includes:&lt;/p></description></item></channel></rss>