Skip to content

Progressive Web Apps That Feel Like Native

Fast, installable web apps that work offline, send notifications and reach users through a link, with no app store approval in the way.

sw.js
Sample code

PWA development for reach, speed and lower cost

A progressive web app is a website built with service workers, a web app manifest and modern browser APIs so it can be installed to the home screen, load instantly on repeat visits and keep working offline. Users open it from a link, a QR code or search, which removes the download step that loses many potential customers on mobile.

PWAs suit ecommerce stores, restaurant ordering, booking flows, field data capture, internal tools and content sites where search visibility matters. They are a weaker fit when you need deep hardware access, background location or a heavy presence in the app stores, where native or Flutter apps do better. Many businesses start with a PWA to validate demand cheaply, then add a native or Flutter app once repeat usage shows that store presence and deeper device access are worth the extra budget.

Nexzem builds PWAs on React and Next.js with careful caching strategies, small bundles and Core Web Vitals monitoring. The same approach powers ordering flows like those in our NexEats product, where customers scan a QR code and order without installing anything. Every build is tested on Chrome, Safari and Samsung Internet, including flaky network conditions.

Read Progressive Web, the way we write it

A short, idiomatic sample. Scroll and the editor types each part while the note beside it explains why it is written that way.

sw.js
Sample code
// Cache the app shell at install so the app opens offline
const SHELL = ["/", "/app.js", "/styles.css", "/offline.html"]
self.addEventListener("install", (event) => {
event.waitUntil(caches.open("shell-v1").then((cache) => cache.addAll(SHELL)))
})
// Pages: network first, falling back to the cached copy
self.addEventListener("fetch", (event) => {
if (event.request.mode !== "navigate") return
event.respondWith(
fetch(event.request).catch(async () => (await caches.match(event.request)) ?? caches.match("/offline.html")),
)
})
// Old caches are cleared when a new version activates
self.addEventListener("activate", (event) => {
event.waitUntil(caches.keys().then((keys) => Promise.all(keys.filter((k) => k !== "shell-v1").map((k) => caches.delete(k)))))
})
  1. line 1-7

    Cache the app shell at install so the app opens offline

  2. line 8-15

    Pages: network first, falling back to the cached copy

  3. line 16-19

    Old caches are cleared when a new version activates

What we build with Progressive Web

Installable, offline-capable web apps that load fast on any phone without an app store download.

  1. 01

    New PWA Builds

    Installable web apps built on React or Next.js with a manifest, service worker and responsive design that adapts from small phones to desktops.

  2. 02

    Offline Mode and Sync

    Caching of pages and data with IndexedDB and background sync, so forms, carts and records survive a dropped connection and upload later.

  3. 03

    Web Push Notifications

    Opt-in push messages for order updates, reminders and offers, with segmentation and delivery tracking across Android and supported iOS browsers.

  4. 04

    Website to PWA Conversion

    Upgrade of an existing site into an installable PWA with caching, app shell loading and an install prompt, without rebuilding the whole frontend.

  5. 05

    PWA Ecommerce Storefronts

    Headless storefronts on Shopify, WooCommerce or custom APIs that load quickly on mobile data and keep product pages indexable for search.

  6. 06

    QR and Kiosk Apps

    Scan-to-open ordering, check-in and feedback apps for restaurants, events and retail counters where asking users to install an app is unrealistic.

  7. 07

    Performance Optimisation

    Code splitting, image optimisation and caching rules tuned against Lighthouse and Core Web Vitals so pages load quickly on mid-range phones.

Why teams pick Nexzem for Progressive Web

The checks every engagement has to pass before we call it done.

.github/PULL_REQUEST_TEMPLATE.md5/5 checked

  • - [x] No install barrier

    Users start from a link or QR code, so more of the people who visit actually reach checkout or sign-up.

  • - [x] One build for all devices

    A single codebase covers Android, iPhone and desktop browsers, which keeps build and maintenance cost lower than separate apps.

  • - [x] Search visibility

    Unlike app store apps, PWA pages can be indexed by Google, bringing organic traffic straight into the product.

  • - [x] Instant updates

    Every deploy reaches users on their next visit, with no store review queue or forced update prompts.

  • - [x] Proven in our own products

    We run PWA-style ordering in NexEats, so the caching and offline patterns we use are tested in daily production use.

How we architect a progressive web app

A solid PWA starts as a fast, server-rendered website, so content loads quickly and search engines can read it. On top of that, a service worker, usually generated with Workbox, caches the app shell and static assets and applies a deliberate strategy per route: cache first for fonts and images, network first for prices and stock, and stale while revalidate for content that can be slightly out of date.

Data that must work offline lives in IndexedDB, with a queue of pending actions such as form submissions or orders that sync when the connection returns. The web app manifest defines the name, icons, theme and display mode for installation, and web push uses standard VAPID keys with a backend service that stores subscriptions per user and device.

