![Meet Socket at BlackHat and DEF CON in Las Vegas](https://cdn.sanity.io/images/cgdhsj6q/production/4a3876139ffd3878bb3e7800a14cf4044245dca7-1080x834.jpg?w=400&fit=max&auto=format)
Security News
Meet Socket at BlackHat and DEF CON in Las Vegas
Come meet the Socket team at BlackHat and DEF CON! We're sponsoring some fun networking events and we would love to see you there.
react-native-webview
Advanced tools
Package description
The react-native-webview package is a powerful tool for embedding web content into a React Native application. It allows developers to render web pages, handle navigation, and interact with web content using JavaScript. This package is highly customizable and supports various features such as injecting JavaScript, handling navigation events, and more.
Basic WebView
This feature allows you to embed a basic web page within your React Native application. The WebView component takes a source prop that specifies the URL of the web page to be loaded.
import React from 'react';
import { WebView } from 'react-native-webview';
const MyWebView = () => (
<WebView
source={{ uri: 'https://www.example.com' }}
style={{ marginTop: 20 }}
/>
);
export default MyWebView;
Injecting JavaScript
This feature allows you to inject JavaScript into the web page being loaded. The injectedJavaScript prop takes a string of JavaScript code that will be executed once the page has loaded.
import React from 'react';
import { WebView } from 'react-native-webview';
const MyWebView = () => (
<WebView
source={{ uri: 'https://www.example.com' }}
injectedJavaScript={"document.body.style.backgroundColor = 'red';"}
style={{ marginTop: 20 }}
/>
);
export default MyWebView;
Handling Navigation Events
This feature allows you to handle navigation events within the WebView. The onNavigationStateChange prop takes a function that will be called whenever the navigation state changes, providing details about the navigation event.
import React from 'react';
import { WebView } from 'react-native-webview';
const MyWebView = () => (
<WebView
source={{ uri: 'https://www.example.com' }}
onNavigationStateChange={(navState) => {
console.log('Navigation state changed:', navState);
}}
style={{ marginTop: 20 }}
/>
);
export default MyWebView;
The react-native-webkit package provides a WebKit-based WebView for React Native applications. It offers similar functionalities to react-native-webview, such as rendering web content and handling navigation events. However, it is less popular and has fewer community contributions compared to react-native-webview.
The react-native-inappbrowser-reborn package allows you to open web content in an in-app browser. It provides a more native feel compared to a WebView and supports features like custom animations and toolbar customization. However, it is not as flexible as react-native-webview for embedding web content directly within your application.
Readme
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).
We just swapped out the React Native WebView in our app with the version from React Native Community. The swap took less than a day, required almost no code modifications, and is faster and CSS works better. Props to everyone in the community (including those at Infinite Red) that helped get that component split out.
Garrett McCullough, mobile engineer at Virta Health
Note: React Native WebView is not currently supported by Expo unless you "eject".
If you need the exact same WebView as the one from react-native, please use version 2.0.0. Future versions will follow semantic versioning.
$ yarn add react-native-webview
$ react-native link react-native-webview
Read our Getting Started Guide for more.
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://infinite.red/react-native" }}
style={{ marginTop: 20 }}
onLoadProgress={e => console.log(e.nativeEvent.progress)}
/>
);
}
}
For more, read the API Reference and Guide. If you're interested in contributing, check out the Contributing Guide.
Simply install React Native WebView and then use it in place of the core WebView. Their APIs are currently identical, except that this package defaults useWebKit={true}
unlike the built-in WebView.
Invariant Violation: Native component for "RNCWKWebView does not exist"
it likely means you forgot to run react-native link
or there was some error with the linking processuseWebKit={false}
to use UIWebViewyarn test:ios:flow
for iOSyarn test:android:flow
for Android.flowconfig
for it. If your platform is example
, copy the main flowconfig and rename it to .flowconfig.example
. Then edit the config to ignore other platforms, and add .*/*[.]example.js
to the ignore lists of the other platforms. Then add an entry to package.json
like this:
"test:example:flow": "flow check --flowconfig-name .flowconfig.example"
flow check
will not pass against 0.56.Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT
FAQs
React Native WebView component for iOS, Android, macOS, and Windows
The npm package react-native-webview receives a total of 735,745 weekly downloads. As such, react-native-webview popularity was classified as popular.
We found that react-native-webview demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Come meet the Socket team at BlackHat and DEF CON! We're sponsoring some fun networking events and we would love to see you there.
Security News
Learn how Socket's 'Non-Existent Author' alert helps safeguard your dependencies by identifying npm packages published by deleted accounts. This is one of the fastest ways to determine if a package may be abandoned.
Security News
In July, the Python Software Foundation mounted a quick response to address a leaked GitHub token, elected new board members, and added more members to the team supporting PSF and PyPI infrastructure.