Environment
- expo-router: 6.0.14
- react-native: 0.81.5
- react: 19.1.0
- @react-navigation/bottom-tabs: 7.4.0
- @react-navigation/native: 7.1.8
- expo: 54.0.12
Tab Layout Configuration
// app/(tabs)/_layout.tsx
<Tabs
tabBar={(props) => <CustomTabBar {...props} />}
screenOptions={{
headerShown: false,
animation: "shift",
lazy: true,
freezeOnBlur: true,
}}
>
<Tabs.Screen name="index" options={{ title: "Invest", lazy: true }} />
<Tabs.Screen name="mini-apps" options={{ title: "Mini Apps", freezeOnBlur: true, lazy: true }} />
<Tabs.Screen name="rewards" options={{ title: "Rewards", lazy: false, freezeOnBlur: false }} />
<Tabs.Screen name="card" options={{ title: "Card", lazy: false, freezeOnBlur: false }} />
</Tabs>
Example Tab Component
// app/(tabs)/card.tsx
const CardScreen = memo(() => {
const router = useRouter();
const theme = useComponentsTheme();
const { t } = useTranslation();
return (
<ScrollView contentContainerStyle={{ flex: 1, backgroundColor: theme.cardBackground }}>
<ConfigHeader />
<ScreenTitle title={t("card_title")} subtitle={t("card_subtitle")} />
{/* ... rest of content */}
</ScrollView>
);
});
export default CardScreen;
What I've Tried
- Different
lazyandfreezeOnBlurconfigurations - Using
memo()on screen components
The blank screens appear randomly, not consistently on specific tabs.
