import 'react-native-gesture-handler'; import React from 'react'; import { StatusBar } from 'react-native'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { SafeAreaProvider } from 'react-native-safe-area-context'; import { Provider } from 'react-redux'; import { store } from './src/app/store'; import { RootNavigator } from './src/navigation/RootNavigator'; import { ThemeProvider, useTheme } from './src/theme'; import { ToastHost } from './src/components/ToastHost'; import { ActivityTracker } from './src/components/ActivityTracker'; import { FeatureProvider, hydrateFeatures } from './src/features'; import { useAppBootstrap } from './src/hooks/useAppBootstrap'; const AppShell = () => { const theme = useTheme(); useAppBootstrap(); return ( {/* The app-wide default. Individual screens override it — a screen on the full-bleed navy wash forces light icons, because that wash is dark in both themes — but everything else sits on `colors.background`, and this follows the live theme so dark mode does not leave black icons on a near-black bar. */} ); }; export default function App() { return ( {/* Reads the persisted local overrides and the bank's server-driven config before the navigators mount — they decide at mount time which screens to register, so a flag arriving later would leave a disabled route reachable until the next launch. */} ); }