···11export type Gate =
22 // Keep this alphabetic please.
33- | 'debug_show_feedcontext' // DISABLED DUE TO EME
44- | 'post_feed_lang_window' // DISABLED DUE TO EME
55- | 'remove_show_latest_button'
33+ 'debug_show_feedcontext' | 'debug_subscriptions' | 'remove_show_latest_button'
+4-4
src/screens/Settings/AppIconSettings/index.tsx
···55import * as DynamicAppIcon from '@mozzius/expo-dynamic-app-icon'
66import {NativeStackScreenProps} from '@react-navigation/native-stack'
7788-import {DISCOVER_DEBUG_DIDS} from '#/lib/constants'
88+import {IS_INTERNAL} from '#/lib/app-info'
99import {PressableScale} from '#/lib/custom-animations/PressableScale'
1010import {CommonNavigatorParams} from '#/lib/routes/types'
1111+import {useGate} from '#/lib/statsig/statsig'
1112import {isAndroid} from '#/platform/detection'
1212-import {useSession} from '#/state/session'
1313import {AppIconImage} from '#/screens/Settings/AppIconSettings/AppIconImage'
1414import {AppIconSet} from '#/screens/Settings/AppIconSettings/types'
1515import {useAppIconSets} from '#/screens/Settings/AppIconSettings/useAppIconSets'
···2323 const t = useTheme()
2424 const {_} = useLingui()
2525 const sets = useAppIconSets()
2626- const {currentAccount} = useSession()
2626+ const gate = useGate()
2727 const [currentAppIcon, setCurrentAppIcon] = useState(() =>
2828 getAppIconName(DynamicAppIcon.getAppIcon()),
2929 )
···8686 ))}
8787 </Group>
88888989- {DISCOVER_DEBUG_DIDS[currentAccount?.did ?? ''] && (
8989+ {IS_INTERNAL && gate('debug_subscriptions') && (
9090 <>
9191 <Text
9292 style={[
+4-5
src/screens/Settings/AppearanceSettings.tsx
···88import {msg, Trans} from '@lingui/macro'
99import {useLingui} from '@lingui/react'
10101111-import {DISCOVER_DEBUG_DIDS} from '#/lib/constants'
1111+import {IS_INTERNAL} from '#/lib/app-info'
1212import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
1313+import {useGate} from '#/lib/statsig/statsig'
1314import {isNative} from '#/platform/detection'
1414-import {useSession} from '#/state/session'
1515import {useSetThemePrefs, useThemePrefs} from '#/state/shell'
1616import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem'
1717import {atoms as a, native, useAlf, useTheme} from '#/alf'
···2929export function AppearanceSettingsScreen({}: Props) {
3030 const {_} = useLingui()
3131 const {fonts} = useAlf()
3232+ const gate = useGate()
32333334 const {colorMode, darkTheme} = useThemePrefs()
3435 const {setColorMode, setDarkTheme} = useSetThemePrefs()
···7374 },
7475 [fonts],
7576 )
7676-7777- const {currentAccount} = useSession()
78777978 return (
8079 <LayoutAnimationConfig skipExiting skipEntering>
···178177 onChange={onChangeFontScale}
179178 />
180179181181- {isNative && DISCOVER_DEBUG_DIDS[currentAccount?.did ?? ''] && (
180180+ {isNative && IS_INTERNAL && gate('debug_subscriptions') && (
182181 <>
183182 <SettingsList.Divider />
184183 <AppIconSettingsListItem />
+1-4
src/state/queries/post-feed.ts
···144144 /**
145145 * The number of posts to fetch in a single request. Because we filter
146146 * unwanted content, we may over-fetch here to try and fill pages by
147147- * `MIN_POSTS`.
147147+ * `MIN_POSTS`. But if you're doing this, ask @why if it's ok first.
148148 */
149149-150150- // TEMPORARILY DISABLING GATE TO PREVENT EVENT CONSUMPTION @TODO EME-GATE
151151- // const fetchLimit = gate('post_feed_lang_window') ? 100 : MIN_POSTS
152149 const fetchLimit = MIN_POSTS
153150154151 // Make sure this doesn't invalidate unless really needed.
+4-3
src/view/com/util/post-ctrls/PostCtrls.tsx
···1818import {useLingui} from '@lingui/react'
19192020import {IS_INTERNAL} from '#/lib/app-info'
2121-import {DISCOVER_DEBUG_DIDS, POST_CTRL_HITSLOP} from '#/lib/constants'
2121+import {POST_CTRL_HITSLOP} from '#/lib/constants'
2222import {CountWheel} from '#/lib/custom-animations/CountWheel'
2323import {AnimatedLikeIcon} from '#/lib/custom-animations/LikeIcon'
2424import {useHaptics} from '#/lib/haptics'
2525import {makeProfileLink} from '#/lib/routes/links'
2626import {shareUrl} from '#/lib/sharing'
2727+import {useGate} from '#/lib/statsig/statsig'
2728import {toShareUrl} from '#/lib/strings/url-helpers'
2829import {Shadow} from '#/state/cache/types'
2930import {useFeedFeedbackContext} from '#/state/feed-feedback'
···8586 const {sendInteraction} = useFeedFeedbackContext()
8687 const {captureAction} = useProgressGuideControls()
8788 const playHaptic = useHaptics()
8888- const isDiscoverDebugUser =
8989- IS_INTERNAL || DISCOVER_DEBUG_DIDS[currentAccount?.did ?? '']
8989+ const gate = useGate()
9090+ const isDiscoverDebugUser = IS_INTERNAL || gate('debug_show_feedcontext')
9091 const isBlocked = Boolean(
9192 post.author.viewer?.blocking ||
9293 post.author.viewer?.blockedBy ||