<div dir="ltr"><div><span style="font-size:12.8000001907349px">IPhones are in private mode by default.  When in private mode, they do not allow localstorage.  Any application secured with the pure js keycloak file fails.  When I turn private mode off, the application works.  Will Keycloak be supporting IPhones with the pure javascript client in the future without requiring users turn private mode off?</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">I get the following error in private mode.  The highlighted code is what causes the error:</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><span style="font-size:12.8000001907349px">QuotaExceededError: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota.</span><div><span style="font-size:12.8000001907349px"><br></span></div><div><div style="font-size:12.8000001907349px">Jessicakc.createLoginUrl = function(options) {</div><div style="font-size:12.8000001907349px">            var state = createUUID();</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            var redirectUri = adapter.redirectUri(options);</div><div style="font-size:12.8000001907349px">            if (options &amp;&amp; options.prompt) {</div><div style="font-size:12.8000001907349px">                if (redirectUri.indexOf(&#39;?&#39;) == -1) {</div><div style="font-size:12.8000001907349px">                    redirectUri += &#39;?prompt=&#39; + options.prompt;</div><div style="font-size:12.8000001907349px">                } else {</div><div style="font-size:12.8000001907349px">                    redirectUri += &#39;&amp;prompt=&#39; + options.prompt;</div><div style="font-size:12.8000001907349px">                }</div><div style="font-size:12.8000001907349px">            }</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            <span style="background-color:rgb(255,255,0)">sessionStorage.oauthState = state;</span></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            var url = getRealmUrl()</div><div style="font-size:12.8000001907349px">                + &#39;/tokens/login&#39;</div><div style="font-size:12.8000001907349px">                + &#39;?client_id=&#39; + encodeURIComponent(kc.clientId)</div><div style="font-size:12.8000001907349px">                + &#39;&amp;redirect_uri=&#39; + encodeURIComponent(redirectUri)</div><div style="font-size:12.8000001907349px">                + &#39;&amp;state=&#39; + encodeURIComponent(state)</div><div style="font-size:12.8000001907349px">                + &#39;&amp;response_type=code&#39;;</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            if (options &amp;&amp; options.prompt) {</div><div style="font-size:12.8000001907349px">                url += &#39;&amp;prompt=&#39; + options.prompt;</div><div style="font-size:12.8000001907349px">            }</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            if (options &amp;&amp; options.loginHint) {</div><div style="font-size:12.8000001907349px">                url += &#39;&amp;login_hint=&#39; + options.loginHint;</div><div style="font-size:12.8000001907349px">            }</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            return url;</div><div style="font-size:12.8000001907349px">        }</div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px"><br></span></div></div></div>