<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - WKWebView javascript injection doesn't work if app includes WKAppBoundDomains"
   href="https://bugs.webkit.org/show_bug.cgi?id=227589#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - WKWebView javascript injection doesn't work if app includes WKAppBoundDomains"
   href="https://bugs.webkit.org/show_bug.cgi?id=227589">bug 227589</a>
              from <span class="vcard"><a class="email" href="mailto:katherine_cheney@apple.com" title="Kate Cheney <katherine_cheney@apple.com>"> <span class="fn">Kate Cheney</span></a>
</span></b>
        <pre>Hi, thanks for filing this.

(In reply to jcesarmobile from <a href="show_bug.cgi?id=227589#c0">comment #0</a>)
<span class="quote">> Sample app:
> <a href="https://github.com/jcesarmobile/appboundsbug">https://github.com/jcesarmobile/appboundsbug</a>

> Steps to reproduce:
> 1. Clone the app
> 2. Run the app on iOS 14 or newer (also affects iOS 15 beta 2)

> Expected:
> The background should be red

> Actual behavior:
> The background is white

> JavaScript injection can be enabled back by adding:
> webViewConfiguration.limitsNavigationsToAppBoundDomains = true
> </span >

This is expected. In the blog post we mention: "Once the WKAppBoundDomains key is added to the Info.plist, all WKWebView instances in the application default to a mode where JavaScript injection, custom style sheets, cookie manipulation, and message handler use is denied. To gain back access to these APIs, a WKWebView can set the limitsNavigationsToAppBoundDomains flag in their WKWebView configuration".

<span class="quote">> and adding localhost to the WKAppBoundDomains

> <key>WKAppBoundDomains</key>
> <array>
>     <string>localhost</string>
> </array>
> </span >

This should not be needed. Just to clarify, if you remove this value from the Info.plist but keep limitsNavigationsToAppBoundDomains = YES in the configuration, JS injection does not work?

<span class="quote">> 
> But according to this article
> <a href="https://webkit.org/blog/10882/app-bound-domains/">https://webkit.org/blog/10882/app-bound-domains/</a>, you should not need to add
> localhost as it's loading local assets.


> Also the article says that to enable app bound domains you can just add the
> key
> <key>WKAppBoundDomains</key>
> but that doesn't let the app to compile, you need to add an empty array.
> </span >

This may be an error in the docs. Thanks for pointing this out.

<span class="quote">> 
> TLDR: Adding WKAppBoundDomains key in the info.plist should not disable
> JavaScript injection in apps that load local assets, it should only disable
> it for the external domains that you add in the WKAppBoundDomains list if
> limitsNavigationsToAppBoundDomains is not set to true. But for local assets
> it should always work no matter what the value is and users should not need
> to add localhost to the list.


> The sample app is a simple example, but adding WKAppBoundDomains key breaks
> all Ionic Capacitor plugins as they rely on the JavaScript injection</span ></pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>