Here at Ionic, we believe speed is a requirement, not a feature. We take pride in being performance-obsessed, because we believe speed is key to providing a first-class user experience. Most of the apps at the top of the App Store charts all have one thing in common: They’re all very fast and fluid! Ionic apps have always provided a quick, seamless experience, but we’ve come up with a simple way to make them even faster on iOS.
Ionic apps deployed using Cordova run within low-level, bare bones web browsers called “webviews”. Cordova utilizes each platform’s native webview in order to deploy the webapp within a native app wrapper.
iOS’s default web browser is Safari. Behind the scenes, Safari utilizes a webview. Currently, the iOS platform provides two different webviews that can be used. There’s the older (and slower) webview, called “UIWebView”, and the latest and greatest, called “WKWebView”. WKWebView is better and faster than UIWebView in every way. In addition to being significantly faster and smoother, Apple is actively providing updates to it in each iOS release. The Safari app takes advantage of WKWebView, which may explain why webapps seem more performant in Safari vs. within a Cordova application. Due to various incompatibilities and technical challenges, Ionic apps have been restricted to run in the several-year-old UIWebView.
But today, we have some great news! One of our awesome engineers, Manu, has been working hard to bring WKWebView to Ionic apps and is working to bring the new plugin into Cordova! The new plugin will work with both Ionic V1 and Ionic V2 apps. In fact, it should work with any iOS Cordova build!
So What Does This Actually Mean?
You can look forward to noticeably faster and smoother Ionic apps on iOS. The new WKWebView plugin solved many of the technical challenges Cordova builds faced surrounding XHR requests and CORS, storage issues, and some DOM exceptions. This plugin upgrades the interface between native side and web, which allows CORS to work properly. This means XHR requests that point to
file: are intercepted and redirected, while leaving normal XHR requests to flow the normal path.
“The biggest change is in stability: with WKWebView’s out-of-process rendering, when the web view crashes or runs out of memory, it won’t bring down all of Chrome with it. As a result, Chrome crashes 70% less with WKWebView.” – Chromium Blog
We think it’s ready for the Ionic community to begin testing it and help us identify any bugs. The best part is this is a drop-in replacement. No app code needs to be changed!
To install the plugin and begin testing, follow these instructions. The plugin takes about one minute to install and should not impact end users beyond performance improvements. We would love for everyone to test out their apps with the new plugin, and let us know how it goes. We’d like to resolve any issues that arise ASAP.
We’re very excited about this plugin and think it will provide an immediately noticeable performance increase in Ionic apps deployed to iOS. We encourage developers to test and experiment with this plugin, but we recommend avoiding production use until a stable version is released and any security concerns are further addressed. We’re very appreciative of the Ionic community for helping us test out this new and improved functionality. We hope you love it! Thank you!
A Note on Cordova
Going forward, we’re going to be ramping up our contributions to crucial pieces of the Cordova ecosystem. We recently released two new plugins, have been reviewing the existing ecosystem that we’re supporting through Ionic Native, and have a dedicated person on the team working on Cordova plugins and features like WKWebView. We believe the Cordova ecosystem’s best days are ahead of it, and we recognize the responsibility we have in contributing back and making sure that stability and performance are constantly pushed as new technologies like WKWebView are made available. We are making an investment in improving the pieces around Ionic and working with the wonderful Cordova community to make sure our work has the biggest possible impact.