A couple of weeks ago, a blog post started circulating about how your app should be a website. I think there are a lot of good points in there, and I agree with most of it. The problem I have is the word should. I would prefer could.

IMO, there are lots of reasons to still go native, at least on iOS—I know nothing about Android. You want system features like widgets, Shortcuts, CloudKit, haptics, etc. Or, and maybe most importantly, you just enjoy building native apps, and that's what you want to do.

There are also a lot of reasons to build a web app. Avoiding app stores is a big one. Pushing updates is easier. They are available to more people.

I asked my wife what she prefers, and she said in general, she finds iOS apps to work better than web apps, but not always. Web apps can be really good. Native apps can be really bad. A lot of companies/developers can't do both well and end up with subpar versions of both. I kind of see it as a focus issue.

I have an idea for a new app, and I keep flip-flopping on if I should build it as a native iOS/macOS app or a web app. I wish it was an easy decision, and we could say "yup, it should be a web app", but it's of course more nuanced. It all kind of depends. I think my app could have some more interesting features if it were a web app, like an API. But, I think I would send too much time making it feel good on iOS, that I should just build it as an iOS app. It frustrates me when web apps do "weird" things that feel out of place on iOS. Web apps can easily function the same as a native app, but they often feel off. I feel like a native app is the experience I want.

But yeah, maybe I do agree that apps should be web apps, but not everything is in place that they could be, and I don't think it ever will be. I don't think we should tell people how to build their ideas. We can suggest, educate, and offer help, but in general, I think you should just pick the technology you are most familiar and comfortable with.

The image is a flowchart that guides the user through the decision-making process of building an app. It presents three options: build a web app, build a native app, or move on with your life.