diff --git a/src/components/PostControls/DiscoverDebug.tsx b/src/components/PostControls/DiscoverDebug.tsx
index e06c2d7a6..ed58faf28 100644
--- a/src/components/PostControls/DiscoverDebug.tsx
+++ b/src/components/PostControls/DiscoverDebug.tsx
@@ -3,6 +3,7 @@ import * as Clipboard from 'expo-clipboard'
import {t} from '@lingui/macro'
import {DISCOVER_DEBUG_DIDS} from '#/lib/constants'
+import {useDiscoverContextEnabled} from '#/state/preferences/discover-context-enabled'
import {useSession} from '#/state/session'
import {atoms as a, useTheme} from '#/alf'
import * as Toast from '#/components/Toast'
@@ -17,10 +18,12 @@ export function DiscoverDebug({
}) {
const ax = useAnalytics()
const {currentAccount} = useSession()
+ const discoverContextEnabled = useDiscoverContextEnabled()
const isDiscoverDebugUser =
IS_INTERNAL ||
DISCOVER_DEBUG_DIDS[currentAccount?.did || ''] ||
- ax.features.enabled(ax.features.DebugFeedContext)
+ ax.features.enabled(ax.features.DebugFeedContext) ||
+ discoverContextEnabled
const theme = useTheme()
return (
diff --git a/src/screens/Settings/DeerSettings.tsx b/src/screens/Settings/DeerSettings.tsx
index 621a2a132..4222af5f9 100644
--- a/src/screens/Settings/DeerSettings.tsx
+++ b/src/screens/Settings/DeerSettings.tsx
@@ -73,6 +73,10 @@ import {
useDisableViaRepostNotification,
useSetDisableViaRepostNotification,
} from '#/state/preferences/disable-via-repost-notification'
+import {
+ useDiscoverContextEnabled,
+ useSetDiscoverContextEnabled,
+} from '#/state/preferences/discover-context-enabled'
import {
useSetShowExternalShareButtons,
useShowExternalShareButtons,
@@ -514,6 +518,9 @@ export function DeerSettingsScreen({}: Props) {
const disableComposerPrompt = useDisableComposerPrompt()
const setDisableComposerPrompt = useSetDisableComposerPrompt()
+ const discoverContextEnabled = useDiscoverContextEnabled()
+ const setDiscoverContextEnabled = useSetDiscoverContextEnabled()
+
const disableLikesMetrics = useDisableLikesMetrics()
const setDisableLikesMetrics = useSetDisableLikesMetrics()
@@ -889,6 +896,18 @@ export function DeerSettingsScreen({}: Props) {
access to features locked behind email verification.
+
+ setDiscoverContextEnabled(value)}
+ style={[a.w_full]}>
+
+ Show debug context for posts in Discover feed
+
+
+
diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts
index 7a6d9f939..ccfe8565a 100644
--- a/src/state/persisted/schema.ts
+++ b/src/state/persisted/schema.ts
@@ -158,6 +158,7 @@ const schema = z.object({
disableFollowedByMetrics: z.boolean().optional(),
disablePostsMetrics: z.boolean().optional(),
hideSimilarAccountsRecomm: z.boolean().optional(),
+ discoverContextEnabled: z.boolean().optional(),
enableSquareAvatars: z.boolean().optional(),
enableSquareButtons: z.boolean().optional(),
disableVerifyEmailReminder: z.boolean().optional(),
@@ -262,6 +263,7 @@ export const defaults: Schema = {
disableFollowedByMetrics: false,
disablePostsMetrics: false,
hideSimilarAccountsRecomm: true,
+ discoverContextEnabled: false,
enableSquareAvatars: true,
enableSquareButtons: true,
disableVerifyEmailReminder: false,
diff --git a/src/state/preferences/discover-context-enabled.tsx b/src/state/preferences/discover-context-enabled.tsx
new file mode 100644
index 000000000..90943ff0d
--- /dev/null
+++ b/src/state/preferences/discover-context-enabled.tsx
@@ -0,0 +1,55 @@
+import React from 'react'
+
+import * as persisted from '#/state/persisted'
+
+// Preference: discoverContextEnabled – when true, shows debug context for discover feed
+
+type StateContext = persisted.Schema['discoverContextEnabled']
+// Same setter signature used across other preference modules
+type SetContext = (v: persisted.Schema['discoverContextEnabled']) => void
+
+const stateContext = React.createContext(
+ persisted.defaults.discoverContextEnabled,
+)
+const setContext = React.createContext(
+ (_: persisted.Schema['discoverContextEnabled']) => {},
+)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(
+ persisted.get('discoverContextEnabled'),
+ )
+
+ const setStateWrapped = React.useCallback(
+ (discoverContextEnabled: persisted.Schema['discoverContextEnabled']) => {
+ setState(discoverContextEnabled)
+ persisted.write('discoverContextEnabled', discoverContextEnabled)
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate(
+ 'discoverContextEnabled',
+ nextDiscoverContextEnabled => {
+ setState(nextDiscoverContextEnabled)
+ },
+ )
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useDiscoverContextEnabled() {
+ return React.useContext(stateContext)
+}
+
+export function useSetDiscoverContextEnabled() {
+ return React.useContext(setContext)
+}
diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx
index c42eb0a86..a078d4695 100644
--- a/src/state/preferences/index.tsx
+++ b/src/state/preferences/index.tsx
@@ -19,6 +19,7 @@ import {Provider as DisableRepostsMetricsProvider} from './disable-reposts-metri
import {Provider as DisableSavesMetricsProvider} from './disable-saves-metrics'
import {Provider as DisableVerifyEmailReminderProvider} from './disable-verify-email-reminder'
import {Provider as DisableViaRepostNotificationProvider} from './disable-via-repost-notification'
+import {Provider as DiscoverContextEnabledProvider} from './discover-context-enabled'
import {Provider as EnableSquareAvatarsProvider} from './enable-square-avatars'
import {Provider as EnableSquareButtonsProvider} from './enable-square-buttons'
import {Provider as ExternalEmbedsProvider} from './external-embeds-prefs'
@@ -53,6 +54,10 @@ export {
useSetDisableComposerPrompt,
} from './disable-composer-prompt'
export {useHapticsDisabled, useSetHapticsDisabled} from './disable-haptics'
+export {
+ useDiscoverContextEnabled,
+ useSetDiscoverContextEnabled,
+} from './discover-context-enabled'
export {
useExternalEmbedsPrefs,
useSetExternalEmbedPref,
@@ -115,9 +120,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
- {
- children
- }
+
+ {
+ children
+ }
+