Offline behaviour is the clearest dividing line.
A native app can store data locally and keep working with no connection at all, syncing when it returns. A web app is fundamentally dependent on a live connection, even with modern offline tricks layered on top.
Device access is deeper and more reliable natively.
Camera, GPS, push notifications, and background processing are available to a web app only through more limited, often less consistent browser APIs. A native app gets first-class access to all of it.
Distribution costs more, but earns more trust.
A native app requires app store approval and a real install decision from the user, which is friction a web app doesn't have. In exchange, it gets a permanent icon on the home screen and access the user has explicitly granted.
Performance differences are smaller than they used to be.
Modern web apps can feel very close to native for straightforward interfaces. The gap widens fast for anything involving animation-heavy interaction, camera processing, or offline-heavy field work.
The decision should follow the actual use case.
If your team needs reliable offline access or deep device integration, native is the honest answer. If they mostly need fast, well-designed screens with a live connection, a web app is often the better use of budget.
Bring your workflow, your constraints, and the outcome you want to achieve.