James Long, a developer at Mozilla (and proponent of the web), insists that the mobile Web will never compete with native app development. Ever. While Long is intentionally provocative with his prophecies, he may also be correct.
At the same time, it’s increasingly clear that this debate does not matter. At all.
Forrester insists that we’ll go back to the future; that “[n]ative apps [dominated] client server days, but Web apps took over” and “History will repeat itself in mobile.” Maybe.
But if Facebook’s ReactJS is any indication, the future of “native” and “web” is really all about “hybrid.” In fact, this future is already here.
The Web Is “Too Slow”
The problem with web apps, as Long describes it, is that the DOM (the document object model, the API that describes how to programmatically access a document or web page/app) is “too slow,” and will never get faster. To those that think it’s going to get faster, he argues that this claim is
based on nothing. There’s no indication the DOM will ever be fast enough, and if it does happen it’s light-years away on mobile. I’ve seen no technical description of a truly plausible way to make it significantly faster. This is like trying to optimize your rendering loop to render a model with a million polygons, when what you really need to do is reduce the number of polygons in your model.
Which is basically what React Native does, skipping the DOM altogether.
Flipboard, for example, goes this route, as explained in a recent blog post. The reason for going this route, as the company insists, is that “You cannot build a 60fps scrolling list view with DOM.” Bold. Possibly true.
Or, as John Gruber notes, “Flipboard more or less built their own web app framework based on the HTML5 <canvas> element, completely eschewing the DOM and traditional CSS,” which translates into a “scathing condemnation of the DOM/CSS web standards stack.”
Except that it’s not. Not really.
Politics And The Mobile Web
We’re not talking about some grand political declaration that Flipboard and others are making. We’re just talking about “getting stuff done.” It turns out that hybrid approaches to application development are a great way to accomplish this, and always have been.
The reality is that when we say “native apps” we’re already talking about “hybrid apps,” as most apps include at least some HTML. Not because it’s somehow The Right Thing To Do in any moralistic sense, but because it’s how good app developers work.
Take Instagram, for example.
Instagram doesn’t make a lot of noise about the fact that its timeline is a web view, and why should it? Instagram’s developers aren’t trying to fight a political battle; they’re just trying to build a great app. And a hybrid approach generally helps developers do that.
While Facebook CEO Mark Zuckerberg once famously (and wrongly) declared HTML5 was Facebook’s “biggest mistake,” it’s clear that Facebook-owned Instagram missed that memo.
All Hybrid, All The Time
The key to all of this is to stop fixating on how an app was developed and just focus on building great apps.
Hence, while Nic Raboy hums a paean to the virtues of hybrid apps, he gets closer to the truth when he opts to eschew calling out the how of app development and instead focuses on the what of development:
All my applications, native and hybrid, have mostly positive reviews and if you visit the apps on Google Play, you’ll see no reviews include mention about how the application was crafted. This is an important thing to notice because many haters will attack developers on the idea that hybrid applications do not perform or look as good as native applications. This is simply not true. Native or hybrid, if the developer or designer is no good, the application will suffer regardless.
So, yes, he’s right to argue that Web technologies are easy to learn; that hybrid apps are time and cost effective (important given the true cost of developing an app); that it’s possible to deliver high-performance hybrid apps. All of these things are true.
They also don’t matter.
Because what app developers want is to build the best app in the shortest amount of time. Which means hybrid. Almost always.
Today that means interspersing web views throughout otherwise “native” apps. But with ReactJS, it may mean something slightly different.
As VisionMobile notes in a recent report:
In a React Native world, we may be able to go “all in” on the web, which is nice.
However such apps are technically achieved, however, the song remains the same: hybrid. That’s how modern mobile apps are built, even when we call them “native.” Maybe React Native changes the degree to which we build for the mobile web, but it doesn’t change our mostly hybrid ways.
That’s mostly a matter of developer marketing, and it’s just fine.
Image courtesy of Shutterstock