diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.js b/src/libs/Navigation/AppNavigator/AuthScreens.js
index 948bac85a5e2..3f4f2c5ee360 100644
--- a/src/libs/Navigation/AppNavigator/AuthScreens.js
+++ b/src/libs/Navigation/AppNavigator/AuthScreens.js
@@ -22,6 +22,7 @@ import {fetchCountryCodeByRequestIP} from '../../actions/GeoLocation';
import KeyboardShortcut from '../../KeyboardShortcut';
import Navigation from '../Navigation';
import * as User from '../../actions/User';
+import {setModalVisibility} from '../../actions/Modal';
import NameValuePair from '../../actions/NameValuePair';
import modalCardStyleInterpolator from './modalCardStyleInterpolator';
import createCustomModalStackNavigator from './createCustomModalStackNavigator';
@@ -42,6 +43,17 @@ import {
const RootStack = createCustomModalStackNavigator();
+// When modal screen gets focused, update modal visibility in Onyx
+// https://reactnavigation.org/docs/navigation-events/
+const modalScreenListeners = {
+ focus: () => {
+ setModalVisibility(true);
+ },
+ beforeRemove: () => {
+ setModalVisibility(false);
+ },
+};
+
const propTypes = {
network: PropTypes.shape({isOffline: PropTypes.bool}),
...windowDimensionsPropTypes,
@@ -147,36 +159,43 @@ class AuthScreens extends React.Component {
name="Settings"
options={modalScreenOptions}
component={SettingsModalStackNavigator}
+ listeners={modalScreenListeners}
/>
);