@@ -41,6 +41,7 @@ import {CurrentReportIDContextProvider} from './hooks/useCurrentReportID';
4141import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop' ;
4242import HybridAppHandler from './HybridAppHandler' ;
4343import OnyxUpdateManager from './libs/actions/OnyxUpdateManager' ;
44+ import './libs/HybridApp' ;
4445import { AttachmentModalContextProvider } from './pages/media/AttachmentModalScreen/AttachmentModalContext' ;
4546import './setup/backgroundTask' ;
4647import './setup/hybridApp' ;
@@ -69,47 +70,57 @@ function App() {
6970 < InitialURLContextProvider >
7071 < HybridAppHandler />
7172 < GestureHandlerRootView style = { fill } >
72- < ComposeProviders
73- components = { [
74- OnyxListItemProvider ,
75- ThemeProvider ,
76- ThemeStylesProvider ,
77- ThemeIllustrationsProvider ,
78- SafeAreaProvider ,
79- HTMLEngineProvider ,
80- PortalProvider ,
81- SafeArea ,
82- LocaleContextProvider ,
83- PopoverContextProvider ,
84- CurrentReportIDContextProvider ,
85- ScrollOffsetContextProvider ,
86- AttachmentModalContextProvider ,
87- PickerStateProvider ,
88- EnvironmentProvider ,
89- CustomStatusBarAndBackgroundContextProvider ,
90- ActiveElementRoleProvider ,
91- ActionSheetAwareScrollViewProvider ,
92- PlaybackContextProvider ,
93- FullScreenContextProvider ,
94- VolumeContextProvider ,
95- VideoPopoverMenuContextProvider ,
96- KeyboardProvider ,
97- KeyboardStateProvider ,
98- SearchRouterContextProvider ,
99- ProductTrainingContextProvider ,
100- InputBlurContextProvider ,
101- FullScreenBlockingViewContextProvider ,
102- FullScreenLoaderContextProvider ,
103- ] }
73+ { /* Initialize metrics early to ensure the UI renders even when NewDot is hidden.
74+ This is necessary for iOS HybridApp's SignInPage to appear correctly without the bootsplash.
75+ See: https://github.com/Expensify/App/pull/65178#issuecomment-3139026551
76+ */ }
77+ < SafeAreaProvider
78+ initialMetrics = { {
79+ insets : { top : 0 , right : 0 , bottom : 0 , left : 0 } ,
80+ frame : { x : 0 , y : 0 , width : 0 , height : 0 } ,
81+ } }
10482 >
105- < CustomStatusBarAndBackground />
106- < ErrorBoundary errorMessage = "NewExpensify crash caught by error boundary" >
107- < ColorSchemeWrapper >
108- < Expensify />
109- </ ColorSchemeWrapper >
110- </ ErrorBoundary >
111- < NavigationBar />
112- </ ComposeProviders >
83+ < ComposeProviders
84+ components = { [
85+ OnyxListItemProvider ,
86+ ThemeProvider ,
87+ ThemeStylesProvider ,
88+ ThemeIllustrationsProvider ,
89+ HTMLEngineProvider ,
90+ PortalProvider ,
91+ SafeArea ,
92+ LocaleContextProvider ,
93+ PopoverContextProvider ,
94+ CurrentReportIDContextProvider ,
95+ ScrollOffsetContextProvider ,
96+ AttachmentModalContextProvider ,
97+ PickerStateProvider ,
98+ EnvironmentProvider ,
99+ CustomStatusBarAndBackgroundContextProvider ,
100+ ActiveElementRoleProvider ,
101+ ActionSheetAwareScrollViewProvider ,
102+ PlaybackContextProvider ,
103+ FullScreenContextProvider ,
104+ VolumeContextProvider ,
105+ VideoPopoverMenuContextProvider ,
106+ KeyboardProvider ,
107+ KeyboardStateProvider ,
108+ SearchRouterContextProvider ,
109+ ProductTrainingContextProvider ,
110+ InputBlurContextProvider ,
111+ FullScreenBlockingViewContextProvider ,
112+ FullScreenLoaderContextProvider ,
113+ ] }
114+ >
115+ < CustomStatusBarAndBackground />
116+ < ErrorBoundary errorMessage = "NewExpensify crash caught by error boundary" >
117+ < ColorSchemeWrapper >
118+ < Expensify />
119+ </ ColorSchemeWrapper >
120+ </ ErrorBoundary >
121+ < NavigationBar />
122+ </ ComposeProviders >
123+ </ SafeAreaProvider >
113124 </ GestureHandlerRootView >
114125 </ InitialURLContextProvider >
115126 </ SplashScreenStateContextProvider >
0 commit comments