2018-08-15 19:23:26 -07:00
# React Native WebView - a Modern, Cross-Platform WebView for React Native
2019-01-22 11:15:22 +01:00
[](https://github.com/react-native-community/react-native-webview) [](http://makeapullrequest.com) [](#contributors ) [](https://snyk.io/test/github/react-native-community/react-native-webview)
2018-08-12 21:52:47 -07:00
2018-09-08 10:42:02 -07:00
**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 ](https://github.com/react-native-community/discussions-and-proposals/pull/3 )).
2018-08-12 21:52:47 -07:00
2019-01-02 01:07:25 -08:00
> 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_
2018-08-12 21:52:47 -07:00
## Platforms Supported
2018-10-13 01:03:00 +02:00
- [x] iOS (both UIWebView and WKWebView)
- [x] Android
- [ ] Windows 10 (coming soon)
2018-08-12 21:52:47 -07:00
2018-11-19 02:28:55 -08:00
_Note: React Native WebView is not currently supported by Expo unless you "eject"._
2018-10-12 16:43:17 -07:00
## Versioning
2018-10-13 01:03:00 +02:00
2018-10-12 16:43:17 -07:00
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 ](https://semver.org/ ).
2018-10-13 01:03:00 +02:00
## Getting Started
2018-09-08 17:11:32 -07:00
2018-08-12 21:52:47 -07:00
```
2018-10-13 01:03:00 +02:00
$ yarn add react-native-webview
2018-08-15 19:23:26 -07:00
$ react-native link react-native-webview
2018-08-12 21:52:47 -07:00
```
2018-09-19 19:27:09 -07:00
Read our [Getting Started Guide ](./docs/Getting-Started.md ) for more.
2018-08-12 21:52:47 -07:00
## Usage
2018-08-15 19:23:26 -07:00
Import the `WebView` component from `react-native-webview` and use it like so:
2018-08-12 21:52:47 -07:00
```jsx
2018-11-19 02:28:55 -08:00
import React, { Component } from "react";
import { StyleSheet, Text, View } from "react-native";
import { WebView } from "react-native-webview";
2018-08-12 21:52:47 -07:00
// ...
class MyWebComponent extends Component {
2018-10-13 01:03:00 +02:00
render() {
2018-08-12 21:52:47 -07:00
return (
< WebView
2018-11-19 02:28:55 -08:00
source={{ uri: "https://infinite.red/react-native" }}
2018-10-13 01:03:00 +02:00
style={{ marginTop: 20 }}
2018-11-19 02:28:55 -08:00
onLoadProgress={e => console.log(e.nativeEvent.progress)}
2018-08-12 21:52:47 -07:00
/>
2018-10-13 01:03:00 +02:00
);
2018-08-12 21:52:47 -07:00
}
}
```
2018-11-19 02:32:22 -08:00
For more, read the [API Reference ](./docs/Reference.md ) and [Guide ](./docs/Guide.md ). If you're interested in contributing, check out the [Contributing Guide ](./docs/Contributing.md ).
2018-08-12 21:52:47 -07:00
2018-08-15 19:23:26 -07:00
## Migrate from React Native core WebView to React Native WebView
2018-08-12 21:52:47 -07:00
2018-09-09 16:15:00 -07:00
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.
2018-08-12 21:52:47 -07:00
2018-11-19 02:28:55 -08:00
## Troubleshooting
- If you're getting `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 process
2018-09-08 10:42:02 -07:00
### Contributor Notes
2018-10-13 01:03:00 +02:00
- I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
- UIWebView is not tested fully and you will encounter some yellow warning boxes. Since it is deprecated, we don't intend to put a lot of time into supporting it, but feel free to submit PRs if you have a special use case. Note that you will need to specify `useWebKit={false}` to use UIWebView
- After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
2018-10-17 17:58:32 +02:00
- `yarn test:ios:flow` for iOS
- `yarn test:android:flow` for Android
2018-10-13 01:03:00 +02:00
- If you want to add another React Native platform to this repository, you will need to create another `.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:
2018-10-17 17:58:32 +02:00
- `"test:example:flow": "flow check --flowconfig-name .flowconfig.example"`
2018-10-13 01:03:00 +02:00
- Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
2018-09-08 10:42:02 -07:00
2018-08-12 21:52:47 -07:00
## Maintainers
2018-10-13 01:03:00 +02:00
- [Jamon Holmgren ](https://github.com/jamonholmgren ) ([Twitter @jamonholmgren ](https://twitter.com/jamonholmgren )) from [Infinite Red ](https://infinite.red/react-native )
- [Thibault Malbranche ](https://github.com/Titozzz ) ([Twitter @titozzz ](https://twitter.com/titozzz )) from [Brigad ](https://brigad.co/about )
2018-11-19 02:32:22 -08:00
- [Empyrical ](https://github.com/empyrical ) ([Twitter @empyrical ](https://twitter.com/empyrical ))
2018-08-12 21:52:47 -07:00
2019-01-18 17:48:06 +01:00
## Contributors
2019-01-30 10:52:44 +02:00
Thanks goes to these wonderful people ([emoji key ](https://github.com/all-contributors/all-contributors#emoji-key- )):
2019-01-18 17:48:06 +01:00
<!-- ALL - CONTRIBUTORS - LIST:START - Do not remove or modify this section -->
<!-- prettier - ignore -->
2019-01-22 11:15:22 +01:00
| [<img src="https://avatars1.githubusercontent.com/u/6181446?v=4" width="100px;" alt="Thibault Malbranche"/><br /><sub><b>Thibault Malbranche</b></sub> ](https://twitter.com/titozzz )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=titozzz "Code" ) [🤔 ](#ideas-titozzz "Ideas, Planning, & Feedback" ) [👀 ](#review-titozzz "Reviewed Pull Requests" ) [📖 ](https://github.com/react-native-community/react-native-webview/commits?author=titozzz "Documentation" ) [🚧 ](#maintenance-titozzz "Maintenance" ) [⚠️ ](https://github.com/react-native-community/react-native-webview/commits?author=titozzz "Tests" ) [🚇 ](#infra-titozzz "Infrastructure (Hosting, Build-Tools, etc )") [💬 ](#question-titozzz "Answering Questions" ) | [<img src="https://avatars3.githubusercontent.com/u/1479215?v=4" width="100px;" alt="Jamon Holmgren"/><br /><sub><b>Jamon Holmgren</b></sub> ](https://jamonholmgren.com )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=jamonholmgren "Code" ) [🤔 ](#ideas-jamonholmgren "Ideas, Planning, & Feedback" ) [👀 ](#review-jamonholmgren "Reviewed Pull Requests" ) [📖 ](https://github.com/react-native-community/react-native-webview/commits?author=jamonholmgren "Documentation" ) [🚧 ](#maintenance-jamonholmgren "Maintenance" ) [⚠️ ](https://github.com/react-native-community/react-native-webview/commits?author=jamonholmgren "Tests" ) [💡 ](#example-jamonholmgren "Examples" ) [💬 ](#question-jamonholmgren "Answering Questions" ) | [<img src="https://avatars1.githubusercontent.com/u/2570562?v=4" width="100px;" alt="Andrei Pfeiffer"/><br /><sub><b>Andrei Pfeiffer</b></sub> ](https://github.com/andreipfeiffer )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=andreipfeiffer "Code" ) [👀 ](#review-andreipfeiffer "Reviewed Pull Requests" ) [🤔 ](#ideas-andreipfeiffer "Ideas, Planning, & Feedback" ) | [<img src="https://avatars0.githubusercontent.com/u/5347038?v=4" width="100px;" alt="Michael Diarmid"/><br /><sub><b>Michael Diarmid</b></sub> ](https://twitter.com/mikediarmid )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=Salakar "Code" ) [👀 ](#review-Salakar "Reviewed Pull Requests" ) [🤔 ](#ideas-Salakar "Ideas, Planning, & Feedback" ) [🔧 ](#tool-Salakar "Tools" ) | [<img src="https://avatars3.githubusercontent.com/u/932981?v=4" width="100px;" alt="Scott Mathson"/><br /><sub><b>Scott Mathson</b></sub> ](http://smathson.github.io )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=smathson "Code" ) [📖 ](https://github.com/react-native-community/react-native-webview/commits?author=smathson "Documentation" ) | [<img src="https://avatars0.githubusercontent.com/u/8221990?v=4" width="100px;" alt="Margaret"/><br /><sub><b>Margaret</b></sub> ](https://github.com/YangXiaomei )< br /> [💻 ](https://github.com/react-native-community/react-native-webview/commits?author=YangXiaomei "Code" ) [📖 ](https://github.com/react-native-community/react-native-webview/commits?author=YangXiaomei "Documentation" ) |
| :---: | :---: | :---: | :---: | :---: | :---: |
2019-01-18 17:48:06 +01:00
<!-- ALL - CONTRIBUTORS - LIST:END -->
This project follows the [all-contributors ](https://github.com/all-contributors/all-contributors ) specification. Contributions of any kind welcome!
2018-08-12 21:52:47 -07:00
## License
MIT