Expo module that returns native bottom tab bar heights in pixels on iOS and Android, designed for use with expo-router native tabs.
npm install @yemirhan/bottom-tab-bar-height
# or
yarn add @yemirhan/bottom-tab-bar-heightThen run:
npx expo prebuild --cleaninterface BottomTabBarHeightResult {
tabBarHeight: number; // Tab bar only (49pt iOS / 56dp Android)
bottomInset: number; // Safe area (iOS) / system nav bar (Android)
totalHeight: number; // Combined height
hasTabBar: boolean; // Whether tab bar was found
}Synchronous function that returns the current bottom tab bar height measurements.
import { getBottomTabBarHeight } from '@yemirhan/bottom-tab-bar-height';
const { tabBarHeight, bottomInset, totalHeight, hasTabBar } = getBottomTabBarHeight();React hook that returns the current heights and automatically updates on orientation changes.
import { useBottomTabBarHeight } from '@yemirhan/bottom-tab-bar-height';
function MyScreen() {
const { tabBarHeight, bottomInset, totalHeight, hasTabBar } = useBottomTabBarHeight();
return (
<ScrollView contentContainerStyle={{ paddingBottom: totalHeight }}>
{/* Content */}
</ScrollView>
);
}Convenience hook that returns only the total height (tab bar + bottom inset).
import { useBottomTabBarTotalHeight } from '@yemirhan/bottom-tab-bar-height';
function MyScreen() {
const totalHeight = useBottomTabBarTotalHeight();
return (
<View style={{ paddingBottom: totalHeight }}>
{/* Content */}
</View>
);
}Static constants captured at module load time. Useful when you need values outside of React components.
import { BottomTabBarHeightConstants } from '@yemirhan/bottom-tab-bar-height';
console.log(BottomTabBarHeightConstants.totalHeight);- Finds the
UITabBarControllerin the view hierarchy - Returns actual
tabBar.bounds.heightif found - Falls back to standard iOS tab bar height (49pt)
bottomInsetis the safe area bottom inset
- Searches for
BottomNavigationViewin the view hierarchy - Returns actual height if found
- Falls back to standard Material Design height (56dp)
bottomInsetis the system navigation bar height
This module is designed to work with expo-router's native tabs:
import { useBottomTabBarHeight } from '@yemirhan/bottom-tab-bar-height';
function TabScreen() {
const { totalHeight } = useBottomTabBarHeight();
return (
<FlatList
data={items}
contentContainerStyle={{ paddingBottom: totalHeight }}
renderItem={({ item }) => <ItemComponent item={item} />}
/>
);
}MIT