From 7311909e6de47c73d1cc854c669e9c41614721b0 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Mon, 4 May 2026 09:13:43 -0700 Subject: [PATCH 1/4] Remove more legacy analytics logic --- .../lib/src/shared/server/_analytics_api.dart | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/server/_analytics_api.dart b/packages/devtools_app/lib/src/shared/server/_analytics_api.dart index e5969cc8263..3b3f9dd6455 100644 --- a/packages/devtools_app/lib/src/shared/server/_analytics_api.dart +++ b/packages/devtools_app/lib/src/shared/server/_analytics_api.dart @@ -4,21 +4,6 @@ part of 'server.dart'; -/// Request DevTools property value 'firstRun' (GA dialog) stored in the file -/// '~/flutter-devtools/.devtools'. -Future isFirstRun() async { - bool firstRun = false; - if (isDevToolsServerAvailable) { - final resp = await request(apiGetDevToolsFirstRun); - if (resp?.statusCode == 200) { - firstRun = json.decode(resp!.body); - } else { - logWarning(resp, apiGetDevToolsFirstRun); - } - } - return firstRun; -} - /// Requests the Flutter client id from the Flutter store file ~\.flutter. /// /// If an empty String is returned, this means that Flutter Tool has never been From b58f2bc8229af7f930f5a3f40d48ddc42aa6033d Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Mon, 4 May 2026 09:14:39 -0700 Subject: [PATCH 2/4] Remove more legacy analytics logic --- packages/devtools_shared/CHANGELOG.md | 6 ++++-- packages/devtools_shared/lib/src/devtools_api.dart | 4 ---- .../lib/src/server/devtools_store.dart | 13 ------------- .../devtools_shared/lib/src/server/server_api.dart | 10 ---------- 4 files changed, 4 insertions(+), 29 deletions(-) diff --git a/packages/devtools_shared/CHANGELOG.md b/packages/devtools_shared/CHANGELOG.md index 6d2525c17ec..24263917542 100644 --- a/packages/devtools_shared/CHANGELOG.md +++ b/packages/devtools_shared/CHANGELOG.md @@ -5,9 +5,11 @@ found in the LICENSE file or at https://developers.google.com/open-source/licens --> # 13.0.0-wip * Deprecated `DevToolsStoreKeys.analyticsEnabled` since this is only used for legacy analytics. -* **Breaking change:** Removed legacy analytics APIs and state cleanup (e.g. `apiGetFlutterGAEnabled`, `apiGetDevToolsEnabled`, `apiSetDevToolsEnabled`). +* **Breaking change:** Removed legacy analytics storage key `DevToolsStoreKeys.isFirstRun`. +* **Breaking change:** Removed legacy analytics APIs and state cleanup +(e.g. `apiGetFlutterGAEnabled`, `apiGetDevToolsEnabled`, `apiSetDevToolsEnabled`, `apiGetDevToolsFirstRun`, `apiResetDevTools`). * **Breaking change:** Removed public constant `devToolsEnabledPropertyName`. -* **Breaking change:** Removed the `analyticsEnabled` getter and setter from `DevToolsUsage`. +* **Breaking change:** Removed `isFirstRun`, `reset`, and `analyticsEnabled` from `DevToolsUsage`. # 12.1.0 * Adds additional logging to `IntegrationTestRunner`. diff --git a/packages/devtools_shared/lib/src/devtools_api.dart b/packages/devtools_shared/lib/src/devtools_api.dart index fc1bfb50987..f28ffbbf0a5 100644 --- a/packages/devtools_shared/lib/src/devtools_api.dart +++ b/packages/devtools_shared/lib/src/devtools_api.dart @@ -17,10 +17,6 @@ const apiParameterVmServiceConnected = 'connected'; /// Flutter GA properties APIs: const apiGetFlutterGAClientId = '${apiPrefix}getFlutterGAClientId'; -/// DevTools GA properties APIs: -const apiResetDevTools = '${apiPrefix}resetDevTools'; -const apiGetDevToolsFirstRun = '${apiPrefix}getDevToolsFirstRun'; - abstract class PreferencesApi { /// Returns the preference value in the DevTools store file for the key /// specified by the [preferenceKeyProperty] query parameter. diff --git a/packages/devtools_shared/lib/src/server/devtools_store.dart b/packages/devtools_shared/lib/src/server/devtools_store.dart index b306c4c6df2..d4820afc060 100644 --- a/packages/devtools_shared/lib/src/server/devtools_store.dart +++ b/packages/devtools_shared/lib/src/server/devtools_store.dart @@ -13,10 +13,6 @@ enum DevToolsStoreKeys { ) analyticsEnabled, - /// The key holding the value for whether this is a user's first run of - /// DevTools. - isFirstRun, - /// The key holding the value for the last DevTools version that the user /// viewed release notes for. lastReleaseNotesVersion, @@ -59,21 +55,12 @@ class DevToolsUsage { late IOPersistentProperties properties; - void reset() { - properties.remove(DevToolsStoreKeys.isFirstRun.name); - } - void _removeLegacyKeys() { // TODO(https://github.com/flutter/devtools/issues/9775): remove this logic // once legacy keys have been removed for ~1 year. properties.remove(DevToolsStoreKeys.analyticsEnabled.name); } - bool get isFirstRun { - return properties[DevToolsStoreKeys.isFirstRun.name] = - properties[DevToolsStoreKeys.isFirstRun.name] == null; - } - bool surveyNameExists(String surveyName) => properties[surveyName] != null; void _addSurvey(String surveyName) { diff --git a/packages/devtools_shared/lib/src/server/server_api.dart b/packages/devtools_shared/lib/src/server/server_api.dart index f385060eca1..4cc838a52ca 100644 --- a/packages/devtools_shared/lib/src/server/server_api.dart +++ b/packages/devtools_shared/lib/src/server/server_api.dart @@ -82,16 +82,6 @@ class ServerApi { api: api, ); - // ----- DevTools Store. ----- - - case apiResetDevTools: - _devToolsStore.reset(); - return _encodeResponse(true, api: api); - case apiGetDevToolsFirstRun: - // Has DevTools been run first time? To bring up analytics dialog. - final isFirstRun = _devToolsStore.isFirstRun; - return _encodeResponse(isFirstRun, api: api); - // ----- Preferences api. ----- case PreferencesApi.getPreferenceValue: return _PreferencesApiHandler.getPreferenceValue( From 8cbd3465e5af0e0d95a137f48b384114744da022 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Mon, 4 May 2026 09:23:03 -0700 Subject: [PATCH 3/4] review comment --- packages/devtools_shared/CHANGELOG.md | 4 ++-- .../lib/src/server/devtools_store.dart | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/devtools_shared/CHANGELOG.md b/packages/devtools_shared/CHANGELOG.md index 24263917542..3da3875e30d 100644 --- a/packages/devtools_shared/CHANGELOG.md +++ b/packages/devtools_shared/CHANGELOG.md @@ -4,8 +4,8 @@ Use of this source code is governed by a BSD-style license that can be found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. --> # 13.0.0-wip -* Deprecated `DevToolsStoreKeys.analyticsEnabled` since this is only used for legacy analytics. -* **Breaking change:** Removed legacy analytics storage key `DevToolsStoreKeys.isFirstRun`. +* Deprecated `DevToolsStoreKeys.analyticsEnabled` and `DevToolsStoreKeys.isFirstRun` +since these were only used for legacy analytics. * **Breaking change:** Removed legacy analytics APIs and state cleanup (e.g. `apiGetFlutterGAEnabled`, `apiGetDevToolsEnabled`, `apiSetDevToolsEnabled`, `apiGetDevToolsFirstRun`, `apiResetDevTools`). * **Breaking change:** Removed public constant `devToolsEnabledPropertyName`. diff --git a/packages/devtools_shared/lib/src/server/devtools_store.dart b/packages/devtools_shared/lib/src/server/devtools_store.dart index d4820afc060..a7e0dfc8ad2 100644 --- a/packages/devtools_shared/lib/src/server/devtools_store.dart +++ b/packages/devtools_shared/lib/src/server/devtools_store.dart @@ -13,6 +13,13 @@ enum DevToolsStoreKeys { ) analyticsEnabled, + /// The key holding the value for whether this is a user's first run of + /// DevTools. + @Deprecated( + 'This key was used for legacy analytics and will be removed.', + ) + isFirstRun, + /// The key holding the value for the last DevTools version that the user /// viewed release notes for. lastReleaseNotesVersion, @@ -58,7 +65,9 @@ class DevToolsUsage { void _removeLegacyKeys() { // TODO(https://github.com/flutter/devtools/issues/9775): remove this logic // once legacy keys have been removed for ~1 year. - properties.remove(DevToolsStoreKeys.analyticsEnabled.name); + properties + ..remove(DevToolsStoreKeys.analyticsEnabled.name) + ..remove(DevToolsStoreKeys.isFirstRun.name); } bool surveyNameExists(String surveyName) => properties[surveyName] != null; From c8c37fbdce51b4e8b44a06c1ed56d11cd4815ed0 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Mon, 4 May 2026 09:25:14 -0700 Subject: [PATCH 4/4] use raw strings --- packages/devtools_shared/CHANGELOG.md | 4 ++-- .../lib/src/server/devtools_store.dart | 23 ++++--------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/packages/devtools_shared/CHANGELOG.md b/packages/devtools_shared/CHANGELOG.md index 3da3875e30d..61231012135 100644 --- a/packages/devtools_shared/CHANGELOG.md +++ b/packages/devtools_shared/CHANGELOG.md @@ -4,8 +4,8 @@ Use of this source code is governed by a BSD-style license that can be found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. --> # 13.0.0-wip -* Deprecated `DevToolsStoreKeys.analyticsEnabled` and `DevToolsStoreKeys.isFirstRun` -since these were only used for legacy analytics. +* **Breaking change:** Removed `DevToolsStoreKeys.analyticsEnabled` and +`DevToolsStoreKeys.isFirstRun` since these were only used for legacy analytics. * **Breaking change:** Removed legacy analytics APIs and state cleanup (e.g. `apiGetFlutterGAEnabled`, `apiGetDevToolsEnabled`, `apiSetDevToolsEnabled`, `apiGetDevToolsFirstRun`, `apiResetDevTools`). * **Breaking change:** Removed public constant `devToolsEnabledPropertyName`. diff --git a/packages/devtools_shared/lib/src/server/devtools_store.dart b/packages/devtools_shared/lib/src/server/devtools_store.dart index a7e0dfc8ad2..00f9558d874 100644 --- a/packages/devtools_shared/lib/src/server/devtools_store.dart +++ b/packages/devtools_shared/lib/src/server/devtools_store.dart @@ -5,21 +5,6 @@ import 'file_system.dart'; enum DevToolsStoreKeys { - /// The key holding the value for whether Google Analytics (legacy) for - /// DevTools have been enabled. - @Deprecated( - 'Use unified_analytics instead; this key is for legacy analytics and will ' - 'be removed.', - ) - analyticsEnabled, - - /// The key holding the value for whether this is a user's first run of - /// DevTools. - @Deprecated( - 'This key was used for legacy analytics and will be removed.', - ) - isFirstRun, - /// The key holding the value for the last DevTools version that the user /// viewed release notes for. lastReleaseNotesVersion, @@ -64,10 +49,12 @@ class DevToolsUsage { void _removeLegacyKeys() { // TODO(https://github.com/flutter/devtools/issues/9775): remove this logic - // once legacy keys have been removed for ~1 year. + // once legacy keys have been removed for ~1 year. We are intentionally + // using raw strings instead of values from [DevToolsStoreKeys] to avoid + // unnecessary breaking changes in the future. properties - ..remove(DevToolsStoreKeys.analyticsEnabled.name) - ..remove(DevToolsStoreKeys.isFirstRun.name); + ..remove('analyticsEnabled') + ..remove('isFirstRun'); } bool surveyNameExists(String surveyName) => properties[surveyName] != null;