What should a progressive web app development company deliver?
An offline plan first: a written list of which routes are precached in the app shell, which requests use cache-first, stale-while-revalidate or network-first, and what the user sees when the network drops halfway through a checkout. That plan decides how the app behaves on a train, and it is the part most PWA builds skip.
Then the pieces that make it installable and maintainable: a web app manifest with the right icons, a Workbox service worker with versioned caches, an update flow that tells users a new version is ready, Web Push set up with your own VAPID keys, and a CI pipeline that runs Lighthouse on every pull request. Miracuves hands all of it over with the repository history and hosting configuration.
PWA or native app: which should you build?
Build a PWA when most users arrive from search, ads or a shared link, when you ship changes weekly and do not want each one waiting on store review, and when the product is content, commerce, booking, field forms or an internal tool. One codebase then serves phones, tablets and desktops.
Build native, or Flutter, when the product depends on hardware or background work: Bluetooth devices, continuous background location, background audio, heavy AR, or deep HealthKit and wallet integrations. Choose it too when being found in the App Store is part of the marketing plan. Many products run both - a PWA for reach and a store app for the most engaged users - on one shared backend.
What can a PWA do on iPhone in 2026, and what can it not?
Safari supports more than it did a few years ago, but the gaps are real and should shape the scope before any design work starts:
- Install: users add the app from the Share menu with Add to Home Screen. Safari does not support the install prompt event Chrome offers, so the app has to explain the step itself
- Push: Web Push works on iPhone since iOS 16.4, but only after the PWA is added to the Home Screen and the user allows notifications from a tap
- Storage: a Home Screen app keeps its own storage, separate from Safari, but browser storage is never guaranteed forever, so the server stays the source of truth
- Not available: Web Bluetooth, Web NFC and the Background Sync API, so queued work is sent the next time the app is opened
How do service workers make a PWA work offline?
A service worker is a script the browser runs between your app and the network. On the first visit it precaches the app shell - HTML, CSS, JavaScript, fonts and icons - so the next launch loads from the device, not the server. After that, each kind of request gets its own rule: cache-first for versioned assets, stale-while-revalidate for listings that can be a few minutes old, network-first for prices, stock and account data.
Anything the user creates offline, such as a saved form or an order draft, goes into IndexedDB and is sent when the connection returns. The hard part is updates: every release needs new cache names, old caches deleted when the new worker activates, and a clear "new version available" prompt, or users keep running last month's build.
Do PWAs rank on Google, and what does Lighthouse measure?
A PWA is a website, so Google indexes it like one. Each screen that should rank needs its own URL, a title and description, and content that is in the HTML or renders without a click. Offline caching does not improve rankings by itself; an app shell that shows an empty page until JavaScript runs can hurt them, so public pages are server-rendered or prerendered.
Lighthouse is Google's open-source audit for performance, accessibility, best practices and SEO. It no longer gives a PWA score - that category was removed in 2024 - so installability is checked in Chrome DevTools instead. Google's page experience signals use Core Web Vitals from real users, not a lab score, so Miracuves tracks both.
Can you add a PWA to our existing website?
Usually yes, without a rebuild. The site must be served over HTTPS, because service workers do not run on plain HTTP. We add a web app manifest and icons, register a service worker scoped to the right path, set caching rules per route and build an offline fallback page. Framework sites have standard routes in: the @angular/pwa package for Angular, vite-plugin-pwa for Vite-based React, Vue and Svelte apps, and Workbox for everything else.
The risk is caching the wrong thing. Logged-in pages, carts and prices must stay network-first, so nobody sees a stale price or an expired cart. A retrofit is scoped and quoted in writing like any custom PWA work.
What does a PWA cost to run after launch?
Less than two store apps, because there is one codebase and no store release cycle: a fix is live on the next deploy once the service worker updates. Running costs are ordinary web hosting and a CDN, your backend and database, and error monitoring. Sending Web Push goes through the browser vendors' push services, which do not charge per message.
What needs a regular budget is browser change. Chrome, Safari and Samsung Internet each ship updates several times a year, and behavior around install, storage and push can shift, so a PWA needs checking against new browser releases. Miracuves covers this in the 60-day support window and on the retainer from $2,299/month.