diff --git a/lib/components/farcaster-data-handler.react.js b/lib/components/farcaster-data-handler.react.js
--- a/lib/components/farcaster-data-handler.react.js
+++ b/lib/components/farcaster-data-handler.react.js
@@ -6,7 +6,6 @@
   updateRelationships as serverUpdateRelationships,
   updateRelationshipsActionTypes,
 } from '../actions/relationship-actions.js';
-import { FIDContext } from '../components/fid-provider.react.js';
 import { NeynarClientContext } from '../components/neynar-client-provider.react.js';
 import { cookieSelector } from '../selectors/keyserver-selectors.js';
 import { isLoggedIn } from '../selectors/user-selectors.js';
@@ -14,6 +13,7 @@
 import { relationshipActions } from '../types/relationship-types.js';
 import { useLegacyAshoatKeyserverCall } from '../utils/action-utils.js';
 import { authoritativeKeyserverID } from '../utils/authoritative-keyserver.js';
+import { useCurrentUserFID } from '../utils/farcaster-utils.js';
 import { useDispatchActionPromise } from '../utils/redux-promise-utils.js';
 import { useSelector } from '../utils/redux-utils.js';
 import { usingCommServicesAccessToken } from '../utils/services-utils.js';
@@ -47,7 +47,7 @@
 
   const userInfos = useSelector(state => state.userStore.userInfos);
 
