Ask HN: Do we still need native apps?
Just wanted to know what's everyone opinion on whether we need mobile apps?
My position is for the majority of the cases, we don't based on 1. Browser, CPU & GPU performance across mobiles, even laptops. Most 'native' apps and simple puzzle games or runners can be played well in a browser. Given that we've new browser APIs such as device orientation and game controls etc ?
Then they're notorious sites like Reddit who try push you to download their app, so they can serve you ADS.
45 comments
[ 2.9 ms ] story [ 73.1 ms ] threadAnd even though performance is usually not an issue, battery life is. And most browsers introduce more levels of abstraction than are necessary for the application at hand.
There's notorious sites like reddit who try to push you to visit their web page, so they can serve you ADS.
native apps can utilize advertising APIs, of which there's no way to turn off unless you install their $3.99 "Premium" app.
1. Most web "apps" actually only work on Chrome, so there's that. So much for the open, standardized web.
2. Most web apps track the heck out of everything you do.
3. Most web apps are sluggish and use more resources than they should.
4. Most web apps are like Juicero, expensive solutions to non existent problems.
That ain't too bad. A handful of apps like that could let a developer live reasonably comfortably.
This is completely anecdotal, so I'll volunteer my own anecdote: I've used Firefox for years and basically never run into issues. Sometimes a website will say "We don't support your browser", but if you change your user agent it works fine.
> 2. Most web apps track the heck out of everything you do.
So installing a native app with even MORE access to what you do is a better solution? How about Uber tracking you after you get out of your cab? To suggest this is a "web app" problem is false.
> 4. Most web apps are like Juicero, expensive solutions to non existent problems.
Haha, you are SO RIGHT about this one! One of my smell-tests for a web-app is: "Could your website be reasonably replaced with a spreadsheet?"
It's funny because I LOVE spreadsheets, and simply using a spreadsheet is better 99% of the time.
Can you elaborate or cite
On a different note, I don't see native desktop apps going away since things like games and editing software require serious focus from the hardware. Web versions would be painfully slow.
I don't, however, need "native" apps that are themselves useless without an Internet connection.
Chrome, Safari, Firefox, and Edge all support WebAssembly today. It shouldn't be too long before we see native DOM support in WebAssembly, as well as some rudimentary implementations of UI abstractions on top of that.
I think within a few years, we'll see PWAs being written in various languages -- whether you're a classic JS developer or a hipster with a Go fetish -- and compiled to WebAssembly. PWA functionality is finally starting to be supported by Apple (mind you, it's terrible in iOS 11.3, but it's a start) which is great news. Web is still a questionable delivery mechanism for PWAs as they can be heavier (especially if people start compiling their own runtimes into their packages -- great opportunity for CDNs here I think!), but web delivery is just one way to do it. And it's not even that bad.
There won't be a separation between native and web: you'll have a project compiled to WebAssembly that is either delivered via the web, or via the Play Store/App Store/Windows Store. This is great news for devs and Microsoft (or any other company struggling in the mobile market because of the apps problem.)
Performance with javascript can approach native code, but it isn't as fast as it yet. In addition, it takes up more system resources (ram/cpu) making it so that you need more of said resources and more power is drawn (which is especially problematic on mobile devices, where battery is limited).
To the extent that it is possible to block ads in a browser, it is also possible to block said ads in a mobile app.
Certainly it's possible to make a native app that is worse in these aspects, and some of these may become more addressable by web platforms in the future.
It also depends on your target market and budget. Developing countries still have plenty of devices with very little CPU or RAM. But targeting multiple native platforms is a lot of work, and different versions of the same platform can also be painful.
Browsers / web apps are a more portable, and more productive method of distributing GUIs. Full stop.
When deciding to go native or not, you have to decide: Will you hire several designated IOS application developers, several Android application developers, and have them re-implement your website? Or will you hire the equivalent amount of front-end engineers and have them collaborate and develop the codebase together using a shared toolkit?
People moan about how it's slow, but they tend to miss the point: I don't work for a "writing native apps and make the apps fast" company. I work for a software company that builds a product and sells it to users. Developer familiarity == Speed == Money
And really: Do you honestly believe spending 300k a year on engineers to re-implement the same shit we've already written, but in a different language with completely different semantics is a good investment? Rewriting all of the work we've ALREADY done for our mobile view in CSS and HTML and Javascript in Objective-C and Java?
Unless you're writing software with INTENSE graphical requirements, and even THEN there is webgl, writing a native app brings no value. You could spend that time optimizing your website written in JS you've packaged as an IOS/Android app. Or, I don't know, implementing new features and actually bringing value to your company.
PWAs are much slower, but as time goes on this will be improved.
As for the electron haters: Show me a more productive way to implement GUI applications. Show me the applications and frameworks that are putting out GUIs that look even remotely as good as the Electron applications.
I think we're going to see a rise of PWAs and apps that are simply web browsers in disguise.
Edit: I'll also add that the "not always online" or "bandwidth" argument is bunk. Crazy idea: Package your web application as an app, and include it's dependencies and everything it needs to run. Once you do that, the "download once" advantage of a native app is bunk.
No, I moan about how it's an abuse of my privacy, an abuse of my security & an abuse of the web itself.
Web pages which use JavaScript enable all sorts of malicious nastiness which plain websites do not. They are impossible to properly secure (in that I get a new version every time I open it up). They are not what the WWW was meant to be.
No thank you.
And a native app is using the APIs of its platform as intended, rather than violating its entire raison d'être, like single page apps violate the Web.
This also sounds like something sinister from the 'well-intentioned' but misguided politician's playbook: Have every piece of content on the web approved beforehand to fight terrorism (or whatever other pretext du jour).
1) Performance. A Visual Basic 6 app on a 500 MHz system with 256 MB of ram was much more smooth, with less lag and instantaneous response than a modern web app on a 4 core 3 GHz machine with 16GB of RAM.
2) Cost. In the past, once you had purchased the binary it would continue to work basically forever as Microsoft did a great job with keeping Windows backwards compatible. Now, software has become a service that you have to pay for every month. If you don't pay, you can't log in to the web app. In addition, if the web app made changes you didn't like, too bad. If the web app is discontinued, too bad. Also, if you think that the cost is better because you are using "free" web apps, you are paying with your privacy.
3) Lock-in. With native applications your data was on your machine. Even it it was a proprietary format, if you tried hard enough, you could defacto reverse engineer the format since you had access to both the file itself and the machine code. Now, your data is not stored on your machine and the web app controls access to your data.
4) Privacy. With a native app, you could do all your computation and data manipulation on your machine, even disconnecting it completely from the network to make sure your sensitive information did not go where you did not want it. With a web app, you are of necessity sending your data to someone else to process, and you have only their word that they won't do anything bad with it.
5) Software Freedom. Web Apps basically did an end around on the GPL and LGPL. With native apps, if they used GPL or LGPL libraries they would have to inform you and you either had the whole source code (GPL) or the option of modifying the library and using it with the application (LGPL). With web apps, they don't even have to tell you if the backend is using GPL software and you have absolutely no way of inspecting or modifying that GPL software that you would have had with a native app.
I also build a React-native app. Although the experience is absolute amazing, it is a little bit laggy compare to other native app (and beautiful animation is a pain)
So yes, for now we still need native apps
With business applications in particular, which often are mostly about entering, analysing and moving around data, native apps don't really make sense anymore.
The web is by far the superior platform (among other aspects) when it comes to relatively easy and scalable software delivery and maintenance.
For everything else a hybrid or web app will do.