+
diff --git a/packages/nc-gui/composables/useBetaFeatureToggle.ts b/packages/nc-gui/composables/useBetaFeatureToggle.ts
index 4fc9eec2ac..463b248413 100644
--- a/packages/nc-gui/composables/useBetaFeatureToggle.ts
+++ b/packages/nc-gui/composables/useBetaFeatureToggle.ts
@@ -178,6 +178,15 @@ const FEATURES = [
isEngineering: true,
isEE: true,
},
+ {
+ id: 'expanded_record_panel',
+ title: 'Expanded record side panel',
+ description: 'Open expanded records in a resizable side panel beside the grid instead of a centered modal.',
+ enabled: true,
+ version: 2,
+ isEngineering: false,
+ isEE: true,
+ },
] as const
export const FEATURE_FLAG = Object.fromEntries(FEATURES.map((feature) => [feature.id.toUpperCase(), feature.id])) as Record<
diff --git a/packages/nc-gui/composables/useExpandedFormMode.ts b/packages/nc-gui/composables/useExpandedFormMode.ts
index c92fdb0327..38ea6d630f 100644
--- a/packages/nc-gui/composables/useExpandedFormMode.ts
+++ b/packages/nc-gui/composables/useExpandedFormMode.ts
@@ -1,18 +1,16 @@
-import { useStorage } from '@vueuse/core'
-
export type ExpandedFormMode = 'panel' | 'modal'
-const STORAGE_KEY = 'nc-expanded-form-mode'
-
-// Browser-level preference (localStorage, not tied to user). CE is always
-// 'modal' since the panel doesn't exist there. Mobile / public views ignore
-// this preference and force the modal regardless.
+// Mode is derived purely from the `expanded_record_panel` experimental feature
+// flag — no in-product toggle. Users who want the old modal back can disable
+// the flag from experimental features. CE never sees this composable resolve
+// to 'panel' because the flag's `isEE: true` short-circuits there. Mobile and
+// public views ignore the result and force the modal regardless.
export const useExpandedFormMode = createSharedComposable(() => {
- const mode = useStorage
(STORAGE_KEY, 'panel')
+ const { isFeatureEnabled } = useBetaFeatureToggle()
- const toggle = () => {
- mode.value = mode.value === 'panel' ? 'modal' : 'panel'
- }
+ const mode = computed(() =>
+ isFeatureEnabled(FEATURE_FLAG.EXPANDED_RECORD_PANEL) ? 'panel' : 'modal',
+ )
- return { mode, toggle }
+ return { mode }
})