There's a question that comes up in almost every product conversation: should we build an app?
Usually what people mean is a native app. Something in the App Store. A thing that lives on the home screen and feels official. The assumption underneath that question, that native is the premium option and the web is the compromise, is increasingly hard to defend.
Progressive Web Apps don't get the credit they deserve. For most products, they're the smarter build.
What you're actually getting
A PWA is a web application that uses modern browser APIs to behave like a native app. It installs to the home screen. It works offline. It loads fast on slow connections, sends push notifications, and has its own icon and splash screen.
From the outside, users often can't tell the difference. From the inside, you skip a lot of pain.
The 30% problem
When you ship on iOS, Apple takes 30% of every in-app purchase. Want to update your app? Wait for review, sometimes days. Get rejected? You're arguing with a policy document, not a person.
A PWA sidesteps all of that. You ship directly to users, update instantly, and control the relationship end-to-end. For subscription products, marketplaces, anything where the business runs on transactions, that alone is worth taking seriously.
Offline actually matters
Pull up an app on the subway and get a blank screen, and you've lost that user. Not just for the session. The memory sticks.
PWAs can cache aggressively. With a decent service worker strategy, your app works entirely offline and syncs when the connection comes back. Native apps leave that to individual developers. Starbucks built their ordering PWA specifically for this: browse the menu, build your order, no connection required. Twitter Lite cut data usage by 70% and saw 65% more pages per session.
These are the product.
Performance is invisible when it's right
Web apps have a reputation for being slow. That reputation is earned, by apps that load 4MB of JavaScript before showing anything, that block the main thread with analytics, that treat performance as someone else's problem.
Performance is a craft choice, not a platform constraint. A well-built PWA can hit Lighthouse scores above 90 and time-to-interactive under 3 seconds on a midrange Android on 3G. Achievable, if you actually care.
Users leave slow apps and blame the app, not the network. A fast experience is invisible, and invisible is what you want.
One codebase
Native means separate codebases for iOS and Android, often owned by different people. A PWA runs wherever a browser runs: phones, tablets, laptops, TVs. One build, one deployment, one set of bugs.
For a small team or an early-stage product, not maintaining parallel builds is a real, concrete advantage.
Where native still wins
There are genuine edge cases. If your product needs deep hardware access, camera signal processing, Bluetooth pairing protocols, high-fidelity haptics, you'll hit the limits of what browsers expose. Heavy 3D games. Augmented reality overlays. Anything that needs to fully own the device experience.
But for the vast majority of products, tools, platforms, communities, services, those limits don't apply. The constraints that made the web feel like a lesser option have mostly been removed.
Build for the URL
The best digital experiences don't live in app stores. They live at URLs. They're shareable without friction, discoverable via search, accessible on any device without a download barrier.
A PWA is a decision to build something that works for people, on the hardware they have, in the conditions they're actually in. That's what the good ones do.