-  const fid = React.useContext(FIDContext)?.fid;
+  const fid = useCurrentUserFID();
 
   const prevCanQueryRef = React.useRef<?boolean>();
   React.useEffect(() => {
diff --git a/lib/utils/farcaster-utils.js b/lib/utils/farcaster-utils.js
new file mode 100644
--- /dev/null
+++ b/lib/utils/farcaster-utils.js
@@ -0,0 +1,15 @@
+// @flow
+
+import { syncedMetadataNames } from '../types/synced-metadata-types.js';
+import { useSelector } from '../utils/redux-utils.js';
+
+function useCurrentUserFID(): ?string {
+  return useSelector(
+    state =>
+      state.syncedMetadataStore.syncedMetadata[
+        syncedMetadataNames.CURRENT_USER_FID
+      ] ?? null,
+  );
+}
+
+export { useCurrentUserFID };
diff --git a/native/account/registration/registration-server-call.js b/native/account/registration/registration-server-call.js
--- a/native/account/registration/registration-server-call.js
+++ b/native/account/registration/registration-server-call.js
@@ -1,17 +1,17 @@
 // @flow
 
-import invariant from 'invariant';
 import * as React from 'react';
 
 import { setDataLoadedActionType } from 'lib/actions/client-db-store-actions.js';
+import { setSyncedMetadataEntryActionType } from 'lib/actions/synced-metadata-actions.js';
 import {
   keyserverRegisterActionTypes,
   keyserverRegister,
   useIdentityPasswordRegister,
   identityRegisterActionTypes,
 } from 'lib/actions/user-actions.js';
-import { FIDContext } from 'lib/components/fid-provider.react.js';
 import type { LogInStartingPayload } from 'lib/types/account-types.js';
+import { syncedMetadataNames } from 'lib/types/synced-metadata-types.js';
 import { useLegacyAshoatKeyserverCall } from 'lib/utils/action-utils.js';
 import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
 import { useDispatch } from 'lib/utils/redux-utils.js';
@@ -75,10 +75,6 @@
   const callKeyserverRegister = useLegacyAshoatKeyserverCall(keyserverRegister);
   const callIdentityPasswordRegister = useIdentityPasswordRegister();
 
-  const fidContext = React.useContext(FIDContext);
-  invariant(fidContext, 'FIDContext is missing');
-  const { setFID } = fidContext;
-
   const identityRegisterUsernameAccount = React.useCallback(
     async (
       accountSelection: UsernameAccountSelection,
@@ -248,7 +244,13 @@
               type: setURLPrefix,
               payload: keyserverURL,
             });
-            setFID(farcasterID);
+            dispatch({
+              type: setSyncedMetadataEntryActionType,
+              payload: {
+                name: syncedMetadataNames.CURRENT_USER_FID,
+                data: farcasterID,
+              },
+            });
             setCurrentStep({
               step: 'waiting_for_registration_call',
               avatarData,
@@ -267,7 +269,6 @@
       legacySiweServerCall,
       dispatch,
       identityWalletRegisterCall,
-      setFID,
     ],
   );
 
diff --git a/native/components/connect-farcaster-alert-handler.react.js b/native/components/connect-farcaster-alert-handler.react.js
--- a/native/components/connect-farcaster-alert-handler.react.js
+++ b/native/components/connect-farcaster-alert-handler.react.js
@@ -4,13 +4,13 @@
 import * as React from 'react';
 
 import { recordAlertActionType } from 'lib/actions/alert-actions.js';
-import { FIDContext } from 'lib/components/fid-provider.react.js';
 import { cookieSelector } from 'lib/selectors/keyserver-selectors.js';
 import {
   alertTypes,
   type RecordAlertActionPayload,
 } from 'lib/types/alert-types.js';
 import { authoritativeKeyserverID } from 'lib/utils/authoritative-keyserver.js';
+import { useCurrentUserFID } from 'lib/utils/farcaster-utils.js';
 import { shouldSkipConnectFarcasterAlert } from 'lib/utils/push-alerts.js';
 import { useDispatch } from 'lib/utils/redux-utils.js';
 import sleep from 'lib/utils/sleep.js';
@@ -28,7 +28,7 @@
   const hasUserCookie = !!(cookie && cookie.startsWith('user='));
   const loggedIn = !!currentUserID && hasUserCookie;
 
-  const fid = React.useContext(FIDContext)?.fid;
+  const fid = useCurrentUserFID();
 
   const connectFarcasterAlertInfo = useSelector(
     state => state.alertStore.alertInfos[alertTypes.CONNECT_FARCASTER],
diff --git a/native/components/connect-farcaster-bottom-sheet.react.js b/native/components/connect-farcaster-bottom-sheet.react.js
--- a/native/components/connect-farcaster-bottom-sheet.react.js
+++ b/native/components/connect-farcaster-bottom-sheet.react.js
@@ -5,8 +5,11 @@
 import { View, StyleSheet } from 'react-native';
 import { useSafeAreaInsets } from 'react-native-safe-area-context';
 
-import { FIDContext } from 'lib/components/fid-provider.react.js';
+import { setSyncedMetadataEntryActionType } from 'lib/actions/synced-metadata-actions.js';
 import { useIsAppForegrounded } from 'lib/shared/lifecycle-utils.js';
+import { syncedMetadataNames } from 'lib/types/synced-metadata-types.js';
+import { useCurrentUserFID } from 'lib/utils/farcaster-utils.js';
+import { useDispatch } from 'lib/utils/redux-utils.js';
 
 import FarcasterPrompt from './farcaster-prompt.react.js';
 import FarcasterWebView, {
@@ -31,14 +34,27 @@
 function ConnectFarcasterBottomSheet(props: Props): React.Node {
   const { navigation } = props;
 
+  const dispatch = useDispatch();
+
+  const fid = useCurrentUserFID();
+
+  const onSuccess = React.useCallback(
+    (newFID: string) => {
+      dispatch({
+        type: setSyncedMetadataEntryActionType,
+        payload: {
+          name: syncedMetadataNames.CURRENT_USER_FID,
+          data: newFID,
+        },
+      });
+    },
+    [dispatch],
+  );
+
   const { goBack } = navigation;
 
   const bottomSheetRef = React.useRef(null);
 
-  const fidContext = React.useContext(FIDContext);
-  invariant(fidContext, 'fidContext is missing');
-  const { fid, setFID } = fidContext;
-
   const bottomSheetContext = React.useContext(BottomSheetContext);
   invariant(bottomSheetContext, 'bottomSheetContext should be set');
   const { setContentHeight } = bottomSheetContext;
@@ -86,10 +102,10 @@
             variant={connectButtonVariant}
           />
         </View>
-        <FarcasterWebView onSuccess={setFID} webViewState={webViewState} />
+        <FarcasterWebView onSuccess={onSuccess} webViewState={webViewState} />
       </BottomSheet>
     ),
-    [connectButtonVariant, goBack, onPressConnect, setFID, webViewState],
+    [connectButtonVariant, goBack, onPressConnect, onSuccess, webViewState],
   );
 
   return connectFarcasterBottomSheet;
diff --git a/native/profile/farcaster-account-settings.react.js b/native/profile/farcaster-account-settings.react.js
--- a/native/profile/farcaster-account-settings.react.js
+++ b/native/profile/farcaster-account-settings.react.js
@@ -1,10 +1,15 @@
 // @flow
 
-import invariant from 'invariant';
 import * as React from 'react';
 import { View } from 'react-native';
 
-import { FIDContext } from 'lib/components/fid-provider.react.js';
+import {
+  setSyncedMetadataEntryActionType,
+  clearSyncedMetadataEntryActionType,
+} from 'lib/actions/synced-metadata-actions.js';
+import { syncedMetadataNames } from 'lib/types/synced-metadata-types.js';
+import { useCurrentUserFID } from 'lib/utils/farcaster-utils.js';
+import { useDispatch } from 'lib/utils/redux-utils.js';
 
 import type { ProfileNavigationProp } from './profile.react.js';
 import RegistrationButton from '../account/registration/registration-button.react.js';
@@ -21,16 +26,20 @@
 
 // eslint-disable-next-line no-unused-vars
 function FarcasterAccountSettings(props: Props): React.Node {
-  const fidContext = React.useContext(FIDContext);
-  invariant(fidContext, 'FIDContext is missing');
+  const dispatch = useDispatch();
 
-  const { fid, setFID } = fidContext;
+  const fid = useCurrentUserFID();
 
   const styles = useStyles(unboundStyles);
 
   const onPressDisconnect = React.useCallback(() => {
-    setFID(null);
-  }, [setFID]);
+    dispatch({
+      type: clearSyncedMetadataEntryActionType,
+      payload: {
+        name: syncedMetadataNames.CURRENT_USER_FID,
+      },
+    });
+  }, [dispatch]);
 
   const [webViewState, setWebViewState] =
     React.useState<FarcasterWebViewState>('closed');
@@ -38,9 +47,15 @@
   const onSuccess = React.useCallback(
     (newFID: string) => {
       setWebViewState('closed');
-      setFID(newFID);
+      dispatch({
+        type: setSyncedMetadataEntryActionType,
+        payload: {
+          name: syncedMetadataNames.CURRENT_USER_FID,
+          data: newFID,
+        },
+      });
     },
-    [setFID],
+    [dispatch],
   );
 
   const onPressConnectFarcaster = React.useCallback(() => {