Tab bar does not respect KeyboardAvoidingView on iOS (Liquid glass) - Renders on top of it
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- ios, react-native
- Área
- mobile-dev
Línea de trabajo
Reproduce el problema en iOS usando la configuración proporcionada de KeyboardAvoidingView, createNativeBottomTabNavigator y la barra de pestañas liquid glass. Compara el comportamiento con y sin la solución alternativa del margen de tabBarHeight y, después, sigue el diseño de bottom-tabs y su interacción con la evitación del teclado. Se considera terminado cuando el contenido permanece visible por encima de la barra de pestañas translúcida sin requerir esa solución alternativa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Before submitting a new issue
- I tested using the latest version of the library, as the bug might be already fixed.
- I tested using a supported version of react native.
- I checked for possible duplicate issues, with possible answers.
Bug summary
When using KeyboardAvoidingView with react-native-bottom-tabs on iOS with the new "liquid glass" tab bar style, the keyboard-avoiding content is rendered underneath the tab bar. The KeyboardAvoidingView's padding/height calculation doesn't account for the translucent tab bar height, causing the bottom portion of the content to be obscured.
Current workaround:
const tabBarHeight = useBottomTabBarHeight();
<KeyboardAvoidingView
behavior="padding"
style={{ marginBottom: Platform.OS === "ios" ? tabBarHeight : 0 }}>
{/* content */}
</KeyboardAvoidingView>
Library version
1.1.0
Environment info
System:
OS: macOS 15.7.1
CPU: (10) arm64 Apple M4
Memory: 144.44 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 25.2.1
Yarn: Not Found
npm:
version: 11.6.2
Watchman:
version: 2025.10.27.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.2
- iOS 26.2
- macOS 26.2
- tvOS 26.2
- visionOS 26.2
- watchOS 26.2
Android SDK: Not Found
IDEs:
Android Studio: 2025.2 AI-252.25557.131.2521.14344949
Xcode:
version: 26.2/17C52
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.17
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.1.2
wanted: latest
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.81.5
wanted: 0.81.5
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Steps to reproduce
- Set up a screen with bottom tabs using react-native-bottom-tabs
- Wrap content in a KeyboardAvoidingView with behavior="padding"
- Use a view inside it with 100% height or flex 1.
- The tab bar renders on top of it.
Reproducible sample code
import React from 'react';
import {
KeyboardAvoidingView,
Platform,
TextInput,
View,
StyleSheet,
Text,
} from 'react-native';
import { createNativeBottomTabNavigator } from 'react-native-bottom-tabs';
import { NavigationContainer } from '@react-navigation/native';
import { useBottomTabBarHeight } from 'react-native-bottom-tabs';
const Tab = createNativeBottomTabNavigator();
function HomeScreen() {
const tabBarHeight = useBottomTabBarHeight();
return (
<KeyboardAvoidingView
behavior="padding"
style={styles.container}
// Workaround: Uncomment the line below to fix the issue
// style={{ flex: 1, marginBottom: Platform.OS === 'ios' ? tabBarHeight : 0 }}
>
<View style={styles.content}>
<Text style={styles.title}>KeyboardAvoidingView + Bottom Tabs Bug</Text>
<View style={styles.spacer} />
<TextInput
style={styles.input}
placeholder="Tap here to open keyboard"
placeholderTextColor="#999"
/>
</View>
</KeyboardAvoidingView>
);
}
function SettingsScreen() {
return (
<View style={styles.container}>
<Text>Settings</Text>
</View>
);
}
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen
name="Home"
component={HomeScreen}
options={{
tabBarIcon: () => require('./assets/home-icon.png'),
}}
/>
<Tab.Screen
name="Settings"
component={SettingsScreen}
options={{
tabBarIcon: () => require('./assets/settings-icon.png'),
}}
/>
</Tab.Navigator>
</NavigationContainer>
);
}
const styles = StyleSheet.create({
container: {
backgroundColor: '#fff',
},
content: {
flex: 1,
padding: 20,
justifyContent: 'flex-end',
},
title: {
fontSize: 20,
fontWeight: 'bold',
marginBottom: 10,
},
spacer: {
flex: 1,
},
input: {
borderWidth: 1,
borderColor: '#ccc',
borderRadius: 8,
padding: 15,
fontSize: 16,
},
});
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.5k
- Forks
- 108
- Merge medio
- 22 h 32 min
- PR fusionados (30 d)
- 8
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/react-native-bottom-tabs
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
callstack/react-native-bottom-tabs#593 ·
Los mantenedores suelen responder en 1 día
-
[iOS] Fabric: SIGABRT on tab press when tab key contains non-ASCII characters (kCFStringEncodingUTF8 passed to -cStringUsingEncoding:)Posiblemente ocupada @thiagobrez la tomó hace 48 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
callstack/react-native-bottom-tabs#560 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
callstack/react-native-bottom-tabs#596 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
callstack/react-native-bottom-tabs#592 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
callstack/react-native-bottom-tabs#591 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/react-native-bottom-tabs
Issues similares
-
Documentation Link TypoAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
Zettlr/Zettlr#6610 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Feil lovtekst i bekreftelsen når leder melder unntak fra oppfølgingsplanPosiblemente ocupada @AudunSorheim la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
navikt/syfo-oppfolgingsplan-frontend#1110 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
db-ux-design-system/core-web#8461 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Cannot run an integration on windows when power shell is selected as the default profile terminalAbiertoPriority/Blocker Type/Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
wso2/product-integrator#2767 ·
Los mantenedores suelen responder en 1 día