React Native WebView is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be removed from core).
Main branch is where we keep the changes we've done. Deliberately behind the "Upstream" (that can be synced with upstream, hence the name), so that we can maintain a expo-compatible version of the library. Currently, v11.26.1.
Current extra features are:
- autoShowKeyboard - (defaults to true) an option to hide keyboard on text selection
- hideSelectionContextMenu - (defaults to false) to hide the context menu on text selection
We use yalc to include it in the mono-repo
This project is maintained for free by these people using both their free time and their company work time.
- Thibault Malbranche (Twitter @titozzz) from Brigad
- Jamon Holmgren (Twitter @jamonholmgren) from Infinite Red
- Alexander Sklar (Twitter @alexsklar) from React Native Windows @ Microsoft
- Chiara Mooney from React Native Windows @ Microsoft
- iOS
- Android
- macOS
- Windows
- Expo (Android, iOS)
Read our Getting Started Guide. If any step seems unclear, please create a detailed issue.
This project follows semantic versioning. We do not hesitate to release breaking changes but they will be in a major version.
Breaking History:
- 11.0.0 - Android setSupportMultipleWindows.
- 10.0.0 - Android Gradle plugin is only required when opening the project stand-alone
- 9.0.0 - props updates to injectedJavaScript are no longer immutable.
- 8.0.0 - onNavigationStateChange now triggers with hash url changes
- 7.0.1 - Removed UIWebView
- 6.0.2 - Update to AndroidX. Make sure to enable it in your project's
android/gradle.properties. See Getting Started Guide. - 5.0.1 - Refactored the old postMessage implementation for communication from webview to native.
- 4.0.0 - Added cache (enabled by default).
- 3.0.0 - WKWebview: Add shared process pool so cookies and localStorage are shared across webviews in iOS (enabled by default).
- 2.0.0 - First release this is a replica of the core webview component
Upcoming:
- this.webView.postMessage() removal (never documented and less flexible than injectJavascript) -> how to migrate
- Kotlin rewrite
- Maybe Swift rewrite
Import the WebView component from react-native-webview and use it like so:
import React, { Component } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { WebView } from 'react-native-webview';
// ...
class MyWebComponent extends Component {
render() {
return <WebView source={{ uri: 'https://reactnative.dev/' }} />;
}
}For more, read the API Reference and Guide. If you're interested in contributing, check out the Contributing Guide.
- If you're getting
Invariant Violation: Native component for "RNCWebView does not exist"it likely means you forgot to runreact-native linkor there was some error with the linking process - If you encounter a build error during the task
:app:mergeDexRelease, you need to enable multidex support inandroid/app/build.gradleas discussed in this issue
See Contributing.md
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT
This readme is available in: