Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(iOS): WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. #1119

Merged

Conversation

shirakaba
Copy link
Contributor

@shirakaba shirakaba commented Jan 5, 2020

Closes #824 (which was closed only due to inactivity)

Summary

Note: depends upon the minor PR #1118.

  • In react-native-wkwebview, it is possible to update injectedJavascript and injectedJavaScriptBeforeContentLoad upon props change. But in react-native-webview, it is committed upon mount (as they are only initialised upon didMoveToWindow.
  • Equally, react-native-wkwebview supports injecting JS into the main frame or all frames while react-native-webview injects only into the main frame. This means that the WebView has no influence over iframes, for example.

I implemented the solution by:

  1. extracting the WKWebViewConfiguration initialisation routine from didMoveToWindow into a function called setUpWkWebViewConfig() (depends upon PR Extract wkWebViewConfig setup into setUpWkWebViewConfig function #1118), and;

  2. extracting the WKUserConfig initialisation code from there into a function called resetupScripts().

resetupScripts() removes all user scripts (the HTML5 history shim; the cookie-sharing shim; the injectedJavaScript source; the injectedJavaScriptBeforeContentLoaded source; and the (postMessage) messaging source), then restores all which still apply, given the latest props.

resetupScripts() is called upon didMoveToWindow (the post-initialisation life-cycle method) and upon any change to the user scripts – be the change to the script itself or the frames to which they apply.

Test Plan

<WebView
  source={{ uri: "https://birchlabs.co.uk/linguabrowse/infopages/obsol/iframeTest.html" }}
  /* Must be populated in order for `messagingEnabled` to be `true` to activate the
   * JS injection user scripts, consistent with current behaviour. This is undesirable,
   * so I'll address it in a follow-up PR. */
  onMessage={(e) => {}}
  
  injectedJavaScriptBeforeContentLoadedForMainFrameOnly={true}
  /* We set this property in each frame */
  injectedJavaScriptBeforeContentLoaded={`window.self.colourToUse = "orange";`}
  
  injectedJavaScriptForMainFrameOnly={true}
  /* We read the colourToUse property in each frame to recolour each frame */
  injectedJavaScript={`window.self.document.body.style.backgroundColor = window.self.colourToUse;`}
/>

This should change each frame to have a background colour of orange upon loading. There are three frames here: yellow, pink, and – just out of curiosity – https://www.eBay.co.uk (which cannot be displayed because its X-Frame-Options is set to SAMEORIGIN). The eBay frame seems orange post-injection only because it has a transparent background; it blocks script injection by the user content controllers, and this is expected behaviour.

The page without any injected JS

image

The page after injected JS (main frame only)

image

The page after injected JS (all frames)

image

What's required for testing (prerequisites)?

Make assertions based on the background colour of a site with iframes successfully being changed, given the above props.

What are the steps to reproduce (after prerequisites)?

N/A (feature)

Compatibility

OS Implemented
iOS
Android

Checklist

  • I have tested this on a device
  • I have tested this on a a simulator
  • I added the documentation in README.md
  • I mentioned this change in CHANGELOG.md
  • I updated the typed files (TS and Flow)
  • I added a sample use of the API in the example project (example/App.js)

@shirakaba
Copy link
Contributor Author

I had to make a few extra bugfix commits and a few edits to the text and screenshots of the initial post, but I think I'm satisfied with my edits now so will stop changing it.

@safaiyeh
Copy link
Collaborator

safaiyeh commented Jan 7, 2020

@shirakaba Would this need to be implemented for Android as well?

@shirakaba
Copy link
Contributor Author

shirakaba commented Jan 7, 2020

@safaiyeh This would not technically need to be implemented for Android as I have only changed the React component props interface for the iOS NativeWebView component. I would of course eventually like to have this feature for Android, but I will be focusing on the iOS side of my app for the time being.

Android is rather far behind:

  1. Although CommonNativeWebViewProps and WebViewSharedProps includes injectedJavaScriptBeforeContentLoaded, injectedJavaScriptBeforeContentLoaded is not implemented at all for Android to begin with.

  2. injectedJavaScript has only a very basic implementation for Android. During the onPageFinished function, reactWebView.callInjectedJavaScript() is called. The current implementation only acts on the main frame and does not consider other frames. I don't know whether Android has an equivalent to the WKUserScript APIs for injecting into all frames at certain page load times. If Android WebView doesn't have a hook for frame load start and end, then things may get tricky to implement. Does anyone know whether it has these hooks?

However, on Android the injectedJavaScript does at least update on each prop change.

EDIT: It looks like there is an open PR for the implementation of injectedJavaScriptBeforeContentLoaded on Android: #1099

EDIT 2: I found that Android has no equivalent APIs available for injecting scripts into all frames, nor any lifecycle event fired by each frame upon start/end of page loading. So for Android, we can only practically support injecting into the main frame.

@safaiyeh
Copy link
Collaborator

@shirakaba Thanks for the updates. We usually like to wait for features to support both platforms. Since it is not possible on Android from your research, I'll review this PR sometime today.

@safaiyeh
Copy link
Collaborator

@shirakaba Partial review, could you resolve conflicts so the diff is easier to read?

@shirakaba
Copy link
Contributor Author

@shirakaba Partial review, could you resolve conflicts so the diff is easier to read?

Done.

@safaiyeh
Copy link
Collaborator

safaiyeh commented Jan 15, 2020

@shirakaba Looks good to me, would you consider this a breaking change or just a feature?

I'm leaning towards breaking since it modifies how injectJavaScript is loaded and reacts to prop changes.

@shirakaba
Copy link
Contributor Author

shirakaba commented Jan 16, 2020

@safaiyeh A breaking change, because:

Breaking changes

  1. Users may previously have accidentally been relying on the behaviour that any props updates to injectedJavaScript remained immutable after first being set.
  2. This section: https://github.com/react-native-community/react-native-webview/pull/1119/files#diff-e2c6890fad2eec1786f059cac2d6d839L1012-L1019 injectedJavaScript no longer attaches a jsEvaluationValue property to the onLoadingFinish event.

Retaining the behaviour of collecting a JS evaluation value after injectedJavaScript

I would say that this could still be achieved by manually calling injectJavaScript() upon the onLoadedFinish event, but apparently that no longer returns an evaluation result for security reasons (reasons that admittedly I don't understand). It's quite possible that the jsEvaluationValue recorded upon that the evaluateJS() call (that this PR removes) was actually a security risk for the same reason and would therefore have been worth removing anyway. A good reason to remove it either way, though, is that it did not handle errors in JS evaluation gracefully (a warning log would appear in the console, but there would be no way to examine the error in code).

So instead, the best way to retain similar behaviour would be to collect the evaluation result of your JS by ensuring that your injectedJavaScript source string posts the result that it has evaluated:

<WebView
  source={{ uri: "https://birchlabs.co.uk/linguabrowse/infopages/obsol/iframeTest.html" }}
  /* Must be populated in order for `messagingEnabled` to be `true` to activate the
   * JS injection user scripts, consistent with current behaviour. */
  onMessage={(e: WebViewMessageEvent) => {
    const data = JSON.parse(e.nativeEvent.data);
    const { error, evaluation } = data;
    if(error === null){
      // The JS evaluation succeeded!
      console.log(`The expression evaluated as: ${evaluation}`);
    } else {
      // The JS evaluation failed
      console.log(`The expression evaluation failed, with message: ${error}`);
    }
  }}
  /* You could still inject it on all frames, but you'll see that we're just
   * evaluating 1+1, so we only really need it evaluated once :) */
  injectedJavaScriptForMainFrameOnly={true}
  injectedJavaScript={`
try {
  const expressionToEvaluate = 1 + 1;
  // Remember that the postMessage API only accepts a string as input.
  window.ReactNativeWebView.postMessage(
    JSON.stringify({ error: null, evaluation: expressionToEvaluate })
  );
} catch (e) {
  // Error objects don't stringify well, so we'll just report the error message.
  // I always add || e just in case we caught not an Error object, but an error string.
  window.ReactNativeWebView.postMessage(
    JSON.stringify({ error: e.message || e, expressionToEvaluation: null })
  );
}
`}
/>

Note that, unlike in the previous implementation, this posted message would appear in the onMessage handler rather than on the onLoadingFinish event, of course.

@safaiyeh
Copy link
Collaborator

@shirakaba Seems like a lot of friction for the end dev to get the old behavior to work. Is the removal necessary, is it possible to respond to the prop changes; however, and maintain attaching jsEvaluationValue to onLoadingFinish.

My concern is that the most common use is a static inject with no prop updates. I would not want to create friction with those developers.

@shirakaba
Copy link
Contributor Author

shirakaba commented Jan 16, 2020

Seems like a lot of friction for the end dev to get the old behavior to work.

Note the code comment on the injectJavaScript method:

Injects a javascript string into the referenced WebView. Deliberately does not return a response because using eval() to return a response breaks this method on pages with a Content Security Policy that disallows eval(). If you need that functionality, look into postMessage/onMessage.

injectJavaScript wraps the same evaluateJavaScript method used in the old behaviour – I think that the old behaviour (of returning a response upon evaluating some JS on onLoadFinish) is not secure fails on appropriately secured pages, but has remained up until now due to not being noticed.

The documentation comment recommends migrating to postMessage instead, so I think it would make sense to take this opportunity to deprecate that method.

Is the removal necessary, is it possible to respond to the prop changes

Although we can certainly make the old method respond to prop changes, the old method only supports injecting JS into the main frame; the only way to inject into all frames is to migrate to WKUserScripts (as in this PR).

So I think that the added friction (which is inconvenient but at least surmountable) should be weighed up against the fact that there is simply no way, using the old method, to inject JS into non-main frames.

@safaiyeh
Copy link
Collaborator

Sounds good, glad we got to talk about the pro/cons of these changes. I agree that the friction is warranted given the limitations & concerns.

Thanks for being very thorough with all of your responses @shirakaba! You've been super helpful helping me understand the changes and thank you for creating this PR.

I tested your changes on my production app and everything was smooth.

Will prep the Android PR for injectedJavaScriptBeforeContentLoaded, so we can merge these in at the same time.

ios/RNCWebView.m Show resolved Hide resolved
@safaiyeh
Copy link
Collaborator

Awesome @shirakaba going to build it on my lunch break then approve if all goes well :)

@safaiyeh
Copy link
Collaborator

@shirakaba Could you add this to the docs: #1119 (comment)

"Retaining the behavior of collecting a JS evaluation value after injectedJavaScript" so people understand migration steps needed.

@safaiyeh
Copy link
Collaborator

Screen Shot 2020-03-17 at 12 37 10 PM

Verified it worked! Just pending adding the migration docs and I'll land this as v9

@shirakaba
Copy link
Contributor Author

shirakaba commented Mar 17, 2020

@safaiyeh Thanks for building and testing!

As alluded to in my hasty edit, I've updated the test (the one you've run is my older, broken test). This one's more thorough (and more importantly, not broken):

image

For some reason, injection into iframes upon the beforeContentLoaded timepoint isn't working. As this mirrors the general behaviour of the Android implementation, it may simply be that my understanding has been wrong all along and we're looking at a WebKit limitation. By that reasoning, beforeContentLoaded may refer to window.top.document rather than each frame's window.self.document, so maybe the iframes don't exist at this point so we wouldn't expect them to be injectable beforeContentLoaded anyway.

Verified it worked! Just pending adding the migration docs and I'll land this as v9

Good idea – I'll get on that next.

@safaiyeh
Copy link
Collaborator

That makes sense that the frames do not exist before content is loaded; therefore, nowhere to inject into! Since this would bring Android & iOS parity, all the better.

I'll check out your updates

…viour; and reference to "Retaining the behavior of collecting a JS evaluation value after injectedJavaScript".
@shirakaba
Copy link
Contributor Author

@safaiyeh Docs updated.

@safaiyeh safaiyeh merged commit 9cb2f6e into react-native-webview:master Mar 17, 2020
@safaiyeh
Copy link
Collaborator

Landed! @shirakaba thank you so much for your persistence from start to end. ❤️

react-native-community-bot pushed a commit that referenced this pull request Mar 17, 2020
# [9.0.0](v8.2.1...v9.0.0) (2020-03-17)

### Features

* **iOS:** WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. ([#1119](#1119)) ([9cb2f6e](9cb2f6e)), closes [/github.com//pull/1119#issuecomment-574919464](https://github.com//github.com/react-native-community/react-native-webview/pull/1119/issues/issuecomment-574919464)

### BREAKING CHANGES

* **iOS:** • Props updates to `injectedJavaScript` are no longer immutable.
@react-native-community-bot
Copy link
Collaborator

🎉 This PR is included in version 9.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@rekmarks
Copy link

rekmarks commented Mar 17, 2020

I feel pampered, lol. Thanks guys! 🙌

shirakaba added a commit to shirakaba/react-native-webview that referenced this pull request Mar 18, 2020
…tedjs_startup_android

* commit '25552977852427cf5fdc7b233fd1bbc7c77c18b0':
  chore(release): 9.0.1 [skip ci]
  fix(deps): Update lock file (react-native-webview#1257)
  chore(release): 9.0.0 [skip ci]
  feat(iOS): WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. (react-native-webview#1119)
  chore(release): 8.2.1 [skip ci]
  fix(deps): Update React Native Windows version to ^0.61.0-beta.58 (react-native-webview#1256)
  chore(release): 8.2.0 [skip ci]
  feat(Windows): Windows support! (react-native-webview#1220)
  chore(docs): Update React Native links to reactnative.dev (react-native-webview#1233)
  chore(release): 8.1.2 [skip ci]
  fix(Android): Don't log the cookie when downloading file. (react-native-webview#1224)

# Conflicts:
#	docs/Reference.md
#	example/examples/Injection.tsx
@shirakaba
Copy link
Contributor Author

Thank you @safaiyeh for the review and merge, and @rekmarks for the motivation!

@redpandatronicsuk
Copy link
Contributor

This PR brakes injectedJavaScript for me, I opened an issue here: #1260

@jamninetyfive
Copy link

@shirakaba not work in lastest

noproblem23 added a commit to noproblem23/react-native-webview that referenced this pull request Apr 18, 2023
…n props change; and can be configured to inject into all frames. (#1119)

BREAKING CHANGE: 
• Props updates to `injectedJavaScript` are no longer immutable.

• `injectedJavaScript` no longer attaches a `jsEvaluationValue` property to the `onLoadingFinish` event. Check out: react-native-webview/react-native-webview#1119 (comment) to migrate with the same behavior.
noproblem23 added a commit to noproblem23/react-native-webview that referenced this pull request Apr 18, 2023
# [9.0.0](react-native-webview/react-native-webview@v8.2.1...v9.0.0) (2020-03-17)

### Features

* **iOS:** WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. ([#1119](react-native-webview/react-native-webview#1119)) ([9cb2f6e](react-native-webview/react-native-webview@9cb2f6e)), closes [/github.com/react-native-webview/react-native-webview/pull/1119#issuecomment-574919464](https://github.com//github.com/react-native-community/react-native-webview/pull/1119/issues/issuecomment-574919464)

### BREAKING CHANGES

* **iOS:** • Props updates to `injectedJavaScript` are no longer immutable.
github-actions bot pushed a commit to CodinDotTop/react-native-webview that referenced this pull request Sep 13, 2023
# 1.0.0 (2023-09-13)

### Bug Fixes

* **android:** add null reference check for onMessage on android ([#770](https://github.com/CodinDotTop/react-native-webview/issues/770)) ([12db695](https://github.com/CodinDotTop/react-native-webview/commit/12db6956a98faeb381bf495eff1549a274ef654f))
* **docs:** Reference documentation updates for menuItems ([#3046](https://github.com/CodinDotTop/react-native-webview/issues/3046)) ([fcd6050](https://github.com/CodinDotTop/react-native-webview/commit/fcd60508dc861be651dd7d8e748eade98e44ad75))
* **ios:** Fixes new ios clearCache method where it wasn't getting attached ([#3122](https://github.com/CodinDotTop/react-native-webview/issues/3122) by [@jamonholmgren](https://github.com/jamonholmgren) and [@robinheinze](https://github.com/robinheinze)) ([f101eaf](https://github.com/CodinDotTop/react-native-webview/commit/f101eafd1d35b28ab16185c7f9164d5c6512f097))
* build on 0.72 new arch ([#2997](https://github.com/CodinDotTop/react-native-webview/issues/2997)) ([7ceeb2f](https://github.com/CodinDotTop/react-native-webview/commit/7ceeb2f959c5477956386fc55f2da4220c917889))
* Revert didMoveToSuperview back to didMoveToWindow ([#3041](https://github.com/CodinDotTop/react-native-webview/issues/3041)) ([836f717](https://github.com/CodinDotTop/react-native-webview/commit/836f71768ee03481d1e09af6d0156775ac988b5e))
* **android:** add null-pointer check for `activity` before creating `RNCWebChromeClient` (closes [#1406](https://github.com/CodinDotTop/react-native-webview/issues/1406), [#2190](https://github.com/CodinDotTop/react-native-webview/issues/2190)) ([#2240](https://github.com/CodinDotTop/react-native-webview/issues/2240)) ([9b14584](https://github.com/CodinDotTop/react-native-webview/commit/9b14584b78c386b0282a4ae99f6b47af1694e0a3))
* **android:** Adding mavenCentral() as jcenter() is shutting down ([#1961](https://github.com/CodinDotTop/react-native-webview/issues/1961)) ([015054c](https://github.com/CodinDotTop/react-native-webview/commit/015054c2f5db0a3931dba3b44a43041fba155cb5))
* **android:** cacheEnabled - make compatible with android sdk-33 ([#2583](https://github.com/CodinDotTop/react-native-webview/issues/2583)) ([7f78f20](https://github.com/CodinDotTop/react-native-webview/commit/7f78f206170b0a8f29b467fa2cc546544e9cd300))
* **android:** Changing ThemedReactContext to ReactContext to allow custom stuff ([#1994](https://github.com/CodinDotTop/react-native-webview/issues/1994)) ([7b71364](https://github.com/CodinDotTop/react-native-webview/commit/7b71364a9cb91d43b10e1c9dcfabf75253d3514d))
* **android:** fixed issue with refactor ([ff08b11](https://github.com/CodinDotTop/react-native-webview/commit/ff08b11e500334198e1cf2cc02724ef10fb18c91)), closes [#2538](https://github.com/CodinDotTop/react-native-webview/issues/2538)
* **android:** onPermissionRequest duplicate ([#2002](https://github.com/CodinDotTop/react-native-webview/issues/2002)) ([bba5907](https://github.com/CodinDotTop/react-native-webview/commit/bba590790662336ddb5f444737233bb88e6f48ac))
* **android:** read minSdkVersion from root project ([#1960](https://github.com/CodinDotTop/react-native-webview/issues/1960)) ([768092b](https://github.com/CodinDotTop/react-native-webview/commit/768092bba743c93aaf9c07e75cf908b62d7e7e6c))
* **android:** Respect "filename*" parameter in the field Content-Disposition when detecting filenames for downloading. ([#2767](https://github.com/CodinDotTop/react-native-webview/issues/2767)) ([47c05b0](https://github.com/CodinDotTop/react-native-webview/commit/47c05b0fba21fde471ca6c3aacf7b75756b6a52e))
* **android:** revert change ThemedReactContext to ReactContext ([8a45fcf](https://github.com/CodinDotTop/react-native-webview/commit/8a45fcf7f9d95ca589b0af9413911cfa3d25338a))
* **autolink-windows:** enable autolinking on Windows ([9114b78](https://github.com/CodinDotTop/react-native-webview/commit/9114b78d419d9d5a548e545b790a9c025e46dd63))
* **ci:** Upgrade to node 14 ([0b0a406](https://github.com/CodinDotTop/react-native-webview/commit/0b0a4069c8396c9e3c9b911d3db4f5da2a67e0a2))
* **deps:** Bump React Native version range to accept 0.64 ([#1967](https://github.com/CodinDotTop/react-native-webview/issues/1967) by [@dulmandakh](https://github.com/dulmandakh)) ([863a0e2](https://github.com/CodinDotTop/react-native-webview/commit/863a0e2408c90b1d1225e812ca80e138942c041b))
* **ios:** support requestFocus ([#2501](https://github.com/CodinDotTop/react-native-webview/issues/2501)) ([41ae896](https://github.com/CodinDotTop/react-native-webview/commit/41ae8965115b7a028d5409dd4dc36bd4544f8300))
* **iOS:** add null check safety for adding mainDocumentURL to event ([#2662](https://github.com/CodinDotTop/react-native-webview/issues/2662)) ([6c00c1f](https://github.com/CodinDotTop/react-native-webview/commit/6c00c1f9f38513f95bc44d9f3dba668c79629348))
* **iOS:** Adding the contentProcessDidTerminate property into useWebViewLogic hook arguments (fixes [#2559](https://github.com/CodinDotTop/react-native-webview/issues/2559)) ([#2580](https://github.com/CodinDotTop/react-native-webview/issues/2580)) ([045fb60](https://github.com/CodinDotTop/react-native-webview/commit/045fb602e374374beba56f6316920985c297b34f))
* **iOS:** Foundation Import ([#2917](https://github.com/CodinDotTop/react-native-webview/issues/2917)) ([a2eec17](https://github.com/CodinDotTop/react-native-webview/commit/a2eec1700271f43af1ba43bd95ad60be11d55877)), closes [#2915](https://github.com/CodinDotTop/react-native-webview/issues/2915)
* **macOS:** address regression due to didMoveToSuperview ([#3006](https://github.com/CodinDotTop/react-native-webview/issues/3006)) ([41576ca](https://github.com/CodinDotTop/react-native-webview/commit/41576ca9a7d5d0a9470f2e4227a9d2128d7727c2))
* Revert "Missing android.support.FILE_PROVIDER_PATHS meta-data on some OEMs ([#2952](https://github.com/CodinDotTop/react-native-webview/issues/2952))" ([e17a79b](https://github.com/CodinDotTop/react-native-webview/commit/e17a79b9aa1ea41c9e52ae67fb6afd91cfa144f2))
* **android:** Prevent crash from unsupported URI downloads ([#2328](https://github.com/CodinDotTop/react-native-webview/issues/2328)) ([7f95a7f](https://github.com/CodinDotTop/react-native-webview/commit/7f95a7fff4fd09c68bec06ee344581ba3da2295d))
* **Android:** Don't crash while downloading file with % in filename ([#2861](https://github.com/CodinDotTop/react-native-webview/issues/2861)) ([81e3aa4](https://github.com/CodinDotTop/react-native-webview/commit/81e3aa4ecd531220d1ec1da0711195dc6ebdc781))
* **dependencies:** Simplify react-native version management ([f8a1ba2](https://github.com/CodinDotTop/react-native-webview/commit/f8a1ba2ebc56a52030443b491bde14b1c86ec189)), closes [/github.com/react-navigation/react-navigation/blob/main/packages/native/package.json#L56-L59](https://github.com//github.com/react-navigation/react-navigation/blob/main/packages/native/package.json/issues/L56-L59)
* **ios:** fix userAgent ios type comment ([#2888](https://github.com/CodinDotTop/react-native-webview/issues/2888)) ([4d0c0de](https://github.com/CodinDotTop/react-native-webview/commit/4d0c0dea008c53dc8f4cd8760e90c008b098234d))
* **iOS:** compilation error ([c036706](https://github.com/CodinDotTop/react-native-webview/commit/c03670685bea0116084168adc982e7a8394f75a2))
* **iOS/macOS:** re-added missing properties due to hooks refactor ([453d22d](https://github.com/CodinDotTop/react-native-webview/commit/453d22d1f16cfb1bd82d4963747fc7da4a8e1ba6))
* **jcenter:** remove jcenter ([#2178](https://github.com/CodinDotTop/react-native-webview/issues/2178)) ([283c18b](https://github.com/CodinDotTop/react-native-webview/commit/283c18b379c860454fc7745370fc100f62a13032))
* **js:** messagingEnabled prop ([#2666](https://github.com/CodinDotTop/react-native-webview/issues/2666)) ([f74ee7a](https://github.com/CodinDotTop/react-native-webview/commit/f74ee7a88adf6d645f2ef80da6657b68f5d6959d))
* **logs:** remove warning logs for common/handled error events. ([#2043](https://github.com/CodinDotTop/react-native-webview/issues/2043)) ([279d6ae](https://github.com/CodinDotTop/react-native-webview/commit/279d6ae98c449b3c2d9ab2cc567f99bcc6e298b6))
* **macos:** mediaCapturePermissionGrantType is iOS only ([#2313](https://github.com/CodinDotTop/react-native-webview/issues/2313)) ([69cafd1](https://github.com/CodinDotTop/react-native-webview/commit/69cafd1d20a538426ec387fb48e4709dfe4a6afd))
* **macOS:** failing build due to missing TARGET_OS_OSX ([3d7b9ca](https://github.com/CodinDotTop/react-native-webview/commit/3d7b9cac6e0cfad0fb40707c7120ef591580f5e0))
* **refactor:** Converting dispatchEvent static method to non static method ([#1939](https://github.com/CodinDotTop/react-native-webview/issues/1939)) ([344ccce](https://github.com/CodinDotTop/react-native-webview/commit/344ccce3eead04d7b974d3c0e82c281b5bf54a3a))
* **types:** Mark android-only methods as possibly undefined ([#2362](https://github.com/CodinDotTop/react-native-webview/issues/2362)) ([1b0fd64](https://github.com/CodinDotTop/react-native-webview/commit/1b0fd6481d88852e7d1d2744f3878c664f047010))
* **types:** Remove references to nonexistent extraNativeComponentConfig prop ([#1958](https://github.com/CodinDotTop/react-native-webview/issues/1958)) ([c1e91f7](https://github.com/CodinDotTop/react-native-webview/commit/c1e91f7d7368d5ae72de0fb171049a8e7f46b8aa))
* **windows:** add Visual Studio 2022 toolset (so it doesn't fall back to v140) ([#2297](https://github.com/CodinDotTop/react-native-webview/issues/2297)) ([d665456](https://github.com/CodinDotTop/react-native-webview/commit/d6654560983f3e80ffde69536d72afc6f6bda84c))
* **windows:** Add WinUI Version Opt In Functionality ([#2575](https://github.com/CodinDotTop/react-native-webview/issues/2575)) ([3727f81](https://github.com/CodinDotTop/react-native-webview/commit/3727f81caf337c88cb1fbd6a08397dd71670eed0))
* **windows:** don't build WebView2 unless on WinUI 3 ([#2517](https://github.com/CodinDotTop/react-native-webview/issues/2517)) ([0571062](https://github.com/CodinDotTop/react-native-webview/commit/05710628128815fc5fb2f1c48e467a78d1b5a1e7))
* **windows:** Refactor JS Code for Windows ([#2554](https://github.com/CodinDotTop/react-native-webview/issues/2554)) ([b7f5c6f](https://github.com/CodinDotTop/react-native-webview/commit/b7f5c6f4970e4da179da1942b527427bdabbda37))
* cannot find `react-native-test-app` when Metro starts ([#2413](https://github.com/CodinDotTop/react-native-webview/issues/2413)) ([c6471ed](https://github.com/CodinDotTop/react-native-webview/commit/c6471edd04b5ededfcdd7b2c84aaec132e682016))
* Don't crash if trying to download "invalid" URIs on Android ([#2432](https://github.com/CodinDotTop/react-native-webview/issues/2432)) ([c424a49](https://github.com/CodinDotTop/react-native-webview/commit/c424a496a009507432e6a3fff3eacb1099f634a3))
* **android:** add missing null check for fileTypes ([#1368](https://github.com/CodinDotTop/react-native-webview/issues/1368) by [@bengy](https://github.com/bengy)) ([4f0f0af](https://github.com/CodinDotTop/react-native-webview/commit/4f0f0afe70cf32739878932e236bfebbdee02a88))
* **android:** Add SSL error handling for Android WebView ([#1450](https://github.com/CodinDotTop/react-native-webview/issues/1450) by [@thephpjedi](https://github.com/thephpjedi)) ([1bd5961](https://github.com/CodinDotTop/react-native-webview/commit/1bd596125599af1cbba6964876e305bb42a4e4cf)), closes [#259](https://github.com/CodinDotTop/react-native-webview/issues/259)
* **android:** Added fallback poster image to prevent crashes ([#1036](https://github.com/CodinDotTop/react-native-webview/issues/1036)) ([d8acd90](https://github.com/CodinDotTop/react-native-webview/commit/d8acd9086ccc7c18bfd1a81e3dfa833137ea186a))
* **android:** Allow scrolling inside ScrollView ([#281](https://github.com/CodinDotTop/react-native-webview/issues/281)) ([a5cb7ba](https://github.com/CodinDotTop/react-native-webview/commit/a5cb7ba65c65a68ba714272df21fcef16728e56a))
* **android:** Allow user to rotate fullscreen video (Android X) ([#816](https://github.com/CodinDotTop/react-native-webview/issues/816)) ([1ea05d3](https://github.com/CodinDotTop/react-native-webview/commit/1ea05d3115b4404d9b7232e4e951021bcfe2bb8f))
* **android:** Annotate RNCWebViewModule with @ReactModule to comply with latest changes ([#459](https://github.com/CodinDotTop/react-native-webview/issues/459)) ([f6e208b](https://github.com/CodinDotTop/react-native-webview/commit/f6e208be61031f1d367b3b7b74c575287ab5d165))
* **android:** Blank screen due to missing super() call in RNCWebViewManager.java ([#241](https://github.com/CodinDotTop/react-native-webview/issues/241)) ([4e1d113](https://github.com/CodinDotTop/react-native-webview/commit/4e1d113c7024f4f61c64751d369e09565be4e3b1)), closes [#240](https://github.com/CodinDotTop/react-native-webview/issues/240) [#224](https://github.com/CodinDotTop/react-native-webview/issues/224)
* **android:** Broken build due to conditional import of kotlin ([#1412](https://github.com/CodinDotTop/react-native-webview/issues/1412)) ([7ab2afb](https://github.com/CodinDotTop/react-native-webview/commit/7ab2afbab7a64d58a97723734dc2dad4021f3b9b))
* **android:** changed initial value of nextLockIdentifier from 0 to 1 ([#1689](https://github.com/CodinDotTop/react-native-webview/issues/1689)) ([53c0382](https://github.com/CodinDotTop/react-native-webview/commit/53c0382cd088ca018ca8a550c5ad95556caf00b4))
* **android:** cleanup `build.gradle` & fix [#218](https://github.com/CodinDotTop/react-native-webview/issues/218) ([#238](https://github.com/CodinDotTop/react-native-webview/issues/238)) ([24ec4f7](https://github.com/CodinDotTop/react-native-webview/commit/24ec4f752cdfd29d49b0a13a0035aaea736eb641))
* **android:** crash problem while loading local html resource ([#1010](https://github.com/CodinDotTop/react-native-webview/issues/1010)) ([05c286f](https://github.com/CodinDotTop/react-native-webview/commit/05c286fc23373c99f2adba478c71a31dcb981898))
* **android:** Do not hold a strong reference to native module in the package ([#434](https://github.com/CodinDotTop/react-native-webview/issues/434)) ([566a629](https://github.com/CodinDotTop/react-native-webview/commit/566a6292b473127e1a8674c3140c9a585a4736bb))
* **android:** duplicate `setWebChromeClient()` overwrite ([#1417](https://github.com/CodinDotTop/react-native-webview/issues/1417)) ([2f8c4c5](https://github.com/CodinDotTop/react-native-webview/commit/2f8c4c506725b3f17d352317f6c7ce28a6917bb1))
* **android:** Filter extra onLoadProgress & add url event ([#643](https://github.com/CodinDotTop/react-native-webview/issues/643)) ([fc59cae](https://github.com/CodinDotTop/react-native-webview/commit/fc59cae4bfaf6ab9d9f887565c65e3657d798f44))
* **android:** Fix ClassCastException when doing native things([#987](https://github.com/CodinDotTop/react-native-webview/issues/987)) ([7e68da4](https://github.com/CodinDotTop/react-native-webview/commit/7e68da4ffe1e14a6791135b96f4c098856ad0d41))
* **android:** Fix Download on android P  ([#273](https://github.com/CodinDotTop/react-native-webview/issues/273)) ([15d904f](https://github.com/CodinDotTop/react-native-webview/commit/15d904f769935652f24e9ec3c6f0ebd0da17d6c0)), closes [#266](https://github.com/CodinDotTop/react-native-webview/issues/266)
* **android:** Fix full=screen video when in modals ([#1748](https://github.com/CodinDotTop/react-native-webview/issues/1748) by [@cristianoccazinsp](https://github.com/cristianoccazinsp)) ([4f469ee](https://github.com/CodinDotTop/react-native-webview/commit/4f469ee9aab9f6db5f9905c6276dc604d231cd5d))
* **android:** Fix several Android file upload issues ([#1302](https://github.com/CodinDotTop/react-native-webview/issues/1302) by [@hojason117](https://github.com/hojason117)) ([89886c8](https://github.com/CodinDotTop/react-native-webview/commit/89886c820d4812e8806ac5801660aff317b8f5b2))
* **android:** Fixes black screen on back button press ([#1298](https://github.com/CodinDotTop/react-native-webview/issues/1298) by [@michan85](https://github.com/michan85)) ([0317a4b](https://github.com/CodinDotTop/react-native-webview/commit/0317a4b4a5a216610257e5fe99794f2af5cac55c))
* **android:** Improve onLoadProgress consistency ([#1373](https://github.com/CodinDotTop/react-native-webview/issues/1373) by [@hojason117](https://github.com/hojason117)) ([b97d16c](https://github.com/CodinDotTop/react-native-webview/commit/b97d16c23d734fc0812e3acfb1da665625dd8ffe))
* **android:** Move noisy debug logging out of "quiet" log level. ([#844](https://github.com/CodinDotTop/react-native-webview/issues/844)) ([b2cd6b5](https://github.com/CodinDotTop/react-native-webview/commit/b2cd6b54fa903c14098bf7c50cdbd08b776ddb6e))
* **android:** onMessage on android to return baseEvent([#755](https://github.com/CodinDotTop/react-native-webview/issues/755)) ([282f81d](https://github.com/CodinDotTop/react-native-webview/commit/282f81dcddbcfc17ba9a197bb6390da71a323c28))
* **android:** possible NullPointerException ([#965](https://github.com/CodinDotTop/react-native-webview/issues/965)) ([fab77dc](https://github.com/CodinDotTop/react-native-webview/commit/fab77dc82f5076a9b398d17a7345731cca3480e1))
* **android:** redirect and renderLoading issues ([#548](https://github.com/CodinDotTop/react-native-webview/issues/548)) ([b296f24](https://github.com/CodinDotTop/react-native-webview/commit/b296f24dd29aadc0c89333c9b44cccaba203e2d4))
* **android:** renderError - the error status might be overwritte… ([#915](https://github.com/CodinDotTop/react-native-webview/issues/915)) ([01de9e5](https://github.com/CodinDotTop/react-native-webview/commit/01de9e5fa08f3f786abd46beba697f45a8054c01))
* **android:** replace deprecated `WebView.PictureListener`->`onContentSizeChange` impl ([#164](https://github.com/CodinDotTop/react-native-webview/issues/164)) ([9014c4c](https://github.com/CodinDotTop/react-native-webview/commit/9014c4cac0d1caccea94b02d5776bef476272456))
* **android:** Revert scroll update from [#281](https://github.com/CodinDotTop/react-native-webview/issues/281) ([#889](https://github.com/CodinDotTop/react-native-webview/issues/889)) ([8f2ddf4](https://github.com/CodinDotTop/react-native-webview/commit/8f2ddf45425d1e2a096e705b652d95099441ae6f)), closes [#878](https://github.com/CodinDotTop/react-native-webview/issues/878)
* **android:** unable to re-enable hardware acceleration after disabled it ([#553](https://github.com/CodinDotTop/react-native-webview/issues/553)) ([c8977ec](https://github.com/CodinDotTop/react-native-webview/commit/c8977ec7cefebb8e0d6ca6bb6216428353d272c5))
* **android:** Unset mWebChromeClient on WebViewManager rather than WebView ([#1720](https://github.com/CodinDotTop/react-native-webview/issues/1720)) ([c95c0ea](https://github.com/CodinDotTop/react-native-webview/commit/c95c0ea923a4c30225b04ae1c652e1ed6b6fad98))
* **android:** Update SSL error handling ([#1466](https://github.com/CodinDotTop/react-native-webview/issues/1466)) ([ef48d35](https://github.com/CodinDotTop/react-native-webview/commit/ef48d35e95ed780bb011e14a7ae18ef110345142))
* **android:** Updated permissions for Android Q and above ([#1384](https://github.com/CodinDotTop/react-native-webview/issues/1384) by @Karthz) ([03dbcb8](https://github.com/CodinDotTop/react-native-webview/commit/03dbcb870eba625d8231bb4808bd91bec70afd85))
* **android:** updating source.html prop doesn't refresh webview ([#485](https://github.com/CodinDotTop/react-native-webview/issues/485)) ([9aa14f1](https://github.com/CodinDotTop/react-native-webview/commit/9aa14f1a960bb12c725daa5504e99bd438f826ae))
* **android:** webview crash with incognito in Android Lollipop ([#799](https://github.com/CodinDotTop/react-native-webview/issues/799)) ([47e9a0b](https://github.com/CodinDotTop/react-native-webview/commit/47e9a0b97d914fc1489750bc0d7d3955d269012f))
* **Android:** Don't log the cookie when downloading file. ([#1224](https://github.com/CodinDotTop/react-native-webview/issues/1224)) ([2470245](https://github.com/CodinDotTop/react-native-webview/commit/24702450f3fc17bedd8b98ad3f49150f6dba1d94))
* **Android:** Don't show camera options for a file upload when they can not be used ([#1210](https://github.com/CodinDotTop/react-native-webview/issues/1210)) ([4093682](https://github.com/CodinDotTop/react-native-webview/commit/4093682e08a7a047de39046e8e48d9a78b2ad0f2))
* **Android:** Ensure each mounted WebView binds their personal onMessage handler ([#1301](https://github.com/CodinDotTop/react-native-webview/issues/1301)) ([04f9fb2](https://github.com/CodinDotTop/react-native-webview/commit/04f9fb23ba2f67a5e7dcf056e317bcf51c89585f))
* **Android:** geolocation access ([#562](https://github.com/CodinDotTop/react-native-webview/issues/562)) ([409b9ae](https://github.com/CodinDotTop/react-native-webview/commit/409b9ae6204c225da377197b29fc2f009cb21fde))
* **Android:** hardware acceleration issue ([#854](https://github.com/CodinDotTop/react-native-webview/issues/854)) ([9e25e42](https://github.com/CodinDotTop/react-native-webview/commit/9e25e42ceef65b47467860592ae38fb9f03c24df))
* **Android:** on scroll syntax error ([#577](https://github.com/CodinDotTop/react-native-webview/issues/577)) ([cbbff21](https://github.com/CodinDotTop/react-native-webview/commit/cbbff21ea8b946f021e4026ea8079beebc353d3a))
* **Android:** Redirected URLs now redirect correctly. ([#991](https://github.com/CodinDotTop/react-native-webview/issues/991)) ([acf1ad7](https://github.com/CodinDotTop/react-native-webview/commit/acf1ad7560aac450615703b3c8410919dbddecd1))
* **Android:** Resolve crypto error with uuid usage ([#1334](https://github.com/CodinDotTop/react-native-webview/issues/1334)) ([438e292](https://github.com/CodinDotTop/react-native-webview/commit/438e29298b39c54ff70629ca4274c979a67b2b3e))
* **Android:** Revert "Redirected URLs now redirect correctly. ([#991](https://github.com/CodinDotTop/react-native-webview/issues/991))" ([#1177](https://github.com/CodinDotTop/react-native-webview/issues/1177)) ([344aab5](https://github.com/CodinDotTop/react-native-webview/commit/344aab591a920159bbec30f97b42bbb12573824b))
* **Android:** Workaround for chromium bugs 1023678 and 1050635. ([#1221](https://github.com/CodinDotTop/react-native-webview/issues/1221)) ([5d88af4](https://github.com/CodinDotTop/react-native-webview/commit/5d88af44fabc1b061f5814659aacce2e993705f1))
* **Android <input />:** Support file extensions in file input accept attributes ([#357](https://github.com/CodinDotTop/react-native-webview/issues/357)) ([803a3b0](https://github.com/CodinDotTop/react-native-webview/commit/803a3b095b20d7f9af5d5b17eee46cdd1f4f8af8))
* **android sdk 28:** build issue ([#1469](https://github.com/CodinDotTop/react-native-webview/issues/1469)) ([5f823bb](https://github.com/CodinDotTop/react-native-webview/commit/5f823bb77b9fb532dbcbe02811eab2adee42e144))
* **android:scalesPageToFit:** scalesPageToFit does not work as intended , especially for large jpg and png images. ([#275](https://github.com/CodinDotTop/react-native-webview/issues/275)) ([a661df1](https://github.com/CodinDotTop/react-native-webview/commit/a661df1ffcfdd4b2eb1b82dd05005541897b784e)), closes [#113](https://github.com/CodinDotTop/react-native-webview/issues/113)
* **android/iOS:** Fixed react-native 0.58 warnings ([#311](https://github.com/CodinDotTop/react-native-webview/issues/311)) ([4a4ccd8](https://github.com/CodinDotTop/react-native-webview/commit/4a4ccd814143840edd11cd43bc1a629618019f24))
* **AndroidX support:** Fixed broken import + added instructions ([#583](https://github.com/CodinDotTop/react-native-webview/issues/583)) ([585ac7a](https://github.com/CodinDotTop/react-native-webview/commit/585ac7a24377cca4d3cbaf87df72bf80ea68faf7)), closes [#580](https://github.com/CodinDotTop/react-native-webview/issues/580) [#581](https://github.com/CodinDotTop/react-native-webview/issues/581) [#582](https://github.com/CodinDotTop/react-native-webview/issues/582)
* **build:** Android build errors when using Gradle 6.0 ([#1037](https://github.com/CodinDotTop/react-native-webview/issues/1037)) ([5b0c634](https://github.com/CodinDotTop/react-native-webview/commit/5b0c634f15dbf8eb8210d4393da9ca86df1de453))
* **deps:** Fix RNCWebViewUIManager interface typescript error (#… ([#928](https://github.com/CodinDotTop/react-native-webview/issues/928)) ([e529fa9](https://github.com/CodinDotTop/react-native-webview/commit/e529fa9006578dd6aeecdb744fc029490b75d48b)), closes [#901](https://github.com/CodinDotTop/react-native-webview/issues/901)
* **deps:** update dependencies to address security issues ([#837](https://github.com/CodinDotTop/react-native-webview/issues/837)) ([0411345](https://github.com/CodinDotTop/react-native-webview/commit/0411345f006fce6de6d6034768d05e6cf060aaed))
* **deps:** Update lock file ([#1257](https://github.com/CodinDotTop/react-native-webview/issues/1257)) ([9732d65](https://github.com/CodinDotTop/react-native-webview/commit/9732d65289d6760fbf765e771464782e33d83eb5))
* **deps:** Update package.json ([#1583](https://github.com/CodinDotTop/react-native-webview/issues/1583)) ([8dd9969](https://github.com/CodinDotTop/react-native-webview/commit/8dd996928898f34c30da4c67cd547e3f8fd7a4e7))
* **deps:** Update React Native Windows version to ^0.61.0-beta.58 ([#1256](https://github.com/CodinDotTop/react-native-webview/issues/1256)) ([91064ab](https://github.com/CodinDotTop/react-native-webview/commit/91064ab4a94b395f27ba670a14346206e05cff9c))
* **deps:** updated dependancies and types ([#847](https://github.com/CodinDotTop/react-native-webview/issues/847)) ([85b921c](https://github.com/CodinDotTop/react-native-webview/commit/85b921ce6426a6a97b235c1fcb600cd1ca9bd1fe))
* **gradle:** Add support library as a dependency ([#253](https://github.com/CodinDotTop/react-native-webview/issues/253)) ([5180033](https://github.com/CodinDotTop/react-native-webview/commit/518003392a500f2e706e3b503a6d63900cccbdba)), closes [#174](https://github.com/CodinDotTop/react-native-webview/issues/174) [#184](https://github.com/CodinDotTop/react-native-webview/issues/184) [#245](https://github.com/CodinDotTop/react-native-webview/issues/245)
* **gradle:** Load Android Gradle Plugin conditionally ([#1230](https://github.com/CodinDotTop/react-native-webview/issues/1230) by @SaeedZhiany) ([2639d52](https://github.com/CodinDotTop/react-native-webview/commit/2639d523e9336f5f640475bafd058f82f2bc0ab4))
* **Gradle:** Allow kotlinVersion override using ext with gradle.properties ([#267](https://github.com/CodinDotTop/react-native-webview/issues/267)) ([2846e27](https://github.com/CodinDotTop/react-native-webview/commit/2846e27fcf762d93efffd92ab38fdad766daeff8))
* **incognito:** Ensures that incognito doesn't clear cookies when not enabled ([#1447](https://github.com/CodinDotTop/react-native-webview/issues/1447) by [@jasonkellydk](https://github.com/jasonkellydk)) ([63c584c](https://github.com/CodinDotTop/react-native-webview/commit/63c584c64754eaf473774966b44aa9e93f7e5dad))
* **install guide:** Add pod install step to getting started guide ([#678](https://github.com/CodinDotTop/react-native-webview/issues/678)) ([d6044c2](https://github.com/CodinDotTop/react-native-webview/commit/d6044c2b5d703f071a42f27caafb5d33c1f1cb56))
* **ios:** Add missing nullability specifiers; fix if block warning ([#1898](https://github.com/CodinDotTop/react-native-webview/issues/1898)) ([85dfca8](https://github.com/CodinDotTop/react-native-webview/commit/85dfca894f3fdcd03e527324ac33611090ebb291))
* **ios:** error on iOS < 13([#1843](https://github.com/CodinDotTop/react-native-webview/issues/1843)) ([283fe12](https://github.com/CodinDotTop/react-native-webview/commit/283fe124b3f64c2bd2f51ab05faf757bd5420584))
* **ios:** Make allowFileAccessFromFileURLs work in iOS. ([#1061](https://github.com/CodinDotTop/react-native-webview/issues/1061)) ([88b6498](https://github.com/CodinDotTop/react-native-webview/commit/88b64981f4700de4f36785e656ce2c672159d31c))
* **ios:** Xcode 12 compatibility ([#1643](https://github.com/CodinDotTop/react-native-webview/issues/1643)) ([08b7099](https://github.com/CodinDotTop/react-native-webview/commit/08b709967f92b5eba28d63ec287e4754b1fbb632))
* **iOS:** Adds missing silent hardware declaration to header file ([#1319](https://github.com/CodinDotTop/react-native-webview/issues/1319)) ([2b4d752](https://github.com/CodinDotTop/react-native-webview/commit/2b4d752c32a01524328ff011488438a925b08c32)), closes [#1140](https://github.com/CodinDotTop/react-native-webview/issues/1140)
* **iOS:** Align look and feel of Window.prompt() to Mobile Safari ([#677](https://github.com/CodinDotTop/react-native-webview/issues/677)) ([231100d](https://github.com/CodinDotTop/react-native-webview/commit/231100dc3c69c5adfe87fc7b7d81dd5a266533d0))
* **iOS:** Call dispatchViewManagerCommand with correct number of arguments ([#886](https://github.com/CodinDotTop/react-native-webview/issues/886)) ([33f1ee3](https://github.com/CodinDotTop/react-native-webview/commit/33f1ee384fbe4435ff41af662bb6d4bd0693a043))
* **iOS:** changed the way the top view controller is obtained. ([#1592](https://github.com/CodinDotTop/react-native-webview/issues/1592)) ([2cb2113](https://github.com/CodinDotTop/react-native-webview/commit/2cb2113c2922292ca617d9de99c58738f5d47c6e))
* **iOS:** file picker crash ([#1567](https://github.com/CodinDotTop/react-native-webview/issues/1567)) ([05c1d8f](https://github.com/CodinDotTop/react-native-webview/commit/05c1d8f26499ee0a3bd7fc1f68f4f66054dd17fc))
* **iOS:** Fix changing notification bars [#735](https://github.com/CodinDotTop/react-native-webview/issues/735) ([#898](https://github.com/CodinDotTop/react-native-webview/issues/898)) ([05e2d27](https://github.com/CodinDotTop/react-native-webview/commit/05e2d27662d54f3481911e18946d6bff79030f88))
* **iOS:** hideKeyboardAccessoryView on iPads ([#661](https://github.com/CodinDotTop/react-native-webview/issues/661)) ([09372c9](https://github.com/CodinDotTop/react-native-webview/commit/09372c9d95b3cceb6990d3e1ab269bcacdad4a07))
* **iOS:** Ignore WebKitDomainError 101 ([#961](https://github.com/CodinDotTop/react-native-webview/issues/961)) ([adb5608](https://github.com/CodinDotTop/react-native-webview/commit/adb5608116c4931f53d5e5f62554c2471c1b0296))
* **iOS:** inconsistent backgroundColor ([#868](https://github.com/CodinDotTop/react-native-webview/issues/868)) ([d25b20a](https://github.com/CodinDotTop/react-native-webview/commit/d25b20ac031c79cdf0e558fc87d574ec75fe5637))
* **iOS:** injectedJavaScriptBeforeContentLoaded now runs when messaging is not enabled ([#1286](https://github.com/CodinDotTop/react-native-webview/issues/1286)) ([571fb8d](https://github.com/CodinDotTop/react-native-webview/commit/571fb8df793f4f2e3218d1a55dc2fa86dbe2a748))
* **iOS:** javaScriptEnabled property ([#826](https://github.com/CodinDotTop/react-native-webview/issues/826)) ([d87bb58](https://github.com/CodinDotTop/react-native-webview/commit/d87bb5820807f60b5f1afcc90b26dfdf42c6476e))
* **iOS:** Meta method 'UIScrollViewContentInsetAdjustmentBehavior:' conflict warning ([e6edc6d](https://github.com/CodinDotTop/react-native-webview/commit/e6edc6dc73c9ebcfce0a2283d839621cf361fa45)), closes [/github.com/facebook/react-native/blob/master/React/Views/ScrollView/RCTScrollViewManager.m#L40](https://github.com//github.com/facebook/react-native/blob/master/React/Views/ScrollView/RCTScrollViewManager.m/issues/L40)
* **iOS:** restore cookie handling for iOS <= 10 ([#1728](https://github.com/CodinDotTop/react-native-webview/issues/1728)) ([d338cae](https://github.com/CodinDotTop/react-native-webview/commit/d338cae57ad9c9bb659de8ca5af32ccad980ba05))
* **iOS:** Send cookies with resource requests ([#1803](https://github.com/CodinDotTop/react-native-webview/issues/1803)) ([1f089ba](https://github.com/CodinDotTop/react-native-webview/commit/1f089baa40a04f9e71ee598c6248da7fc47aef6d))
* **iOS:** signature of the swizzled `elementDidFocus` method on iOS 13 ([68f3c08](https://github.com/CodinDotTop/react-native-webview/commit/68f3c08b549b38219ba963dd2eee7e533c01fd2a))
* **iOS:** Trigger _onContentProcessDidTerminate when removing webview from superview ([#1378](https://github.com/CodinDotTop/react-native-webview/issues/1378) by [@pmusaraj](https://github.com/pmusaraj)) ([9240536](https://github.com/CodinDotTop/react-native-webview/commit/9240536afa4481fa2221cf857e3ced2a3611e902))
* **iOS:** UIWebView Removal ([#828](https://github.com/CodinDotTop/react-native-webview/issues/828)) ([8549be5](https://github.com/CodinDotTop/react-native-webview/commit/8549be5fd0e97c6d0a73a2e8ab154d668beecf44)), closes [#819](https://github.com/CodinDotTop/react-native-webview/issues/819)
* **iOS:** use RCTConvert to convert allowingReadAccessToURL. ([#845](https://github.com/CodinDotTop/react-native-webview/issues/845)) ([c366fdf](https://github.com/CodinDotTop/react-native-webview/commit/c366fdf2e76b263722b48733dfaea2dfeb276b5b))
* **iOS:** webview retain cycle ([#1916](https://github.com/CodinDotTop/react-native-webview/issues/1916)) ([30a53d9](https://github.com/CodinDotTop/react-native-webview/commit/30a53d9480c5ca1a120063622a4c19684fcf6817))
* **iOS:** WKWebView RetainCycle ([#1096](https://github.com/CodinDotTop/react-native-webview/issues/1096)) ([4f4644f](https://github.com/CodinDotTop/react-native-webview/commit/4f4644ffd836253f1f91cebf215f768932746dfb))
* **iOS:** Xcode issues and warnings (no functionality changes) ([#860](https://github.com/CodinDotTop/react-native-webview/issues/860)) ([6cfdd4b](https://github.com/CodinDotTop/react-native-webview/commit/6cfdd4b88c21f0136f2558ab475f7573ae5a2e1f))
* **iOS WKWebView:** contentInset not properly applied ([#603](https://github.com/CodinDotTop/react-native-webview/issues/603)) ([6e79f2a](https://github.com/CodinDotTop/react-native-webview/commit/6e79f2a26f37c90ae9a9cfeb72e4280eda2e2068))
* **iOS WKWebView:** fixed local html files loading on real devices ([#403](https://github.com/CodinDotTop/react-native-webview/issues/403)) ([9c9b7d7](https://github.com/CodinDotTop/react-native-webview/commit/9c9b7d721af30b08ad08769d20635e1ed147f54c))
* **iOS/android getViewManagerConfig:** Fix crash with react-native < 0.58 ([263fc5e](https://github.com/CodinDotTop/react-native-webview/commit/263fc5ec3c4216e94ebba076a2d8ea7559e96f6d))
* **lint android:** Add TargetAPI to onPermissionRequest ([#940](https://github.com/CodinDotTop/react-native-webview/issues/940)) ([0b783da](https://github.com/CodinDotTop/react-native-webview/commit/0b783da0a4a5971a5179529376b812fa6d7f1d35))
* **macOS:** Don't include iOS pull-to-refresh control ([#1636](https://github.com/CodinDotTop/react-native-webview/issues/1636)) ([dbf4659](https://github.com/CodinDotTop/react-native-webview/commit/dbf46593fa542101ffb0f67bf89a3c8ffd1755dd))
* **onShouldStartLoadWithRequest:** android event was missing fields ([#385](https://github.com/CodinDotTop/react-native-webview/issues/385)) ([a25997b](https://github.com/CodinDotTop/react-native-webview/commit/a25997bf65196d3dad857cb07ab8ae89f7a34407)), closes [/github.com/react-native-community/react-native-webview/blob/master/js/WebViewTypes.js#L34](https://github.com//github.com/react-native-community/react-native-webview/blob/master/js/WebViewTypes.js/issues/L34)
* **package.json:** Add license to podspec and update package.json version dynamically. ([#98](https://github.com/CodinDotTop/react-native-webview/issues/98)) ([59b513b](https://github.com/CodinDotTop/react-native-webview/commit/59b513b754df14ae79268d057f32f538806ee97e))
* **package.json:** Warning because peerDependencies >=0.57 <0.59 ([#279](https://github.com/CodinDotTop/react-native-webview/issues/279)) ([#327](https://github.com/CodinDotTop/react-native-webview/issues/327)) ([46286b2](https://github.com/CodinDotTop/react-native-webview/commit/46286b272352bdb2eed0ff14327470c3c393eb60))
* **performance:** Improved `onScroll` to work efficiently on Android ([#609](https://github.com/CodinDotTop/react-native-webview/issues/609)) ([d8743ee](https://github.com/CodinDotTop/react-native-webview/commit/d8743eeed2949f62f0a7bbdfb40b260ed1b7ab3d))
* **podspec:** Lowered deployment target for MacOS to 10.13 ([#1673](https://github.com/CodinDotTop/react-native-webview/issues/1673)) ([f204195](https://github.com/CodinDotTop/react-native-webview/commit/f2041955a2788dfc3a686cf3f2462d878e34ffb5))
* **PostMessage:** Renamed ReactNativeWebview to ReactNativeWebView ([d5fc028](https://github.com/CodinDotTop/react-native-webview/commit/d5fc02838375743d0c5997ff62eb10b557b704ff)), closes [#304](https://github.com/CodinDotTop/react-native-webview/issues/304)
* **semantic-release:** Added Missong devDeps for CI ([1394c7d](https://github.com/CodinDotTop/react-native-webview/commit/1394c7de06eb46a48dfe04176055742933990cf3))
* **semantic-release:** Auto increment package.json ([171f778](https://github.com/CodinDotTop/react-native-webview/commit/171f7781349cd2acfd10e6db9d0079069307b2b9))
* **semantic-release:** Use git plugin to auto commit ([c727dd9](https://github.com/CodinDotTop/react-native-webview/commit/c727dd9848942e9ad6e7eec08dc016eb8ca9650a))
* **styles:** removed unneeded display: 'none' ([91eb7ce](https://github.com/CodinDotTop/react-native-webview/commit/91eb7ce3d18c04feea3945f07f36cf331392c38d)), closes [#473](https://github.com/CodinDotTop/react-native-webview/issues/473)
* **styles:** Removes hard-coded container white backgroundColor ([#478](https://github.com/CodinDotTop/react-native-webview/issues/478)) ([5ec74ea](https://github.com/CodinDotTop/react-native-webview/commit/5ec74ea9bb93f04a90b0e8845d756496fceb6e9e)), closes [#475](https://github.com/CodinDotTop/react-native-webview/issues/475) [#472](https://github.com/CodinDotTop/react-native-webview/issues/472)
* **ts:** Convert ContentInsetAdjustmentBehavior from an enum back to a string union type ([#1536](https://github.com/CodinDotTop/react-native-webview/issues/1536)) ([a48c981](https://github.com/CodinDotTop/react-native-webview/commit/a48c9819c527a467629c4334e6cadbb7bbc80c9b))
* **ts:** onScroll event type ([#1631](https://github.com/CodinDotTop/react-native-webview/issues/1631)) ([84b7177](https://github.com/CodinDotTop/react-native-webview/commit/84b7177d2181ce6527de6a7432f91d52f8cb4be3))
* **types:** Add missing applicationNameForUserAgent type ([#589](https://github.com/CodinDotTop/react-native-webview/issues/589)) ([b06be7e](https://github.com/CodinDotTop/react-native-webview/commit/b06be7e136ceb21217fffcbd728dec4c3776ba31))
* **types:** Add missing applicationNameForUserAgent type in WebViewSharedProps ([#1542](https://github.com/CodinDotTop/react-native-webview/issues/1542)) ([91295e5](https://github.com/CodinDotTop/react-native-webview/commit/91295e5258ee6f431c1112dc5525779c5739e773))
* **types:** Add missing type definitions of the methods ([#442](https://github.com/CodinDotTop/react-native-webview/issues/442)) ([54268ff](https://github.com/CodinDotTop/react-native-webview/commit/54268ff469ce21d3bc5dc5f35d6a282ab1ad75a7))
* **types:** Add new cacheEnabled prop to typescript prop type declarations ([#335](https://github.com/CodinDotTop/react-native-webview/issues/335)) ([ff62c95](https://github.com/CodinDotTop/react-native-webview/commit/ff62c956e34437334015fb0f0ac0c68a1c010821))
* **types:** add showScrollIndicator prop to type file ([#388](https://github.com/CodinDotTop/react-native-webview/issues/388)) ([a364d3e](https://github.com/CodinDotTop/react-native-webview/commit/a364d3ed67c87da76ab5fd6c16b831c43f5bdb0c))
* **types:** android/allowsFullscreenVideo ([#590](https://github.com/CodinDotTop/react-native-webview/issues/590)) ([f8a560b](https://github.com/CodinDotTop/react-native-webview/commit/f8a560ba512d9077787f2281cbcd8c7676892261))
* **types:** Export WebViewMessageEvent, WebViewNavigation for external use ([#855](https://github.com/CodinDotTop/react-native-webview/issues/855)) ([be027da](https://github.com/CodinDotTop/react-native-webview/commit/be027dad1fdf99d6c15573b78a2069d632f2a58b))
* **types:** export WebViewProps for external use ([#457](https://github.com/CodinDotTop/react-native-webview/issues/457)) ([ef709aa](https://github.com/CodinDotTop/react-native-webview/commit/ef709aa82bf5a3a801873d7abdc9347166a278c5))
* **types:** Fixing typing. ([#167](https://github.com/CodinDotTop/react-native-webview/issues/167)) ([65bd972](https://github.com/CodinDotTop/react-native-webview/commit/65bd97219a358eaf2df279f5112aeeaa2ff1395e))
* **types:** Make onContentProcessDidTerminate optional ([#890](https://github.com/CodinDotTop/react-native-webview/issues/890)) ([b010e0e](https://github.com/CodinDotTop/react-native-webview/commit/b010e0e04f04dc067016078f3a9db2bfc8f77a6b))
* **types:** make source html base URL optional ([a1e2368](https://github.com/CodinDotTop/react-native-webview/commit/a1e23689d22cc0ae332fb501c21e5752ed32645b))
* **types:** Remove readonly definition in WebViewTypes.ts ([#1272](https://github.com/CodinDotTop/react-native-webview/issues/1272)) ([3c06d78](https://github.com/CodinDotTop/react-native-webview/commit/3c06d782397ad422b05f504ff61a7d1dbde83016))
* **types:** Update Typescript definition file ([#1597](https://github.com/CodinDotTop/react-native-webview/issues/1597)) ([9dcd108](https://github.com/CodinDotTop/react-native-webview/commit/9dcd108b1fc58964a6dd4a49b99d7656386cdc45))
* **types:** wrong parameter type in onLoadProgress ([#538](https://github.com/CodinDotTop/react-native-webview/issues/538)) ([5892601](https://github.com/CodinDotTop/react-native-webview/commit/5892601c290a83b3c23533c2c7f7b0872986dce9))
* **typings:** incorrect package.json + fix d.ts([#453](https://github.com/CodinDotTop/react-native-webview/issues/453)) ([e2adacc](https://github.com/CodinDotTop/react-native-webview/commit/e2adacc97777a02a75551a142c96931104b14851))
* **UIWebview:** Deprecate UIWebView and add link to issue ([#313](https://github.com/CodinDotTop/react-native-webview/issues/313)) ([4c80240](https://github.com/CodinDotTop/react-native-webview/commit/4c8024047b3a3641d38cf8f378cdbb149c1f5c15))
* **vulnerability:** merge issue ([#399](https://github.com/CodinDotTop/react-native-webview/issues/399)) ([74a2086](https://github.com/CodinDotTop/react-native-webview/commit/74a20865b0443c32f1f5963d7e8c1a924749801c))
* **webviewShared.js:** Support all valid URI schemes and add testing ([#293](https://github.com/CodinDotTop/react-native-webview/issues/293)) ([fb78d13](https://github.com/CodinDotTop/react-native-webview/commit/fb78d131200ef2e20565d010f712cd366e0d960c)), closes [/tools.ietf.org/html/rfc3986#section-3](https://github.com//tools.ietf.org/html/rfc3986/issues/section-3)
* **whitelisted origins:** Prevent handling of un-whitelisted URLs ([0442126](https://github.com/CodinDotTop/react-native-webview/commit/0442126595a27b60c86c97a9ec4a71823d6c3f70))
* **windows:** Add postMessage for Windows WebView ([#1263](https://github.com/CodinDotTop/react-native-webview/issues/1263) by [@kaiguo](https://github.com/kaiguo)) ([e402e73](https://github.com/CodinDotTop/react-native-webview/commit/e402e739eaf2b67987a5ada4af4050f71b93c9fe))
* **windows:** Check UAP contract version before calling FrameworkElement.IsLoaded ([#1858](https://github.com/CodinDotTop/react-native-webview/issues/1858)) ([ac8eb97](https://github.com/CodinDotTop/react-native-webview/commit/ac8eb97910212e64930b5f3a72142f062ef71329))
* **windows:** Fix ARM/ARM64 support ([#2044](https://github.com/CodinDotTop/react-native-webview/issues/2044)) ([e3e6e68](https://github.com/CodinDotTop/react-native-webview/commit/e3e6e6841adb5316445fb9ce524d85a357da8c56))
* **windows:** Fix windows local asset path ([#1335](https://github.com/CodinDotTop/react-native-webview/issues/1335) by [@kaiguo](https://github.com/kaiguo)) ([20a3f90](https://github.com/CodinDotTop/react-native-webview/commit/20a3f90c0f0b24c59ab6b31dc981e9e4f1c0473b))
* **windows:** Fixes ScriptNotify and InvokeScript ([#1354](https://github.com/CodinDotTop/react-native-webview/issues/1354) by [@benhamlin](https://github.com/benhamlin)) ([81e0360](https://github.com/CodinDotTop/react-native-webview/commit/81e0360edea465db9cba97240f37e8e29e0d6f1b))
* **windows:** Navigation to ms-appdata and ms-appx-web local file request ([#2098](https://github.com/CodinDotTop/react-native-webview/issues/2098)) ([4f89408](https://github.com/CodinDotTop/react-native-webview/commit/4f894083cabfb9f55f1b9bc8507c98a6e361ffa9))
* **windows:** react-native.config for non windows platforms ([#2046](https://github.com/CodinDotTop/react-native-webview/issues/2046)) ([2eabfa3](https://github.com/CodinDotTop/react-native-webview/commit/2eabfa3d4a5471b9d3890c4cb3035b0c97c4a8fa))
* **windows:** Resolve Deploy Issue ([#1850](https://github.com/CodinDotTop/react-native-webview/issues/1850)) ([ad702f5](https://github.com/CodinDotTop/react-native-webview/commit/ad702f57f16eb0630af6e4fa34416d06b27a8552))
* **windows:** Resolve Missing Deploy Target ([#1716](https://github.com/CodinDotTop/react-native-webview/issues/1716) by [@chiaramooney](https://github.com/chiaramooney)) ([8bd0b41](https://github.com/CodinDotTop/react-native-webview/commit/8bd0b41381a981845222d3eff059b62c6a1449d4))
* **windows:** Simplify project structure, fix arm64 ([#2211](https://github.com/CodinDotTop/react-native-webview/issues/2211)) ([aafa899](https://github.com/CodinDotTop/react-native-webview/commit/aafa8991f5e94e7fbab51b3a66ef2ffbabc05721))
* **windows:** update Getting Started information for Windows ([92ba4fa](https://github.com/CodinDotTop/react-native-webview/commit/92ba4faad259ae5105cecd86cd2d10f0f7d7395f))
* **Windows:** Move rnpm-plugin-windows to devDependencies. ([#1266](https://github.com/CodinDotTop/react-native-webview/issues/1266)) ([d16746c](https://github.com/CodinDotTop/react-native-webview/commit/d16746c8ea8dbaaf45f6a7f823cdd5a1ba12b241))
* **WKWebview:** Fixed for supporting mediaPlaybackRequiresUserAction option under iOS 10. ([#129](https://github.com/CodinDotTop/react-native-webview/issues/129)) ([c0c0116](https://github.com/CodinDotTop/react-native-webview/commit/c0c0116c80d72f4c52751ace16deb067e6793eba))
* **WKWebview:** Fixed non-working iOS alert. ([#188](https://github.com/CodinDotTop/react-native-webview/issues/188)) ([41d9bdc](https://github.com/CodinDotTop/react-native-webview/commit/41d9bdcce482d9143f08bee093e4ca901051dff2))
* **WKWebview:** Reverts [#134](https://github.com/CodinDotTop/react-native-webview/issues/134), fixes issue where keyboard dismiss would scroll to top ([#210](https://github.com/CodinDotTop/react-native-webview/issues/210)) ([9f37dde](https://github.com/CodinDotTop/react-native-webview/commit/9f37ddea61852f4efc1b11e325fb29eb473110fd))
* **WKWebview:** Surface evaluateJavaScript errors ([#179](https://github.com/CodinDotTop/react-native-webview/issues/179)) ([ec469cf](https://github.com/CodinDotTop/react-native-webview/commit/ec469cf00d72920488d27bdf17af2c6f1fdff56b))
* **WKWebview:** Update webview property when allowsBackForwardNavigationGestures prop changes ([#173](https://github.com/CodinDotTop/react-native-webview/issues/173)) ([4bc1dc2](https://github.com/CodinDotTop/react-native-webview/commit/4bc1dc20fd5f69d79bfffb58ad54f06bce65e75f))
* **WKWebView:** Add "Frame load interrupted" error handling for OAuth ([#147](https://github.com/CodinDotTop/react-native-webview/issues/147)) ([6f61224](https://github.com/CodinDotTop/react-native-webview/commit/6f612242fea912fca33a4926463f3cbe3548164d))
* **WKWebView:** Fix the message handle bug. ([#143](https://github.com/CodinDotTop/react-native-webview/issues/143)) ([2b9292e](https://github.com/CodinDotTop/react-native-webview/commit/2b9292ed1c4c339ac633cec5fbacd24c6bef4e18))
* **WKWebView:** iOS crash when WebView's title is nil ([#521](https://github.com/CodinDotTop/react-native-webview/issues/521)) ([7a91221](https://github.com/CodinDotTop/react-native-webview/commit/7a91221926afbc57ff35c5c9fb64f2f2e4b97534))
* **WKWebView:** resolved crash with WebKit on iOS 9.x. ([#342](https://github.com/CodinDotTop/react-native-webview/issues/342)) ([f27f13e](https://github.com/CodinDotTop/react-native-webview/commit/f27f13e93164c6668360bf18f02a86f388c6063c)), closes [#150](https://github.com/CodinDotTop/react-native-webview/issues/150) [#213](https://github.com/CodinDotTop/react-native-webview/issues/213) [jerolimov/react-native-webview#fix-ios9](https://github.com/jerolimov/react-native-webview/issues/fix-ios9) [jerolimov/react-native-webview#fix-ios9](https://github.com/jerolimov/react-native-webview/issues/fix-ios9)
* **WKWebView:** StatusBar is gone after fullscreen (iOS 12) ([#544](https://github.com/CodinDotTop/react-native-webview/issues/544)) ([c2914a8](https://github.com/CodinDotTop/react-native-webview/commit/c2914a8d7345204997678956ecf076dfbf776cc5)), closes [#62](https://github.com/CodinDotTop/react-native-webview/issues/62)
* **WKWebview Scroll:** Don't allow the scrollView to scroll when `scrollEnabled={false}`. ([#158](https://github.com/CodinDotTop/react-native-webview/issues/158)) ([0e6e92a](https://github.com/CodinDotTop/react-native-webview/commit/0e6e92a7f19c1e968cf852f5e659115895e8f49f))
* **WKWebView Scrolling:** fixed broken scroll ([#372](https://github.com/CodinDotTop/react-native-webview/issues/372)) ([2cef5cb](https://github.com/CodinDotTop/react-native-webview/commit/2cef5cbb3ff5967a8f207b0c54340003ab1abc80)), closes [#371](https://github.com/CodinDotTop/react-native-webview/issues/371)
* **WKWebView.m:** Reapplied [#134](https://github.com/CodinDotTop/react-native-webview/issues/134) with additional checks to tackle unintentional scrolls ([#296](https://github.com/CodinDotTop/react-native-webview/issues/296)) ([3f58b0e](https://github.com/CodinDotTop/react-native-webview/commit/3f58b0e5974b7a65474c7727845ef58037aaf5a9))

### Features

* **android:** Android injectJavaScriptObject ([#2960](https://github.com/CodinDotTop/react-native-webview/issues/2960)) ([447f68e](https://github.com/CodinDotTop/react-native-webview/commit/447f68e700385247ee67640c8fa609ba458bd94c))
* Add clearCache method on iOS ([#3119](https://github.com/CodinDotTop/react-native-webview/issues/3119)) ([0868f91](https://github.com/CodinDotTop/react-native-webview/commit/0868f91b3b9294e4779a2456a1755ed563e37635))
* **android:** Add androidLayerType as prop ([#1588](https://github.com/CodinDotTop/react-native-webview/issues/1588)) ([9ffca8f](https://github.com/CodinDotTop/react-native-webview/commit/9ffca8f9dbbc461d35fd4517c7924617cc4eec11))
* **android:** add minimum font size ([#2279](https://github.com/CodinDotTop/react-native-webview/issues/2279)) ([a12e231](https://github.com/CodinDotTop/react-native-webview/commit/a12e231121e4dad2a5c8c8f0fcbca91c7a76a52f))
* **android:** add props to control pinch to zoom and internal zoom controls ([#2113](https://github.com/CodinDotTop/react-native-webview/issues/2113)) ([b92b986](https://github.com/CodinDotTop/react-native-webview/commit/b92b98637c673fd04a4d40c5ae15aece7578b89f))
* **android:** Add support for injectedJavaScriptBeforeContentLoaded on Android ([#1099](https://github.com/CodinDotTop/react-native-webview/issues/1099) by @SRandazzo and @ [@shirakaba](https://github.com/shirakaba)) ([ac4e05e](https://github.com/CodinDotTop/react-native-webview/commit/ac4e05e0f2a206d662f136244efd03fa05c3425c))
* **android:** Enhanced camera/audio and geolocation permissions ([#1239](https://github.com/CodinDotTop/react-native-webview/issues/1239)) ([9f6037e](https://github.com/CodinDotTop/react-native-webview/commit/9f6037e4b23535633e84bfc8b31434f90870727d))
* **android:** force dark mode ([#2063](https://github.com/CodinDotTop/react-native-webview/issues/2063)) ([19980d8](https://github.com/CodinDotTop/react-native-webview/commit/19980d888d66554875f3ac64b3e8a35bd7ad998b))
* **iOS:** Suppress menu items ([#3082](https://github.com/CodinDotTop/react-native-webview/issues/3082)) ([5cd324c](https://github.com/CodinDotTop/react-native-webview/commit/5cd324c13032696a7184918797842418b4188766))
* Add `onOpenWindow` event ([#2640](https://github.com/CodinDotTop/react-native-webview/issues/2640)) ([933fe19](https://github.com/CodinDotTop/react-native-webview/commit/933fe19a3477d3a01a19c64da2aa051c0d6b0668))
* **android:** Add support for the `capture` attribute ([#2954](https://github.com/CodinDotTop/react-native-webview/issues/2954)) ([966221e](https://github.com/CodinDotTop/react-native-webview/commit/966221e354d27a4c61117afda332566bac1aba62))
* **android:** Introduce setSupportMultipleWindows to mitigate CVE-2020-6506 ([#1747](https://github.com/CodinDotTop/react-native-webview/issues/1747) by [@mrcoinbase](https://github.com/mrcoinbase) and [@kelset](https://github.com/kelset) -- THANK YOU!) ([194c6a2](https://github.com/CodinDotTop/react-native-webview/commit/194c6a2335b12cc05283413c44d0948eb5156e02))
* **android:** remove unnecessary buildToolsVersion ([#2023](https://github.com/CodinDotTop/react-native-webview/issues/2023)) ([998b211](https://github.com/CodinDotTop/react-native-webview/commit/998b211b94214952b0d4ffe19429fad555e54a68))
* **Android:** Implement direct communication between Android code and JS ([#1203](https://github.com/CodinDotTop/react-native-webview/issues/1203)) ([c88e380](https://github.com/CodinDotTop/react-native-webview/commit/c88e3807625d70b3055e413e8d302ff0c15751ec))
* **ios:** Generate history API events on iOS ([#1082](https://github.com/CodinDotTop/react-native-webview/issues/1082)) ([3615296](https://github.com/CodinDotTop/react-native-webview/commit/361529630fbe7e0f743eaa71d72ba3f542553ec2))
* **iOS:** fraudulent website warning setting (previously [#2801](https://github.com/CodinDotTop/react-native-webview/issues/2801)) ([#2994](https://github.com/CodinDotTop/react-native-webview/issues/2994)) ([6d185e6](https://github.com/CodinDotTop/react-native-webview/commit/6d185e689320a9cd42c9f3cf5a51d4f5184e44fc))
* Allow webview to load in background tab ([#2930](https://github.com/CodinDotTop/react-native-webview/issues/2930)) ([40c9807](https://github.com/CodinDotTop/react-native-webview/commit/40c98078939d486d95c27ce83bb2f378e1d13dd6))
* custom action menu on android + improved iOS ([#2993](https://github.com/CodinDotTop/react-native-webview/issues/2993)) ([f2aef66](https://github.com/CodinDotTop/react-native-webview/commit/f2aef667b28ac36ac6b75ec81fc95055a1c5743a))
* debugging enabled prop ([#2937](https://github.com/CodinDotTop/react-native-webview/issues/2937)) ([f9a5277](https://github.com/CodinDotTop/react-native-webview/commit/f9a527753fed972650de5a0e4a5000b278926b9b))
* **android:** Adding downloadMessage as a prop for localization ([#2489](https://github.com/CodinDotTop/react-native-webview/issues/2489)) ([c3f73fe](https://github.com/CodinDotTop/react-native-webview/commit/c3f73fe2accbeeebe64ae7d0c89f9929f7031497))
* **android:** bump up kotlinVersion to 1.6.0 ([#2592](https://github.com/CodinDotTop/react-native-webview/issues/2592)) ([b850d1d](https://github.com/CodinDotTop/react-native-webview/commit/b850d1d7b1f58830763c89146f13b9c777592be9)), closes [#2578](https://github.com/CodinDotTop/react-native-webview/issues/2578)
* **android:** WebView crash handling ([#1480](https://github.com/CodinDotTop/react-native-webview/issues/1480)) ([8a8b7ce](https://github.com/CodinDotTop/react-native-webview/commit/8a8b7ceb981bc524278930ccf3f10fe49e5ec01d))
* **Android:** Handle RESOURCE_PROTECTED_MEDIA_ID permission ([#2732](https://github.com/CodinDotTop/react-native-webview/issues/2732)) ([2711f3a](https://github.com/CodinDotTop/react-native-webview/commit/2711f3a5dc04ba0cdece2fdc3d3473469ad79d55))
* **compatibility:** Support React Native 0.62 ([#1364](https://github.com/CodinDotTop/react-native-webview/issues/1364) by [@jussikinnula](https://github.com/jussikinnula) and [@kaiguo](https://github.com/kaiguo)) ([228f10d](https://github.com/CodinDotTop/react-native-webview/commit/228f10d9176098dd75a5e44739c55b3200727ec4))
* **events:** Add isTopFrame to shouldStartLoadForRequest ([#1537](https://github.com/CodinDotTop/react-native-webview/issues/1537)) ([6a9116f](https://github.com/CodinDotTop/react-native-webview/commit/6a9116f2d19a8cfd76ee691c2d793b34aee963e7))
* **ios:** Add iOS contentMode property ([#1538](https://github.com/CodinDotTop/react-native-webview/issues/1538) by @TheAlmightyBob) ([8b69452](https://github.com/CodinDotTop/react-native-webview/commit/8b694526434133cf17eec6806020b1741efdcdf6))
* **ios:** Add support for `limitsNavigationsToAppBoundDomains` ([#1662](https://github.com/CodinDotTop/react-native-webview/issues/1662)) ([7decc5c](https://github.com/CodinDotTop/react-native-webview/commit/7decc5cff1de221ad729ab16f7b18901dc2f889a))
* **ios:** Apple Pay support ([#1946](https://github.com/CodinDotTop/react-native-webview/issues/1946)) ([30685ed](https://github.com/CodinDotTop/react-native-webview/commit/30685edda045f7ba5d1400b415278e1109436dcd))
* **ios:** Cookie sync improvements ([#2535](https://github.com/CodinDotTop/react-native-webview/issues/2535)) ([4ac0d74](https://github.com/CodinDotTop/react-native-webview/commit/4ac0d746c9420191e4eb7387dadd35a674950f34))
* **macos:** Support File Input On Macos ([#2733](https://github.com/CodinDotTop/react-native-webview/issues/2733)) ([9b7ce57](https://github.com/CodinDotTop/react-native-webview/commit/9b7ce574fcc53c635b532bd8c02e8d8e9cf80a08))
* **windows:** Support headers and cookies in source prop ([#2897](https://github.com/CodinDotTop/react-native-webview/issues/2897)) ([1851ead](https://github.com/CodinDotTop/react-native-webview/commit/1851ead46582aece53884ab12694234e50457b10))
* Fabric support ([#2686](https://github.com/CodinDotTop/react-native-webview/issues/2686)) ([5558e28](https://github.com/CodinDotTop/react-native-webview/commit/5558e28feab2e8bd881450f155e642cf1e66caad))
* improve dummy WebView  ([#2509](https://github.com/CodinDotTop/react-native-webview/issues/2509)) ([2e79a03](https://github.com/CodinDotTop/react-native-webview/commit/2e79a031c81a5d29784a3f57f9a9b44f91f92279))
* make pushState changes trackable on android ([#2929](https://github.com/CodinDotTop/react-native-webview/issues/2929)) ([39ce007](https://github.com/CodinDotTop/react-native-webview/commit/39ce0077f06f1b7dbf91be1302792909ae945029))
* **apple:** userAgent can be changed at runtime ([#2116](https://github.com/CodinDotTop/react-native-webview/issues/2116)) ([2fc86f9](https://github.com/CodinDotTop/react-native-webview/commit/2fc86f9d39e44999499d1de97a48f981fc352e93))
* **auth:** Basic Authentication Support ([#1467](https://github.com/CodinDotTop/react-native-webview/issues/1467)) ([0c42a98](https://github.com/CodinDotTop/react-native-webview/commit/0c42a9812e1bf9515db9ccb2f92fce526536d44e))
* **deps:** Remove upper bound on React Native peerdep ([#2054](https://github.com/CodinDotTop/react-native-webview/issues/2054)) ([6cd000e](https://github.com/CodinDotTop/react-native-webview/commit/6cd000ec9d7135121088d2292c74f7e8994b4d73)), closes [#1935](https://github.com/CodinDotTop/react-native-webview/issues/1935)
* **ios:** Add textInteractionEnabled prop ([#2252](https://github.com/CodinDotTop/react-native-webview/issues/2252)) ([4e0cf9c](https://github.com/CodinDotTop/react-native-webview/commit/4e0cf9ca2538e8cba47f16cff8750c85303f32f0))
* **ios:** adds allowsAirPlayForMediaPlayback prop ([#2410](https://github.com/CodinDotTop/react-native-webview/issues/2410) by [@matinzd](https://github.com/matinzd)) ([eb4e923](https://github.com/CodinDotTop/react-native-webview/commit/eb4e923fb012f1dcb5c5389fb1901ee84e32fa8c))
* **ios:** Enhanced permissions handling to prevent repetitive prompts. ([#2257](https://github.com/CodinDotTop/react-native-webview/issues/2257)) ([cd42aa7](https://github.com/CodinDotTop/react-native-webview/commit/cd42aa7f1110edb13d07978badd6d52e386d145c))
* **iOS:** Add Hardware Silence ([#1218](https://github.com/CodinDotTop/react-native-webview/issues/1218)) ([d4ab332](https://github.com/CodinDotTop/react-native-webview/commit/d4ab332891af2242e663ac2e25f4aa3317945399)), closes [#1140](https://github.com/CodinDotTop/react-native-webview/issues/1140)
* **iOS:** Add onFileDownload callback ([#1214](https://github.com/CodinDotTop/react-native-webview/issues/1214)) ([a6010d9](https://github.com/CodinDotTop/react-native-webview/commit/a6010d93e070d91e7f656cf3edf604515bde586f))
* **iOS:** Add prop autoManageStatusBarEnabled ([#914](https://github.com/CodinDotTop/react-native-webview/issues/914)) ([22a60fd](https://github.com/CodinDotTop/react-native-webview/commit/22a60fd23a9ce396b11f498a6b338bf16510981b))
* **iOS:** Add the pull to refresh ([#1265](https://github.com/CodinDotTop/react-native-webview/issues/1265)) ([a02d88f](https://github.com/CodinDotTop/react-native-webview/commit/a02d88f54f789608c94ba8e53dc2f9ff6c3292f6))
* **iOS:** WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. ([#1119](https://github.com/CodinDotTop/react-native-webview/issues/1119)) ([9cb2f6e](https://github.com/CodinDotTop/react-native-webview/commit/9cb2f6e2f30baa41db47446e03ab9a059852e847)), closes [/github.com/react-native-community/react-native-webview/pull/1119#issuecomment-574919464](https://github.com//github.com/react-native-community/react-native-webview/pull/1119/issues/issuecomment-574919464)
* **iOS & MacOS:** allowUniversalAccessFromFileURLs property([#1730](https://github.com/CodinDotTop/react-native-webview/issues/1730)) ([8d098ef](https://github.com/CodinDotTop/react-native-webview/commit/8d098efce72e2add9ae02aabaa9c6472c1008565))
* **iOS 13+:** automaticallyAdjustsScrollIndicatorInsets prop ([#1077](https://github.com/CodinDotTop/react-native-webview/issues/1077)) ([d46a6d3](https://github.com/CodinDotTop/react-native-webview/commit/d46a6d3c695c2575ec22028c67c9060aa062ff7d))
* **macOS:** macOS Support ([#1164](https://github.com/CodinDotTop/react-native-webview/issues/1164)) ([1e57231](https://github.com/CodinDotTop/react-native-webview/commit/1e572318ec6c9cd1f88be86950564a2d3cbfe1c2))
* **macOS:** Make podspec compatible with macOS ([#1328](https://github.com/CodinDotTop/react-native-webview/issues/1328)) ([2d9b080](https://github.com/CodinDotTop/react-native-webview/commit/2d9b0803e03660e8f19b3e5d531ccb55675f57ed))
* **onError:** Add support for preventDefault when using onError method ([#1706](https://github.com/CodinDotTop/react-native-webview/issues/1706)) ([404e3e6](https://github.com/CodinDotTop/react-native-webview/commit/404e3e69e23d8c73bc4deb688c77b9a1a0bb55f8))
* **refactor:** remove findnodehandle, use function components & codegenNativeCommands ([#2508](https://github.com/CodinDotTop/react-native-webview/issues/2508)) ([6b8e4f3](https://github.com/CodinDotTop/react-native-webview/commit/6b8e4f3f5f3cc006ebca8cb3c7ab692805824685)), closes [#2518](https://github.com/CodinDotTop/react-native-webview/issues/2518) [#2532](https://github.com/CodinDotTop/react-native-webview/issues/2532) [#2517](https://github.com/CodinDotTop/react-native-webview/issues/2517)
* **webview:** Allow javascript to open windows automatically ([#1409](https://github.com/CodinDotTop/react-native-webview/issues/1409) by [@trcoffman](https://github.com/trcoffman)) ([91df544](https://github.com/CodinDotTop/react-native-webview/commit/91df544faef8b1cae7ce29dc8b7b615401f3aced))
* **windows:** Add POST requests, fixes Windows CI issues, and other QOL ([#1926](https://github.com/CodinDotTop/react-native-webview/issues/1926)) ([d352d14](https://github.com/CodinDotTop/react-native-webview/commit/d352d147bdffbc4b55196541749363de32a0cc2c))
* **windows:** Add WebView2 UWP Desktop support ([#2419](https://github.com/CodinDotTop/react-native-webview/issues/2419)) ([5fb7b0c](https://github.com/CodinDotTop/react-native-webview/commit/5fb7b0cff005f2262c24ec6b6b7ccf2189b556e2))
* add prop to allow nested scroll on android ([#2056](https://github.com/CodinDotTop/react-native-webview/issues/2056)) ([6bac272](https://github.com/CodinDotTop/react-native-webview/commit/6bac272a5f9cd2eda122b8d6be2cf80ffacee4b6))
* **android:** add clearHistory, clearCache and clearFormData ([#450](https://github.com/CodinDotTop/react-native-webview/issues/450)) ([4a4f4a2](https://github.com/CodinDotTop/react-native-webview/commit/4a4f4a2c454d818f72fb809a6ea5f33711b37bf6))
* **android:** allowFileAccessFromFileURLs prop added ([#831](https://github.com/CodinDotTop/react-native-webview/issues/831)) ([4db3d84](https://github.com/CodinDotTop/react-native-webview/commit/4db3d84dda6301005b3531a9ab690f194adcf677))
* **android:** Expose cacheMode property ([#895](https://github.com/CodinDotTop/react-native-webview/issues/895)) ([5da5925](https://github.com/CodinDotTop/react-native-webview/commit/5da59251cea7e979f07e877deb555c8c93cf0f8c))
* **android:** fix overflow issues and match iOS default renders ([#472](https://github.com/CodinDotTop/react-native-webview/issues/472)) ([319a86e](https://github.com/CodinDotTop/react-native-webview/commit/319a86e2361ac0161cbe2897a907d43b085029fc)), closes [#466](https://github.com/CodinDotTop/react-native-webview/issues/466) [#194](https://github.com/CodinDotTop/react-native-webview/issues/194)
* **android:** Migrate to Android X ([#520](https://github.com/CodinDotTop/react-native-webview/issues/520)) ([1d6c88d](https://github.com/CodinDotTop/react-native-webview/commit/1d6c88dcf57ecee67a6e7e84a032fc4642e6c1bd))
* **android:** polyfill applicationNameForUserAgent on Android ([#707](https://github.com/CodinDotTop/react…
jaynilson added a commit to jaynilson/reactNative_service_USA that referenced this pull request Sep 11, 2024
…n props change; and can be configured to inject into all frames. (#1119)

BREAKING CHANGE: 
• Props updates to `injectedJavaScript` are no longer immutable.

• `injectedJavaScript` no longer attaches a `jsEvaluationValue` property to the `onLoadingFinish` event. Check out: react-native-webview/react-native-webview#1119 (comment) to migrate with the same behavior.
jaynilson added a commit to jaynilson/reactNative_service_USA that referenced this pull request Sep 11, 2024
# [9.0.0](react-native-webview/react-native-webview@v8.2.1...v9.0.0) (2020-03-17)

### Features

* **iOS:** WKUserScripts (e.g. injectedJavaScript) can now update upon props change; and can be configured to inject into all frames. ([#1119](react-native-webview/react-native-webview#1119)) ([9cb2f6e](react-native-webview/react-native-webview@9cb2f6e)), closes [/github.com/react-native-webview/react-native-webview/pull/1119#issuecomment-574919464](https://github.com//github.com/react-native-community/react-native-webview/pull/1119/issues/issuecomment-574919464)

### BREAKING CHANGES

* **iOS:** • Props updates to `injectedJavaScript` are no longer immutable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

How to enable forMainFrameOnly option in iOS webview
6 participants