This document lays out the current public properties and methods for the React Native WebView.
> **Security Warning:** Currently, `onMessage` and `postMessage` do not allow specifying an origin. This can lead to cross-site scripting attacks if an unexpected document is loaded within a `WebView` instance. Please refer to the MDN documentation for [`Window.postMessage()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) for more details on the security implications of this.
Loads static HTML or a URI (with optional headers) in the WebView. Note that static HTML will require setting [`originWhitelist`](Reference.md#originwhitelist) to `["*"]`.
The object passed to `source` can have either of the following shapes:
-`uri` (string) - The URI to load in the `WebView`. Can be a local or remote file.
-`method` (string) - The HTTP Method to use. Defaults to GET if not specified. On Android, the only supported methods are GET and POST.
-`headers` (object) - Additional HTTP headers to send with the request. On Android, this can only be used with GET requests.
-`body` (string) - The HTTP body to send with the request. This must be a valid UTF-8 string, and will be sent exactly as specified, with no additional encoding (e.g. URL-escaping or base64) applied. On Android, this can only be used with POST requests.
A function that is invoked when the webview calls `window.postMessage`. Setting this property will inject a `postMessage` global into your webview, but will still call pre-existing values of `postMessage`.
`window.postMessage` accepts one argument, `data`, which will be available on the event object, `event.nativeEvent.data`. `data` must be a string.
| Type | Required |
| -------- | -------- |
| function | No |
---
### `onNavigationStateChange`
Function that is invoked when the `WebView` loading starts or ends.
| Type | Required |
| -------- | -------- |
| function | No |
---
### `originWhitelist`
List of origin strings to allow being navigated to. The strings allow wildcards and get matched against _just_ the origin (not the full URL). If the user taps to navigate to a new page but the new page is not in this whitelist, the URL will be handled by the OS. The default whitelisted origins are "http://*" and "https://*".
| Type | Required |
| ---------------- | -------- |
| array of strings | No |
---
### `renderError`
Function that returns a view to show if there's an error.
| Type | Required |
| -------- | -------- |
| function | No |
---
### `renderLoading`
Function that returns a loading indicator. The startInLoadingState prop must be set to true in order to use this prop.
| Type | Required |
| -------- | -------- |
| function | No |
---
### `scalesPageToFit`
Boolean that controls whether the web content is scaled to fit the view and enables the user to change the scale. The default value is `true`.
On iOS, when [`useWebKit=true`](Reference.md#usewebkit), this prop will not work.
| Type | Required |
| ---- | -------- |
| bool | No |
---
### `onShouldStartLoadWithRequest`
Function that allows custom handling of any web view requests. Return `true` from the function to continue loading the request and `false` to stop loading.
| Type | Required | Platform |
| -------- | -------- | -------- |
| function | No | iOS |
---
### `startInLoadingState`
Boolean value that forces the `WebView` to show the loading view on the first load. This prop must be set to `true` in order for the `renderLoading` prop to work.
| Type | Required |
| ---- | -------- |
| bool | No |
---
### `decelerationRate`
A floating-point number that determines how quickly the scroll view decelerates after the user lifts their finger. You may also use the string shortcuts `"normal"` and `"fast"` which match the underlying iOS settings for `UIScrollViewDecelerationRateNormal` and `UIScrollViewDecelerationRateFast` respectively:
Boolean value to enable third party cookies in the `WebView`. Used on Android Lollipop and above only as third party cookies are enabled by default on Android Kitkat and below and on iOS. The default value is `true`.
Sets the user-agent for the `WebView`. This will only work for iOS if you are using WKWebView, not UIWebView (see https://developer.apple.com/documentation/webkit/wkwebview/1414950-customuseragent).
Boolean that determines whether HTML5 videos play inline or use the native full-screen controller. The default value is `false`.
> **NOTE**
>
> In order for video to play inline, not only does this property need to be set to `true`, but the video element in the HTML document must also include the `webkit-playsinline` attribute.
| Type | Required | Platform |
| ---- | -------- | -------- |
| bool | No | iOS |
---
### `bounces`
Boolean value that determines whether the web view bounces when it reaches the edge of the content. The default value is `true`.
Boolean value that determines whether scrolling is enabled in the `WebView`. The default value is `true`.
| Type | Required | Platform |
| ---- | -------- | -------- |
| bool | No | iOS |
---
### `geolocationEnabled`
Set whether Geolocation is enabled in the `WebView`. The default value is `false`. Used only in Android.
| Type | Required | Platform |
| ---- | -------- | -------- |
| bool | No | Android |
---
### `allowUniversalAccessFromFileURLs`
Boolean that sets whether JavaScript running in the context of a file scheme URL should be allowed to access content from any origin. Including accessing content from other file scheme URLs. The default value is `false`.
If true, this will allow access to the file system via `file://` URI's. The default value is `false`.
| Type | Required | Platform |
| ------- | -------- | -------- |
| boolean | No | Android |
### `saveFormDataDisabled`
Sets whether the WebView should disable saving form data. The default value is `false`. This function does not have any effect from Android API level 26 onwards as there is an Autofill feature which stores form data.