diff --git a/docs/development-guide/10-local-dev-tools.md b/docs/development-guide/10-local-dev-tools.md
index 8dca8ebe66d..172269fb849 100644
--- a/docs/development-guide/10-local-dev-tools.md
+++ b/docs/development-guide/10-local-dev-tools.md
@@ -1,10 +1,24 @@
# Local Dev Tools
-To facilitate development and debugging, Cloud Manager includes a "Dev Tools" mode. Currently this mode is used for feature flag toggling, data mocking, and environment switching.
+To facilitate development and debugging, Cloud Manager includes a "Dev Tools" mode. Currently this mode is used for feature flag toggling, data mocking, and theme & environment switching.
+
+In order to access the dev tools, hover or click (mobile) on the 🛠icon in the lower left corner of your browser window. The icon will be colored green if MSW is enabled.
This mode is enabled by default while running the development server. To disable it, add `?dev-tools=false` to the URL, or write `dev-tools: false` to local storage.
-This mode is disabled by default in production builds, but can be enabled by adding `?dev-tools=true` to the URL, or `dev-tools: true` to local storage.
+This mode is disabled by default in production builds.
+
+## Feature Flags
+
+The display of the Flags in dev tools is defined in the `options` array in `FeatureFlagTool.tsx`. While it is convenient to add those switches to the dev tools, it is not always necessary as they can clutter the UI. Additionally, it is important to clean them up once the feature has been battle tested in production.
+
+The flags on/off values are stored in local storage for convenience and will be remembered on reload or app restart.
+
+By default, the boolean flags checkboxes represent their true values as returned by Launch Darkly (dev environment). Hitting the reset button will bring them back to those default values and clear local storage.
+
+## Theme Select
+
+The theme select in dev tools is a convenient way to store the theme choice while MSW is enabled (it won't affect your actual Application settings/preferences). The default is "system".
## Writing a new tool
diff --git a/packages/manager/.changeset/pr-10220-changed-1708622627827.md b/packages/manager/.changeset/pr-10220-changed-1708622627827.md
new file mode 100644
index 00000000000..5344aa3cf4e
--- /dev/null
+++ b/packages/manager/.changeset/pr-10220-changed-1708622627827.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Changed
+---
+
+Improve dev tools UI ([#10220](https://github.com/linode/manager/pull/10220))
diff --git a/packages/manager/src/dev-tools/FeatureFlagTool.tsx b/packages/manager/src/dev-tools/FeatureFlagTool.tsx
index 7a5b7586832..26213e2d33d 100644
--- a/packages/manager/src/dev-tools/FeatureFlagTool.tsx
+++ b/packages/manager/src/dev-tools/FeatureFlagTool.tsx
@@ -1,4 +1,5 @@
import Grid from '@mui/material/Unstable_Grid2';
+import { useFlags as ldUseFlags } from 'launchdarkly-react-client-sdk';
import * as React from 'react';
import { useDispatch } from 'react-redux';
@@ -8,7 +9,6 @@ import { Dispatch } from 'src/hooks/types';
import { useFlags } from 'src/hooks/useFlags';
import { setMockFeatureFlags } from 'src/store/mockFeatureFlags';
import { getStorage, setStorage } from 'src/utilities/storage';
-
const MOCK_FEATURE_FLAGS_STORAGE_KEY = 'devTools/mock-feature-flags';
const options: { flag: keyof Flags; label: string }[] = [
@@ -28,6 +28,7 @@ const options: { flag: keyof Flags; label: string }[] = [
export const FeatureFlagTool = withFeatureFlagProvider(() => {
const dispatch: Dispatch = useDispatch();
const flags = useFlags();
+ const ldFlags = ldUseFlags();
React.useEffect(() => {
const storedFlags = getStorage(MOCK_FEATURE_FLAGS_STORAGE_KEY);
@@ -48,6 +49,14 @@ export const FeatureFlagTool = withFeatureFlagProvider(() => {
setStorage(MOCK_FEATURE_FLAGS_STORAGE_KEY, updatedFlags);
};
+ /**
+ * This will reset the flags values to the Launch Darkly defaults (as returned from the LD dev environment)
+ */
+ const resetFlags = () => {
+ dispatch(setMockFeatureFlags(ldFlags));
+ setStorage(MOCK_FEATURE_FLAGS_STORAGE_KEY, '');
+ };
+
return (
+ (only when MSW is enabled) +
+