Updates need care. When a new version is deployed, the new service worker waits until the user reloads, so we show a gentle prompt to refresh and make sure old caches are cleaned up. Testing the update path is as important as testing the first install.

  • Server rendering or static generation for fast first loads.
  • Explicit caching strategy for every route and asset type.
  • Offline queue for user actions with clear sync status.
  • Update prompts and cache cleanup on every release.

Platform limitations to plan around

Chrome on Android supports the richest set of PWA features, including install prompts, background sync, web push and many hardware APIs. Safari on iPhone and iPad supports installation through the Share menu and web push for apps added to the home screen, but not background sync or Web Bluetooth, and it can clear storage for websites that users have not visited for some time.

Desktop browsers such as Chrome and Edge can install PWAs as standalone windows, which suits internal tools and productivity apps. Before choosing a PWA, list the device features your product needs and check support on the browsers your users actually run, then design graceful fallbacks for anything missing.

  • Test installation and push on iOS separately from Android.
  • Keep important data synced to the server, not only in browser storage.
  • Avoid features that depend on unsupported hardware APIs.
  • Explain installation steps to iPhone users inside the app.
  • Monitor storage usage on devices with little free space.

Measuring PWA success

Track the outcomes the PWA was built for: install rate among repeat visitors, return visits from installed users, push notification opt-in and engagement, offline usage and conversion rates compared with the regular website. Core Web Vitals and real-user monitoring show whether caching actually made pages faster for real visitors.

Chrome DevTools' application panel helps inspect the manifest, service worker and caches during development. In production, log service worker errors and cache sizes, because a broken service worker can serve stale or empty pages to many users until it is fixed.

How Progressive Web projects run

$ git log --graph --oneline main..delivery

  1. c1451ab

    feat: audit and goals

    We review your current site or idea, target devices and the offline and notification needs that matter.

  2. eb26faa

    feat: UX for mobile web

    Thumb-friendly layouts, install prompts and offline states designed in Figma and agreed with you.

  3. bda3ffc

    feat: build and cache strategy

    Frontend development with service worker caching rules chosen per page and per API.

  4. 860eaa1

    feat: test across browsers

    Checks on Chrome, Safari, Samsung Internet and desktop browsers, including offline and slow network tests.

  5. f970a5b

    merge: launch and measure

    Deployment with Core Web Vitals and install tracking so improvements are based on real usage data.

What teams build with Progressive Web

  • Offline inspection forms

    Inspectors open the PWA on any phone or tablet, complete checklists with photos in basements and remote sites without signal, and submissions sync automatically later, avoiding app store installs for a large contractor workforce.

  • QR menu and table ordering

    Restaurant guests scan a QR code, browse a fast menu, order and pay without installing anything, and regulars can add the PWA to their home screen for quicker reordering and offers on future visits.

  • News site with web push

    A publisher turns its website into an installable PWA, sends breaking news alerts through web push, and lets readers save articles for offline reading during commutes, increasing return visits without a separate native app.

  • Distributor ordering portal

    Retailers and distributors place repeat orders from an installable PWA that loads quickly on slow networks, remembers frequent items and queues orders offline, replacing phone and WhatsApp orders typed in by sales staff.

  • Event ticket scanning

    Event staff scan tickets with phone cameras in a PWA that keeps working when venue networks are overloaded, syncing check-ins between devices as soon as connectivity allows and preventing duplicate entries.

Where Progressive Web sits in your stack

The tools we pair it with, layer by layer. Select a layer to see what it is responsible for.

Progressive Web development FAQs

Something else on your mind? Ask a consultant and get a reply within one business day.

Should we build a PWA or a native app?

Pick a PWA when reach, search traffic and low cost matter more than deep device features, for example ordering, booking or catalogue apps. Pick native or Flutter when you need background location, heavy hardware access or a strong app store presence. Many clients start with a PWA and add native later.

Do PWAs work on iPhone?

Yes. iPhone users can add a PWA to the home screen from Safari, and recent iOS versions support web push for installed apps. Some features remain more limited than on Android, and we design around those gaps.

What drives the cost of a PWA?

The main factors are the number of screens, offline requirements, push notification logic, backend and integrations, and whether we convert an existing site or build fresh. A fixed quote follows a free consultation.

Can a PWA be listed on the Play Store?

Yes. A PWA can be packaged as a Trusted Web Activity and published on Google Play, which gives you a store listing without maintaining a separate Android codebase.

How long does PWA development take?

Converting an existing site often takes a few weeks. A new PWA with offline sync and notifications usually takes around 6-12 weeks depending on scope. We confirm dates in the project plan.

Can a PWA send push notifications to iPhone users?

Yes, when the user has added the PWA to their home screen and granted permission. Web push on iOS works through standard web push APIs. Users browsing in Safari without installing cannot receive push, so the app should guide iPhone users through installation first.

How do users get updates to a PWA?

Updates deploy to your server like any website, with no app store review. The new service worker installs in the background and activates when users reload or accept a refresh prompt, so most users get the latest version within their next session or two.

We work with clients across the USA, UK, Australia, UAE, New Zealand and India.

Where we work

Tell us what you're building.

A solutions consultant replies within one business day with a recommended stack, a rough estimate and a suggested team.