fix: revert splash screen overrides, remove redundant SafeAreaProvider

expo-router 56 already calls _internal_preventAutoHideAsync() internally.
Calling preventAutoHideAsync() at module level created a second user lock
that blocked the native splash indefinitely on Android, causing a crash.
SafeAreaProvider removed as expo-router's ExpoRoot already wraps with it.
Keep SplashScreen.hideAsync() to release the splash after SecureStore reads.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 11:26:24 +02:00
parent 86303e5c84
commit 72cfbf41f3
+18 -23
View File
@@ -2,13 +2,10 @@ import { useEffect } from "react";
import { Stack, router, SplashScreen } from "expo-router"; import { Stack, router, SplashScreen } from "expo-router";
import { StatusBar } from "expo-status-bar"; import { StatusBar } from "expo-status-bar";
import { GestureHandlerRootView } from "react-native-gesture-handler"; import { GestureHandlerRootView } from "react-native-gesture-handler";
import { SafeAreaProvider } from "react-native-safe-area-context";
import "../global.css"; import "../global.css";
import { Colors } from "@/constants/theme"; import { Colors } from "@/constants/theme";
import { useSettings } from "@/hooks/useSettings"; import { useSettings } from "@/hooks/useSettings";
SplashScreen.preventAutoHideAsync();
export default function RootLayout() { export default function RootLayout() {
const { settings, ready } = useSettings(); const { settings, ready } = useSettings();
@@ -25,25 +22,23 @@ export default function RootLayout() {
}, [ready, settings.onboardingDone]); }, [ready, settings.onboardingDone]);
return ( return (
<SafeAreaProvider> <GestureHandlerRootView style={{ flex: 1, backgroundColor: Colors.bg }}>
<GestureHandlerRootView style={{ flex: 1, backgroundColor: Colors.bg }}> <StatusBar style="light" />
<StatusBar style="light" /> <Stack
<Stack screenOptions={{
screenOptions={{ headerStyle: { backgroundColor: Colors.surface },
headerStyle: { backgroundColor: Colors.surface }, headerTintColor: Colors.text1,
headerTintColor: Colors.text1, headerTitleStyle: { color: Colors.text1 },
headerTitleStyle: { color: Colors.text1 }, contentStyle: { backgroundColor: Colors.bg },
contentStyle: { backgroundColor: Colors.bg }, animation: "slide_from_right",
animation: "slide_from_right", }}
}} >
> <Stack.Screen name="index" options={{ title: "SheetHappens" }} />
<Stack.Screen name="index" options={{ title: "SheetHappens" }} /> <Stack.Screen name="new" options={{ title: "New Incident", presentation: "modal" }} />
<Stack.Screen name="new" options={{ title: "New Incident", presentation: "modal" }} /> <Stack.Screen name="incident/[id]" options={{ title: "Incident" }} />
<Stack.Screen name="incident/[id]" options={{ title: "Incident" }} /> <Stack.Screen name="settings" options={{ title: "Settings" }} />
<Stack.Screen name="settings" options={{ title: "Settings" }} /> <Stack.Screen name="onboarding" options={{ headerShown: false }} />
<Stack.Screen name="onboarding" options={{ headerShown: false }} /> </Stack>
</Stack> </GestureHandlerRootView>
</GestureHandlerRootView>
</SafeAreaProvider>
); );
} }