HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Mobile app development
Mobile apps 7 min read

Ionic, Capacitor and PWAs: when web tech is enough for a mobile app

When a PWA or a Capacitor app is the right mobile choice, what iOS web apps can and cannot do in 2026, and where web tech stops being enough.

· Mobile practice 22 Sep 2026

Web technology is enough for a mobile app when the app is mostly forms, lists, dashboards and content, and does not depend on reliable background work or unusual hardware. Start with a progressive web app (PWA) if you do not need an App Store listing; wrap the same code with Capacitor when you need store distribution or native APIs such as the camera, secure storage or proper push notifications. Choose Flutter, React Native or native when the app lives in the background, talks to Bluetooth devices or needs demanding animation.

What Ionic, Capacitor and a PWA each are

  • A PWA is a website with a web app manifest and a service worker. Users install it from the browser, it gets an icon, opens without browser chrome and can cache itself for offline use. No store is involved.
  • Capacitor is a native runtime from the Ionic team. It puts your built web app inside a native iOS and Android project, runs it in the platform web view and gives JavaScript access to native APIs through plugins. The result is a real app binary that goes through the App Store and Google Play. The current major version is Capacitor 8, which made Swift Package Manager the default for new iOS projects; 8.5, released in July 2026, moved iOS apps to Apple's UIScene lifecycle.
  • Ionic Framework is an optional UI component library that makes web screens look and behave like iOS and Android controls. Capacitor does not require it: React, Vue, Angular or Svelte with your own design system works just as well.

So the real decision is two questions: do you need a store listing, and do you need native APIs the browser does not give you? If the answer to both is no, a PWA may be all you need.

What PWAs can and cannot do on iOS in 2026

Android has supported installable web apps well for years. iOS is where the limits are, and it is where most "can we just do a PWA?" conversations are decided. The current position, checked against WebKit's own release notes:

  • Installation is manual. There is no automatic install prompt in Safari; users add the site through the Share menu and Add to Home Screen. Since iOS 16.4, Chrome, Edge and Firefox on iOS can add web apps to the Home Screen as well.
  • Any site opens as a web app. Since Safari 26 (iOS 26), a site added to the Home Screen opens as a web app by default, even without a manifest.
  • Web push works, with conditions. Since iOS 16.4, Home Screen web apps can receive push notifications and set badge counts. The user must install the app first and grant permission from a tap inside it. A site open in a Safari tab cannot ask.
  • Offline works through service workers, and Safari 27 (released 17 September 2026) added the Service Worker static routing API. Browser storage is still subject to quotas and eviction, so treat it as a cache that can be cleared, not as the only copy of a user's work.
  • Not available: the Background Sync API, Web Bluetooth, Web NFC and a store listing. Safari 27 did not change any of these.

In the EU, Apple briefly removed Home Screen web apps in the iOS 17.4 betas in response to the Digital Markets Act and then reversed the decision, so they work there as elsewhere.

When a PWA is the right choice

We recommend a PWA first when:

  • The users are your own staff or existing customers who can be sent a link and shown how to install it once.
  • The app is a mobile face on an existing web product: a customer portal, an approval queue, order tracking, a simple field checklist.
  • You need to release changes the same day without store review.
  • Push notifications are useful but not critical, and you can live with users installing before they can receive them.

Odoo itself takes this route. Its own documentation recommends the Odoo PWA over its store apps, and the PWA supports push notifications and SSO sign-in.

When to wrap it with Capacitor

Capacitor earns its place when a PWA is nearly right but one of these is a requirement:

  • Store presence. Consumers look for apps in stores, and some organisations only allow store or MDM-managed apps on company phones.
  • Reliable push through Apple Push Notification service and Firebase Cloud Messaging, without asking users to install from the browser first.
  • Native APIs through official or community plugins: camera and photo library, file system, biometrics, secure keychain storage, local notifications, geolocation, barcode scanning, in-app purchases.
  • A real on-device database such as SQLite through a plugin, instead of browser storage that may be evicted. For offline-first field apps this matters; our post on offline-first sync architecture goes into why.

