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
@@ -29,6 +29,7 @@
   useNativeSetUserAvatar,
   useUploadSelectedMedia,
 } from '../../avatars/avatar-hooks.js';
+import { commCoreModule } from '../../native-modules.js';
 import { useSelector } from '../../redux/redux-utils.js';
 import { nativeLogInExtraInfoSelector } from '../../selectors/account-selectors.js';
 import {
@@ -58,6 +59,7 @@
   | { +step: 'inactive' }
   | {
       +step: 'waiting_for_registration_call',
+      +clearCachedSelections: () => void,
       +avatarData: ?AvatarData,
       +resolve: () => void,
       +reject: Error => void,
@@ -199,8 +201,14 @@
             if (currentStep.step !== 'inactive') {
               return;
             }
-            const { accountSelection, avatarData, keyserverURL, farcasterID } =
-              input;
+            const {
+              accountSelection,
+              avatarData,
+              keyserverURL,
+              farcasterID,
+              siweBackupSecrets,
+              clearCachedSelections,
+            } = input;
             if (
               accountSelection.accountType === 'username' &&
               !usingCommServicesAccessToken
@@ -255,9 +263,13 @@
                 },
               });
             }
+            if (siweBackupSecrets) {
+              await commCoreModule.setSIWEBackupSecrets(siweBackupSecrets);
+            }
             setCurrentStep({
               step: 'waiting_for_registration_call',
               avatarData,
+              clearCachedSelections,
               resolve,
               reject,
             });
@@ -295,7 +307,7 @@
       return;
     }
     avatarBeingSetRef.current = true;
-    const { avatarData, resolve } = currentStep;
+    const { avatarData, resolve, clearCachedSelections } = currentStep;
     void (async () => {
       try {
         if (!avatarData) {
@@ -319,6 +331,7 @@
             dataLoaded: true,
           },
         });
+        clearCachedSelections();
         setCurrentStep(inactiveStep);
         avatarBeingSetRef.current = false;
         resolve();
diff --git a/native/account/registration/registration-terms.react.js b/native/account/registration/registration-terms.react.js
--- a/native/account/registration/registration-terms.react.js
+++ b/native/account/registration/registration-terms.react.js
@@ -4,6 +4,8 @@
 import * as React from 'react';
 import { Text, View, Image, Linking } from 'react-native';
 
+import type { SIWEBackupSecrets } from 'lib/types/siwe-types.js';
+
 import RegistrationButtonContainer from './registration-button-container.react.js';
 import RegistrationButton from './registration-button.react.js';
 import RegistrationContainer from './registration-container.react.js';
@@ -26,6 +28,7 @@
     +farcasterID: ?string,
     +accountSelection: AccountSelection,
     +avatarData: ?AvatarData,
+    +siweBackupSecrets?: ?SIWEBackupSecrets,
   },
 };
 
@@ -44,20 +47,25 @@
 function RegistrationTerms(props: Props): React.Node {
   const registrationContext = React.useContext(RegistrationContext);
   invariant(registrationContext, 'registrationContext should be set');
-  const { register } = registrationContext;
+  const { register, setCachedSelections } = registrationContext;
 
   const [registrationInProgress, setRegistrationInProgress] =
     React.useState(false);
 
   const { userSelections } = props.route.params;
+
+  const clearCachedSelections = React.useCallback(() => {
+    setCachedSelections({});
+  }, [setCachedSelections]);
+
   const onProceed = React.useCallback(async () => {
     setRegistrationInProgress(true);
     try {
-      await register(userSelections);
+      await register({ ...userSelections, clearCachedSelections });
     } finally {
       setRegistrationInProgress(false);
     }
-  }, [register, userSelections]);
+  }, [register, userSelections, clearCachedSelections]);
 
   const styles = useStyles(unboundStyles);
 
diff --git a/native/account/registration/registration-types.js b/native/account/registration/registration-types.js
--- a/native/account/registration/registration-types.js
+++ b/native/account/registration/registration-types.js
@@ -43,6 +43,8 @@
   +farcasterID: ?string,
   +accountSelection: AccountSelection,
   +avatarData: ?AvatarData,
+  +siweBackupSecrets?: ?SIWEBackupSecrets,
+  +clearCachedSelections: () => void,
 };
 
 export type CachedUserSelections = {
diff --git a/native/account/registration/siwe-backup-message-creation.react.js b/native/account/registration/siwe-backup-message-creation.react.js
--- a/native/account/registration/siwe-backup-message-creation.react.js
+++ b/native/account/registration/siwe-backup-message-creation.react.js
@@ -44,6 +44,7 @@
 function CreateSIWEBackupMessage(props: Props): React.Node {
   const { navigate } = props.navigation;
   const { params } = props.route;
+  const { userSelections } = params;
 
   const styles = useStyles(unboundStyles);
 
@@ -76,24 +77,36 @@
   const onSuccessfulWalletSignature = React.useCallback(
     (result: SIWEResult) => {
       const { message, signature } = result;
+      const newUserSelections = {
+        ...userSelections,
+        siweBackupSecrets: { message, signature },
+      };
       setCachedSelections(oldUserSelections => ({
         ...oldUserSelections,
         siweBackupSecrets: { message, signature },
       }));
       navigate<'RegistrationTerms'>({
         name: RegistrationTermsRouteName,
-        params,
+        params: { userSelections: newUserSelections },
       });
     },
-    [navigate, params, setCachedSelections],
+    [navigate, setCachedSelections, userSelections],
   );
 
+  const { siweBackupSecrets } = cachedSelections;
   const onExistingWalletSignature = React.useCallback(() => {
+    const registrationTermsParams = {
+      userSelections: {
+        ...userSelections,
+        siweBackupSecrets,
+      },
+    };
+
     navigate<'RegistrationTerms'>({
       name: RegistrationTermsRouteName,
-      params,
+      params: registrationTermsParams,
     });
-  }, [params, navigate]);
+  }, [navigate, siweBackupSecrets, userSelections]);
 
   let siwePanel;
   if (panelState !== 'closed') {
@@ -109,8 +122,6 @@
     );
   }
 
-  const { siweBackupSecrets } = cachedSelections;
-
   const newSignatureButtonText = siweBackupSecrets
     ? 'Encrypt with new signature'
     : 'Encrypt with Ethereum signature';