A brief recent history of native (apps) versus web(sites)
Back at Macworld 2007 during the launch of the first iPhone, Steve Jobs announced Safari as one of the key features of the device, giving users access to the web and allowing developers to build applications for iPhone “using the most modern web standards.” Well, as it turned out, the latest web standards weren’t good enough for developers (at this point in time, Internet Explorer had a whopping 67.7% browser market share!). In response to this, less than a year later Apple launched the App Store and iPhone SDK, allowing developers to create native apps for the iPhone.
Steve Jobs launches the iPhone. Source: Engadget
Thus the app boom hit, an industry now worth more than $50bn. Google and Microsoft followed suit, launching their own app stores on their respective platforms, and there are at least 8 native mobile app stores live today. There’s an app for just about everything with an estimated 5 million apps now in existence.
Since 2007 things have changed a lot. The app boom lead to a huge number of new, smaller (read: mobile) devices with the ability to access the web. The range of devices with internet browsing capabilities broadened, ultimately leading to mobile devices overtaking laptops as the most popular device for browsing the web. Traditional websites didn’t work too well on these devices, so we started to see mobile-optimised versions of websites cropping up as “m.*”/”mobile.*” subdomains, or using responsive design, enabling a great user experience on mobile devices.
Across the spectrum of devices and platforms available today, the lowest common denominator is web. Web has a 3.6x higher reach than native apps, so it makes sense for businesses to provide a website rather than an app, especially because you’d need to build and maintain at least two apps (Android and iOS) and have a website anyway for non-mobile users. But, native apps are what really provide a great user experience on mobile, enabling offline functionality, push notifications for re-engagement and background processing – all features typically not available on websites, but very worthwhile having. So you can see how there’s a bit of a predicament for businesses here – which is better, a website or an app? Do I need to build a website and multiple apps?
Before we go any further, let me give you a bit of background about myself and my team. In September 2015 I joined Kainos’ Applied Innovation team, having graduated from a Software Engineering degree at Queen’s University Belfast and completed Kainos’ trainee development program. The Applied Innovation team has a number of roles within Kainos, and one of those is to create a competitive edge in digital solutions. This includes researching new and disruptive technologies such as virtual reality, machine learning, and the subject of this blog – something called “progressive web apps“, a set of technologies making websites more competitive against native apps. Last year my colleague Alex Turnbull spent time proving the benefits of the web over native apps, publishing some blogs along the way, and even delivering a talk at this year’s SXSW in Austin, TX. In a sense, our research in this area has been communicated already, having made its way into projects for our customers, but there is value still to be discovered, proved and communicated.
Alex and I have both worked on progressive web apps in Kainos’ Applied Innovation team
So what are progressive web apps? A relatively new concept, the term was first coined by Google’s Alex Russell just over year ago. They are websites that make use of features you would expect from a native app such as offline functionality, push notifications and background processing, and examples of existing progressive web apps include Financial Times, Flipkart and Pokedex.org. They are web’s big opportunity to finally overtake and replace native apps because they give users a great user experience without having to install an app. We believe they solve the problem of web versus native.
Progressive web apps aren’t just some niche technology that’s only supported by a small subset of devices. Last year Google promised a European Chrome Dev Summit in the summer of 2016, but they had to break that promise due to the level of investment from other browser vendors in progressive web apps. Rather than a Chrome-specific conference, Google decided to put together an inclusive Progressive Web App Dev Summit, inviting speakers from all major players in the browser space (not all accepted the invite…if you’re wondering which browsers had presence – representatives from Chrome, Edge, Firefox, Opera and Samsung Internet all gave talks at the summit). I was lucky enough to be in attendance at this fantastic event, with Kainos flying me over to Amsterdam for the two-day summit in June.
A personal shot from the summit – yes I got a front row seat!
Throughout the summit there were many talks given by both browser vendors and businesses making use of the latest web technologies. I’m going to hone in on four key messages that I took from my time at the summit, but there were so many educational, insightful and inspirational moments throughout and I’d encourage you to watch some of the talks (find them here).
As I said before, it was more than just a Google/Chrome conference, with speakers from four of the five most used browser vendors present. It was exciting to see such enthusiasm for progressive web across from all of these developers, giving us further ammunition against native apps.
One of the biggest benefits of developing for web is having a single app that works across multiple platforms, whereas developing a native app typically requires multiple code bases to support differing platforms. The UK government’s guidelines for digital applications strongly favours web over native because of this. With progressive web apps, developers bring more advanced capabilities to browsers, but this is actually somewhat of a concern against the “single app” advantage. Without standards, feature implementations could vary widely, ending up with developers having to support per-browser applications. However, one thing became clear to me during the summit – browser vendors are working together to agree on standardised approaches for these new capabilities, which in theory will minimise variation in implementations.
Progressive enhancement is a key component of progressive web apps. If a browser supports an awesome new feature, don’t punish your users because not all browsers support it. Instead, make that feature available to users who can support it, but at the same time make the user experience for all other users as good as it can be. Something to note about this however: users should experience consistently themed applications regardless of device or browser.
If you didn’t already know, India is experiencing extreme growth in Internet users with an estimated 65 million new users in the last 6 months, most of those being mobile users. Another colleague of mine, Justin Graham, explored a use case for emerging markets, where data charges are so high that users often put their phone into airplane mode, and actively take measures to avoid downloading apps. Justin’s use case showed how progressive web app technology could be used by ad networks to optimise ad delivery.
Because of high data charges, progressive web apps have been given a free ticket to be picked by customers over apps. A number of companies taking advantage of this situation gave talks at the summit, including Flipkart, AliExpress and Konga. Flipkart has tripled the average length of time a customer spends on its site, conversion rates for new customers of AliExpress increased by 104%, and Konga’s progressive web app cut data usage for customers by 92% (compared to installing their native app).
Technology doesn’t matter
Jeremy Keith posed a question to a panel of web experts at the conclusion of the summit, something to the effect of “What makes an app an app?” Alex Russell responded with (what I consider) a great answer; an app might be developed with Java, C++ or some other technology, but does the user care? (Of course, in certain situations, a particular technology will perform better for a user, but that’s besides the point here.) An app, to the user, is a familiar, standalone experience that performs a particular function. They don’t really care, as long as they get the best user experience possible. What if you could use an app without having to install it? That’s what progressive web apps provide (instant apps are cool but Android only!).
Paul Kinlan introduces Jeremy Keith and the panel
A great thing about native apps is having a centralised marketplace, such as the App Store or Play Store. As a developer, you can submit your app to the store where it is indexed, allowing users to discover your app even if they don’t know it exists. With websites this is actually pretty difficult, even with advanced search engines. During a panel session at the summit, a member of the Microsoft Edge team came forward to talk about Microsoft’s approach around discovery, whereby they actually list web apps in their Store (read here for more information). In response to this, one of Google’s engineers praised Microsoft for taking a lead in this, also stating that the Chrome team had discussed similar approaches (read here for more information). Earlier this month Google announced the end to their Chrome app store, recommending that current apps should be migrated to progressive web app technology – a further sign of Google’s commitment to the progressive web.
Speaking of app stores, that’s how many developers and OS vendors monetise software. This is a problem for progressive web apps that I don’t think has been solved just yet: how do you sell a web app? Perhaps Apple’s web payments API will be a stepping stone towards this, with more and more subscription models emerging for online services, lowering the payment barrier.
My team is continuing to research progressive web apps, and what they mean for Kainos and our customers. Kainos is giving me the opportunity to share my knowledge on the subject on a much bigger stage, as I’ve submitted a talk for SXSW 2017 with Alex on the subject, titled “Progressive Web Apps – The Future of Apps.”
Kainos is giving me the opportunity to speak at SXSW 2017 (pending acceptance by SXSW)!
I can’t finish without providing a few pointers to get started with building a progressive web app. The good news is you don’t have to start from the ground up; existing web apps can be progressively retrofitted with progressive web app features. A number of vendors were pretty excited about web manifests, and I would recommend this as the first progression you should make. By including one of these simple manifest files in your site users will see some nice enhancements, for example if a user adds your site to their home screen it will launch as a standalone app. You don’t even have to make this file by hand because there are several tools to generate it for you; try the Web App Manifest Generator. Apart from the manifest, Service Workers are next on the list but unfortunately that will take a bit more work. Service Workers enable the really cool features like offline functionality, push notifications and background processing, so I’d recommend looking into it. To set expectations on Service Worker compatibility, check if it’s ready here.
I firmly believe that progressive web apps are the future, and with full browser vendor support, progressive web apps will blow native out of the water.