diff --git a/native/avatars/edit-user-avatar-provider.react.js b/native/avatars/edit-user-avatar-provider.react.js
--- a/native/avatars/edit-user-avatar-provider.react.js
+++ b/native/avatars/edit-user-avatar-provider.react.js
@@ -1,7 +1,6 @@
 // @flow
 
 import * as React from 'react';
-import { Alert } from 'react-native';
 
 import {
   updateUserAvatar,
@@ -46,19 +45,12 @@
   updateUserAvatarActionTypes,
 );
 
-const displayFailureAlert = () =>
-  Alert.alert(
-    'Couldn’t save avatar',
-    'Please try again later',
-    [{ text: 'OK' }],
-    { cancelable: true },
-  );
-
 type Props = {
+  +displayFailureAlert: () => mixed,
   +children: React.Node,
 };
 function EditUserAvatarProvider(props: Props): React.Node {
-  const { children } = props;
+  const { displayFailureAlert, children } = props;
 
   const registrationModeRef =
     React.useRef<RegistrationMode>(registrationModeOff);
@@ -108,7 +100,12 @@
       dispatchActionPromise(updateUserAvatarActionTypes, promise);
       await promise;
     },
-    [uploadSelectedMedia, updateUserAvatarCall, dispatchActionPromise],
+    [
+      uploadSelectedMedia,
+      dispatchActionPromise,
+      updateUserAvatarCall,
+      displayFailureAlert,
+    ],
   );
 
   const selectFromGalleryAndUpdateUserAvatar = React.useCallback(async () => {
@@ -141,7 +138,7 @@
       dispatchActionPromise(updateUserAvatarActionTypes, promise);
       await promise;
     },
-    [updateUserAvatarCall, dispatchActionPromise],
+    [dispatchActionPromise, updateUserAvatarCall, displayFailureAlert],
   );
 
   const setRegistrationMode = React.useCallback((mode: RegistrationMode) => {
diff --git a/native/root.react.js b/native/root.react.js
--- a/native/root.react.js
+++ b/native/root.react.js
@@ -8,7 +8,7 @@
 import * as SplashScreen from 'expo-splash-screen';
 import invariant from 'invariant';
 import * as React from 'react';
-import { Platform, UIManager, StyleSheet } from 'react-native';
+import { Platform, UIManager, StyleSheet, Alert } from 'react-native';
 import { GestureHandlerRootView } from 'react-native-gesture-handler';
 import Orientation from 'react-native-orientation-locker';
 import {
@@ -72,6 +72,14 @@
 
 SplashScreen.preventAutoHideAsync().catch(console.log);
 
+const displayAvatarUpdateFailureAlert = () =>
+  Alert.alert(
+    'Couldn’t save avatar',
+    'Please try again later',
+    [{ text: 'OK' }],
+    { cancelable: true },
+  );
+
 function Root() {
   const navStateRef = React.useRef();
   const navDispatchRef = React.useRef();
@@ -264,7 +272,9 @@
                   <ActionSheetProvider>
                     <ENSCacheProvider provider={provider}>
                       <MediaCacheProvider persistence={filesystemMediaCache}>
-                        <EditUserAvatarProvider>
+                        <EditUserAvatarProvider
+                          displayFailureAlert={displayAvatarUpdateFailureAlert}
+                        >
                           <EditThreadAvatarProvider>
                             <MarkdownContextProvider>
                               <ChatContextProvider>