Ask HN: Do we still need native apps?

39 points by dzonga ↗ HN
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 ] thread
Yes. For several reasons: The most important of which is, that we are not always online. Be it because we simply choose not to be, because we want our goddamn peace for once, or that we're actually in a place or situation with no internet connection. Sure, some webapps work offline as well, but it won't be the majority, exactly because an always-online state is assumed.

And 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.

How about a Fitness app for example? Yes we do need native apps for a bunch of other use cases you haven't mentioned. In-app purchases also help reducing the amount of ads you'd get on regular websites. I do agree with you in terms of performances and improvements with technologies like AMP, etc. We will get very close to a native app feel in a few years from now. Though, the real offline use cases like a fitness app again would require something fully controlled by the OS on mobile. Oh... security! there we go, another good reason why sandboxed apps are probably useful in certain cases.
rule of thumb is stay away from mobile web unless necessary because of slow browser performance
I don't know about browsers being slow these days ? WebGL2 and the various JS engines V8, Chakra, JSCore
Do we still need web apps?

There's notorious sites like reddit who try to push you to visit their web page, so they can serve you ADS.

In visiting a mobile webpage, an adblocker suffices.

native apps can utilize advertising APIs, of which there's no way to turn off unless you install their $3.99 "Premium" app.

sounds like a very bad excuse to push native apps which can be much greater security hazards than web pages
If you ask me it should be the other way around, do we need web apps at all?

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.

I think 4. applies to Native apps -- if we look at the App Store and the dreams of wannapreneurs it's mostly an App for that. Bet 98% of the apps on the App Store get a $1k in revenue/month
"Bet 98% of the apps on the App Store get a $1k in revenue/month"

That ain't too bad. A handful of apps like that could let a developer live reasonably comfortably.

Hell, if that were true, I'd be making apps. I doubt that any but a small percentage of apps make any money at all.
I meant bet 98% don't make $1k in revenue. my bad
> 1. Most web "apps" actually only work on Chrome, so there's that. So much for the open, standardized web.

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.

Absolutely still need native apps. What we need more of is proper cross platform programming ala Golang. All attempts at shoehorning Web based solutions into this space have been horribly behind the curve, especially on performance.
Web vs Native is a non sequitur. It's really about distribution, control, and accountability. The question should be do we still need closed platforms?
couldn't agree more!
Javascript can be as fast as C, but generally isn't in practice. For games, there is no practical portability benefit, as most of the game developers write things so that most of the game is common code that calls into some wrapper around the native phone APIs.
> Javascript can be as fast as C, but generally isn't in practice.

Can you elaborate or cite

Javascript can’t even be close to as fast as C, nor can it come close to C in terms of memory usage.
So long as mobile data plans continue to suck in most places, I don't see the desire for mobile apps over websites going away.

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 like it when my device (whether a phone or laptop or desktop or whatever) is completely useless without an Internet connection. Therefore, I at least need (or very strongly want) native apps.

I don't, however, need "native" apps that are themselves useless without an Internet connection.

Here's my take:

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.)

YES!

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.

how stable are these apis for even the next five years?
Yes. Web browsers are nice and offer a very low barrier to entry, but native apps have the opportunity to do things better. That could be faster startup, smaller installs, more integrated install management with the OS, better offline experience, more networking options including support for custom udp/tcp tailored to your application, etc.

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.

No. I don't think we do. Writing native apps is a huge waste of time and resources. While the big players in the OS space were squabbling the web browsers snuck in and drank their milkshake.

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.

yeah, I agree too. One of the cofounders of Figma wrote some webGL demos. Damn those things are fantastic. Even Figma too, is an excellent piece of web software that can easily replace too.
> People moan about how it's slow

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.

OK so how is a native application different? You can do the exact same things in a native app.
Because it's possible for a native app to be secure. I can audit it, pay someone else to audit it for me or rely on someone's free audit. I download the code once, and run it many times, rather than downloading a fresh version each time, and hoping the provider hasn't tampered with it. I can even run it offline, on an airgapped computer.

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.

I love electron, and it's definitely leveled the playing field for cross platform desktop apps. However, Electron apps are difficult to do with high performance and low memory overhead. I still think that native matters on mobile, though. I have yet to see any Cordova-wrapped app that works as good as native. There are ways to get native performance and still write in a cross platform manner (React Native, Xamarin, etc).
Can web apps be updated without approval from the appstore or playstore? Just curious, having developed natively, this slowed me down the most.
yeah, just upload code to server! Whatever you've pointed to the url will be the latest and greatest. Seamless updates too
I find this comment quite a bit disturbing. There's something wrong when people start to think that you need approval for putting something on 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).

The shift to from native to web apps has been a disaster in a number of different fronts.

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.

Yes. I build apps/website for a living so here is my thought: PWA is still very early and buggy as hell. I try to ship PWA version of my website and it did not work well under many circumstances

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

I think we do. Especially if we want to take advantage of the new AR and VR apps that are coming to market.
Its great when you can use a service when the vendor is not interested in making an app for your platform, but browsers being so taxing (I'm assuming JS is the culprit here) is one of the reasons my battery doesn't last a full day. Not to mention needless bandwidth consumption on mobile, where data is scarce.
Yes, but their use is relegated to specific purposes.

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.

yes, the most common resolution is still 1366x768 and the most RAM installed is 4GB. For us with their 32GB Ram and i7 processors everything is fine but for the most common user we still need native apps. If you buy a laptop with windows 10 of the shelf for under 500$ which is where most of the sold laptops everything like slack feels like crawling through mud. You even have to manage your Browser tabs or youtube starts to lag. There is no way we are ready to only serve webapps.
(comment deleted)
If you truly care about your user experience you write native apps.

For everything else a hybrid or web app will do.

Im using more native apps than web apps. The shift back to web wouldnt make any sense