[Android] WebView pullToRefreshEnabled not working (works on iOS)
Bug description: When using react-native-webview with pullToRefreshEnabled={true}, the pull-to-refresh gesture works as expected on iOS, but does not work at all on Android. No refresh is triggered when swiping down.
This means Android developers need to implement workarounds (such as wrapping the WebView in a ScrollView with RefreshControl), but this introduces side effects like unwanted refresh triggers when scrolling within long web content.
To Reproduce: Minimal example: or try this snack in Expo Go
import React from 'react';
import { SafeAreaView, StyleSheet } from 'react-native';
import { WebView } from 'react-native-webview';
export default function App() {
return (
<SafeAreaView style={styles.safeArea}>
<WebView
source={{ uri: 'https://expo.dev' }}
style={styles.webView}
pullToRefreshEnabled={true}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
safeArea: { flex: 1 },
webView: { flex: 1 }
});Steps: 1. Run this code on iOS — pull-to-refresh works as expected. 2. Run the same code on Android — pull-to-refresh does nothing.
Expected behavior: On Android, pullToRefreshEnabled={true} should enable the same pull-to-refresh gesture behavior as on iOS, without requiring any additional wrappers or hacks.
Screenshots/Videos:
✅ iOS
https://github.com/user-attachments/assets/8a85a620-b63c-4cbe-ac6e-2c9ea8877ba8
❌ Android
https://github.com/user-attachments/assets/d545e0b7-89b0-4ee0-a7dc-4892218f98ca
Environment:
• OS: Android
• OS version: (e.g., Android 13)
• react-native version: 0.79.5
• react-native-webview version: 13.13.5
Additional context / Workaround attempts: Someone suggested wrapping the WebView in a ScrollView with a RefreshControl:
<ScrollView
contentContainerStyle={{ flex: 1 }}
refreshControl={
<RefreshControl
refreshing={refreshing}
onRefresh={onRefresh}
/>
}
>
<WebView
ref={webviewRef}
source={{ uri: BASE_URL }}
onLoadEnd={() => setRefreshing(false)}
/>
</ScrollView>While this works when web content is long, it causes unwanted refresh triggers when the user scrolls up and down to the top, which is not the desired behavior.
Request: Please align the Android pullToRefreshEnabled implementation with iOS so it works out of the box without extra wrappers or custom gesture handling.
Source: react-native-webview/react-native-webview