Hacker News new | past | comments | ask | show | jobs | submit login

You get a lot of features, but not all of them. We've just fully migrated a web app to a native app. Reasons:

1. Camera is an absolute pain on web - you can take photos, but when you want to deal with things like EXIF data, cropping, zoom, and every device has multiple front cameras now.

2. File systems are a pain. Where does it go when you download? Are you planning on using a cache? Offline database? OK, great, your hack works. Now try again with the new Android 10 scoped storage.

3. Can't easily handle things like calls.

4. RAM usage by browsers can be massive, this is part of the reason for the lag.

5. App Store optimization is easier and more effective than SEO. You can create a shell around your app, sure but you still should upload it and you have to go through quality control processes.

6. DOM manipulation and UI is much harder than on native. If you're using a template, it works, but if you want custom UI, it's a lot easier to control on an app. Even small things like toasts. CSS is hard enough on desktop, try web browsers. And then create a "back stack" on top of your app.

7. You can use something like Cordova, but bits and pieces go obsolete every few months. And making Cordova plugins is an absolute nightmare. I did something in 3 days native recently which I couldn't do in 3 weeks previously.

8. Multithreading, e.g. an app that supports chat or a download queue.

Pros of web app:

1. Prototypes and MVPs are a lot faster. npm has most utilities. And there's custom templates for everything.

2. It's easier to integrate other web functionality, e.g. Facebook posts and TikTok.

3. Architecture is "flat" on a SPA. So you can access something 3 pages back easily, or do something like change data on every page. Whereas native architecture often has several layers. Duck typing is a nice feature.




I'd say the biggest advantages of the web app are:

1. Cross-platform. One build and you're done.

2. No store. You just put it on the web. There are no gatekeepers delaying your deployment, and no hoops to jump through.

There are still all of the disadvantages you mentioned, especially when it comes to the device itself. But a huge range of apps don't require any of those. A basic game or CRUD app should Just Work.

As much as working in the JS ecosystem sucks, it's a real pleasure to type "create-react-app" and "netlify deploy" and have a Hello World app available on every device in literally seconds.

You're gonna find yourself coming up against the limits of that right quick, and then you're going to wish you'd written a native app in the first place. Sooner rather than later, depending on the application. But for a lot of ideas, you can live within those limits, and it's really cool.


Deploying websites/webapps can take minutes.

But deploying native apps to the Apple/Android stores can literally take days/weeks to verify accounts and approve specific app builds...


and using a website takes seconds, for a app I need to consider downloading it, giving it permissions to do stuff/track me only to be disappointed half the time.


Agreed. It takes about 15 min to build and publish an app, and an hour to get it approved. If you're doing rapid prototyping or if you only have an hour to spare a day, that's a world of difference.


I once built an app with React that worked reasonably well on my iPad, my Android phone, and my Mac.

I tried to port it to native Swift. It was demoralising after going through all the trouble of rewriting it in Swift, the app that works on the iPad, doesn't work on the Mac.


Agree on the differences. However, maybe it's my sampling too small. Most of the apps I saw from ads don't need the native-exclusive functions. (e.g. listing app of restaurant and house renting and selling)


Many of those shouldn't be apps at all.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: