Web vs Native Apps

The big promise of web 2.0 was that eventually all applications would run inside a web browser and that native apps would go away. This was in early 2000s. We’ve come a long way since then but native apps have not gone away - even by a long shot. Especially the birth and rise of mobile threw a wrench in this vision, but there are some early signs on the horizon this is going to change.

The IOS and Android mobile platforms have been taking over the world. 51.3% of internet traffic originates from a mobile platform and the developing part of the world depends even more heavily on mobile platforms. But at the same time, mobile platforms have been killing the web. 60% of mobile usage is inside apps nowadays and it’s growing. Apps are different because they are built using lower level programming languages like Objective-C (IOS) and Java (Android). Because of their low-level nature, they're more costly to develop for plus two different versions need to be maintained to support both platforms. Luckily - you could argue because of this - we only ended up with two mobile platforms.

The reason the web took off the way it did was because it could be accessed from any device and OS. A web browser was enough. This allowed for websites to quickly scale because the distribution via web was easy, fast and enormous.

But the web - an open platform governed by open standard bodies - was not ready to run on underpowered mobile platforms. The same applied to mobile networks at the time. When the iPhone came out in 2007, it supported AT&Ts 2G EDGE network with a maximum transfer rate of 200kbps. The first iPhone had a battery-friendly downclocked Samsung ARM CPU which was 100x slower than today's iPhone 7 and IOS Safari’s web performance increased by 200x. Not only the mobile hardware improved significantly over time, but also the mobile networks are significantly faster to the point that in many places of the world there’s no significant speed difference between fixed and wireless connections.

RDS - iPhone CPU performance.png

In the early years of the iPhone, Steve Jobs was bullish on the future of the web evidenced from his controversial Thoughts on Flash open letter to Adobe. Early on IOS browser Safari came with features out of the box to bring web sites into IOS by allowing them to run full-screen and give them a place on the home screen with an icon like any other (native) app. These features still exist today.

But Apple and the rest of the world quickly realized that to get the necessary performance, 3D acceleration, grant access to local features like the camera, GPS and storage, it was necessary to move to native apps. Apple introduced their IOS app store in 2008. Apple’s App Store is an enormous success and at the same time moved the focus away from the web as a viable app platform.

W3C, ECMA and others kept chugging along and kept moving the web standards forward. We are now at the 5th standard for HTML, 7th edition of the JS/ECMAScript standard, 4th level of CSS and version 2 of WebGL. Javascript was famously created in 10 days by Brendan Eich because Marc Andreessen wanted to augment the web by giving their browser some limited dynamic capabilities and it needed to be done before the Netscape 1.1 release. This happened in 1995.
The web has come a long way since then and now has 3D support, local storage, notifications and access to location services.

If we would imagine a world where a mobile computing devices has access to unlimited processing power, unlimited storage and unlimited network speeds, there is certain a great case to be made that the web will come back as the platform for apps. As shown earlier, we are moving towards a world like where the resource constraints - which made native applications become the default choice - are no longer an issue.

It stands to reason that the web will become as prevalent as it has become on the desktop and arguable even bigger than it is today. In 2009 Apache Cordova - formerly known as NItobi and PhoneGap - was born. Cordova was one of the first tries to work towards unifying mobile platforms using the web, but is no longer alone in morphing the web into native app development. In 2013, the Ionic and Electron frameworks came to life. All of these open source projects have the same goal which is to marry web standards (JS, CSS, HTML, WebGL) with native underlying platforms breaking free from the constraints of the generic web browser. They tie web technologies with a native experience on each supported platform while allowing the same application without modification live on both platforms.

The benefits are clear. A single app which can run on any platform with little to no modifications built using a higher level programming language is going to make it cheaper, faster and easier to build and distribute new apps.

The problem of native app development is exacerbated by the large number of display sizes in the market today. Apple’s IOS lineup from iPhone SE through iPad Pro there are 6 different display sizes to support. Android is in a similar situation. The larger tablets move into desktop territory.

Talking about desktop territory, Google's strategy to bring Android to ChromeOS laptop feels like an impatient move to make that computing platform more relevant. In many ways ChromeOS was meant to do the same by graduating web applications to become standalone applications on a computing platform. Much of the strategy to bring Android applications to ChromeOS stems from the positioning of Chromebooks as lower-end alternatives to their Windows and MacOS counterparts. It’s unclear to me if that was a conscious decision by Google or the market - namely OEMs designing and manufacturing Chromebooks - decided to position chromebooks that way. Though Google has been very successful in marketing their Chromebooks in the education market.

Below the surface there's an additional opportunity. When it becomes easier to develop for multiple platforms simultaneously, it also creates opportunities for new platforms to emerge. For instance, Microsoft has been struggling to get a foothold in the mobile market and much of that can be attributed to their slow response to the mobile computing platform. When they were moving, it was already too late. The native app ecosystem proved an enormous hurdle to cross and app developers were not waiting to support another platform. But there's a possible future where that hurdle is going away and that is an enormous opportunity for Microsoft and others.

There's a fair chance that we look back on the era of the native mobile apps as abomination of the norm.