2-3x quicker than a UIWebView • Changes and fixes applied to Safari usually not ported into UIWebView • Clunky, crashy, leaks memory • Scrolling blocks images loading (though we recently found a hack to fix this) • Different rendering and JavaScript engine than Safari (i. e. not Nitro)
is excluded because Apple wanted to make hybrid apps less performant and force everybody to use their native platform • Real answer: ◦ Excluded due to security reasons ◦ Running a Just-In-Time (JIT) compiler requires marking pages in RAM as executable - iOS does not allow this out of security concerns (except in Safari)
• 60fps scrolling • Better communication between Swift and JS (we haven’t experimented with this yet) • Since we are sharing the JS engine with Safari, WKWebView should be better maintained and more reliable
tonne of great documentation! • What was formerly a single class (UIWebView) and protocol (UIWebViewDelegate) is now 14 classes and 3 protocols (WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate) • Other than class docs (and stackoverflow), no official “How-To WKWebView” from Apple
load into a /tmp directory that we can load files from • Alternative: copy files we need to a local webserver running on the device • Appears to be fixed this in iOS 9
web views • POST bodies are missing in NSURLRequest sent to delegate methods • Solution: ◦ for now leave it -- in line with Android behavior ◦ future -- potential hack to let the post navigate, extract the result and put that in a new webview • Good news: WebKit forums indicate this is a bug and there seems to be a bit of traction
doesn’ t participate in state/preservation/restoration • Previously used to reduce memory footprint and prevent crashes • Solution: build our own by saving the last known URL
documented way of doing custom analysis of SSL certificates is broken ◦ webView(_:didReceiveAuthenticationChallenge: completionHandler:) is *never* called • Important for internal use • No workaround
Turned on in the Catalogue app • Hoping to try it on next release of ThinkGeek and hopefully Ritchie Bros. • Working on tests and seeing what is fixed in iOS 9 -- feeling solid for iOS 9 • Goal is to maintain both for now