The advantage over rewriting is that the web codebase stays one codebase. The same screens can ship as a website, a PWA and two store apps. When a plugin does not exist, you write a small native plugin in Swift or Kotlin, so you are never completely stuck.

Two cautions. First, Apple's App Review Guideline 4.2 asks for apps that are more than a repackaged website; a Capacitor shell around your marketing site will be rejected, while a real app built with web tech is fine. Second, if you relied on Ionic's commercial Appflow service for cloud builds or live updates, Ionic stopped new sales in February 2025 and says Appflow is sunset on 31 December 2027. Plan your builds in your own CI and choose another live-update provider before then.

When web tech is not enough

RequirementPWACapacitorFlutter / React Native / native
Forms, lists, dashboards, contentGoodGoodGood
Store listingNoYesYes
Push on iOS without browser installNoYesYes
Work while the app is closed (sync, uploads, location)No on iOSLimited; needs native codeBest, within OS limits
Bluetooth devices, NFC, printersNot on iOSThrough plugins, varies in qualityBest
Heavy animation, long scrolling lists, maps with many layersDepends on deviceDepends on deviceBest

Web views have improved a great deal, and on a mid-range phone a well-built Capacitor app feels native for ordinary business screens. Where it shows is in gesture-heavy interfaces, very long lists, and anything that has to keep running when the screen is off. If your app's value is in those areas, start with a cross-platform native toolkit; our posts on Flutter and React Native cover when each fits.

What we would pick, and in what order

  1. Build the web app responsively first, with a service worker for caching and a manifest. That is your PWA and it costs little extra.
  2. Put it in front of real users on their own phones, iPhones included, for a few weeks. Note every request that the browser cannot meet.
  3. If store listing, reliable push or a native API appears on that list, add Capacitor to the same codebase rather than starting over.
  4. If background work, hardware or performance appears on it, move the mobile client to Flutter, React Native or native, keeping the web app for desktop users and the same backend API for both.
Start with the web you already have, and let real iPhone users tell you where it stops.

This sequence avoids paying for native work you may never need. If you are weighing these options against a real feature list, our mobile app development team can go through it with you, or read the wider comparison in choosing a mobile app framework.

Questions we get asked

Do PWAs support push notifications on iPhone?

Yes, since iOS 16.4, but only after the user has added the web app to the Home Screen and granted permission from a tap inside the app. A website open in a Safari tab cannot request push permission on iPhone. Badge counts on the icon are supported too. If you need push to work straight after a user first finds you, a store app built with Capacitor or a native toolkit is the dependable route.

Is Capacitor the same as Ionic?

No. Capacitor is the native runtime that wraps a web app into iOS and Android binaries and exposes native APIs through plugins. Ionic Framework is an optional library of mobile-style UI components. Both come from the same team and are often used together, but Capacitor works with any web stack, including React, Vue, Angular or Svelte with your own components, and Ionic components can run without Capacitor.

Will Apple accept a Capacitor app in the App Store?

Yes, provided it is a genuine app. Apple's guideline 4.2 rejects apps that are little more than a repackaged website, so a wrapper around a marketing site will struggle. An app with real features, offline behaviour, native integrations such as camera or push, and a proper account flow is reviewed like any other. The technology used to build the interface is not the test; usefulness is.

Can a PWA work offline on iOS?

Yes. A service worker can cache the app's code and data so it opens and works without a connection. What iOS does not support is the Background Sync API, so changes made offline are only sent when the user opens the app again. Browser storage can also be cleared under storage pressure, so important unsent work should be synced promptly or kept in a Capacitor app's on-device database.

← Previous Kotlin Multiplatform: when to choose it, and where Compose Multiplatform stands on iOS Next → Flutter: when to choose it for your mobile app
Keep reading
Mobile apps Choosing a mobile app framework: native, Flutter, React Native, KMP or web 7 min read Mobile apps Offline-first mobile apps: how the sync architecture works 8 min read Mobile apps React Native: when to choose it, with Expo and the New Architecture 6 min read