Short answers toreal PWA questions
Direct, sourced answers — the kind you can share in a Slack thread. 80 and counting.
What is a PWA?
A PWA (Progressive Web App) is a regular website that meets three technical criteria — HTTPS, a Web App Manifest and a service worker — so browsers let visitors install it on their home screen. Once installed, it launches like a native app, works offline and can send push notifications.
Read answerCan a PWA send push notifications on iOS?
Yes. Since iOS 16.4 (March 2023), a PWA can send Web Push notifications on iPhone and iPad — but only after the user installs it to the home screen. Push in a regular Safari tab is not supported, and the user must explicitly grant notification permission from inside the installed PWA.
Read answerDo PWAs work offline?
PWAs can work offline, but only for content their service worker has explicitly cached. Registering a service worker does not automatically make a site offline-capable — you decide what to cache (app shell, API responses, images) and what strategy to use (cache-first, network-first, stale-while-revalidate).
Read answerPWA vs native app: what does each cost?
Building a PWA typically costs 30-50% of an equivalent native iOS + Android app because you ship one codebase to three platforms (iOS, Android, desktop). Maintenance is roughly one-fifth: no app-store review, no separate release trains, no platform-version fragmentation.
Read answerHow do you uninstall a PWA?
On iPhone and Android, uninstall a PWA by long-pressing its home-screen icon and choosing "Delete" or "Uninstall". On Windows and macOS, open the installed PWA, click the three-dot menu in the title bar and choose "Uninstall". The site itself is not affected — only the installed shortcut and its service worker cache.
Read answerAre PWAs in the App Store?
PWAs are not in the App Store or Play Store by default — they install directly from the browser. If you want store presence, PWABuilder (from Microsoft) packages a PWA into a Trusted Web Activity for Google Play, an MSIX for Microsoft Store, and a WKWebView wrapper you can submit to Apple.
Read answerWhy is my PWA install prompt not showing?
Chrome shows the install prompt only when the site passes strict installability criteria: HTTPS, a valid manifest with name, icons and start_url, a registered service worker with a fetch handler, and the user has not previously dismissed the prompt. Any one of these missing is enough to block the prompt entirely.
Read answerWhat are the storage limits for a PWA?
A PWA typically gets 60% of the device disk space on Chrome and Edge (up to hundreds of GB), 20% of total quota on Firefox, and around 1 GB on Safari. Cache Storage, IndexedDB and OPFS share the same quota. Browsers evict least-recently-used origins under pressure unless the site requests persistent storage.
Read answerCan a PWA access the camera?
Yes. A PWA can access the camera, microphone, geolocation and file system through the same Web APIs a regular website uses (getUserMedia, showOpenFilePicker, Geolocation). Every capability requires explicit user permission and works cross-platform, though a few APIs (Bluetooth, USB, NFC) are still Chromium-only.
Read answerDoes a PWA help or hurt SEO?
A PWA does not directly change your Google ranking. Googlebot indexes your HTML the same whether or not you have a service worker. The indirect effect is Core Web Vitals: repeat visits from installed users have near-zero TTFB and better INP, which improves your CWV score and, over time, ranking.
Read answerDo PWAs work on iPhone?
Yes. Since iOS 16.4 (March 2023), iPhone and iPad support the full PWA feature set: install to home screen from Safari, standalone launch, offline via service worker, and Web Push notifications. The install step is manual — Safari does not show a browser prompt; users must tap Share → Add to Home Screen.
Read answerWhat are the requirements for the Chrome install prompt?
Chrome fires beforeinstallprompt when the site is served over HTTPS, links a valid manifest with name, start_url and 192px + 512px icons, registers a service worker with a fetch handler, and passes a user-engagement heuristic (typically one interaction and ~30 seconds of use). Any failing criterion silently blocks the prompt.
Read answerCan PWAs accept payments?
Yes. A PWA can accept payments through any standard web checkout — Stripe, PayPal, Adyen — and can also use the native Payment Request API to surface Apple Pay on iOS 16.4+ and Google Pay on Android. There is no App Store 30% cut because payments run through the web, not through a native store SDK.
Read answerDo PWAs support background sync?
Partially. Chromium browsers (Chrome, Edge, Android WebView, Samsung Internet) support the Background Sync API for retrying failed requests, and Periodic Background Sync for scheduled updates. iOS Safari and Firefox do not support either. Fall back to Push notifications for cross-platform re-engagement.
Read answerPWA vs hybrid app — what is the difference?
A PWA is a website users install from the browser — no store, no shell, no native code. A hybrid app (Ionic + Capacitor, Cordova, older React Native WebView apps) wraps the same web code in a native binary submitted to the App Store and Play Store. PWAs are cheaper and faster to ship. Hybrid apps unlock store distribution and deeper hardware APIs.
Read answerDo PWAs improve conversion rate?
Yes, when users actually install. Published case studies (Alibaba, Twitter Lite, Pinterest, Uber, BookMyShow) show 30-100% conversion lift after PWA adoption — driven by faster loads, offline support and home-screen install. The effect is largely from install: once your icon sits on the home screen, return sessions jump.
Read answerCan PWAs read and write files?
Yes on Chromium browsers (Chrome, Edge, Opera). The File System Access API lets a PWA open, read, edit and save files with the user’s permission — Figma, VS Code Web and Excalidraw use it in production. iOS Safari and Firefox fall back to the standard `<input type="file">` and downloads.
Read answerCan PWAs use Bluetooth?
Partially. The Web Bluetooth API works on Chrome, Edge, Opera (desktop and Android) and Samsung Internet — enough to connect to BLE peripherals like heart-rate monitors, printers and IoT devices. iOS Safari and Firefox do not support it, and Apple has stated no intent to ship it.
Read answerWhat is a Web App Manifest?
A Web App Manifest is a JSON file — usually manifest.webmanifest — that declares your app’s name, icons, start URL, theme colour and display mode. Browsers read it to decide whether to offer the install prompt and what icon and name to show on the home screen.
Read answerHow do you add a PWA to the home screen on Android?
On Android, open the site in Chrome, tap the three-dot menu, and choose "Install app" (or "Add to Home screen" on some versions). If the site meets installability criteria, Chrome may also show an automatic install banner or mini-infobar without you having to open the menu.
Read answerHow do you add a PWA to the home screen on iPhone?
On iPhone or iPad, open the site in Safari, tap the Share icon, scroll down and tap "Add to Home Screen", then tap "Add". Safari never shows an automatic install banner — the install must always be initiated manually from the Share sheet, and it only works in Safari, not third-party browsers.
Read answerWhat is the app shell architecture?
The app-shell architecture separates a PWA into two parts: a minimal "shell" of static UI (navigation, layout, styles) that a service worker caches and loads instantly on repeat visits, and dynamic content fetched separately from the network. This makes the app feel instant even before data loads.
Read answerWhat is the difference between a PWA and a regular website?
Technically, a PWA is just a regular website that additionally serves over HTTPS, links a Web App Manifest, and registers a service worker. Nothing about the HTML, CSS or JS changes — the difference is entirely in those three additions, which unlock installability, offline caching and push notifications.
Read answerHow do you test a PWA with Lighthouse?
Open Chrome DevTools, go to the Lighthouse panel, select the categories you want (Performance, PWA-related checks live under "Best Practices" in modern Lighthouse) and click "Analyze page load". Lighthouse reports whether your manifest is valid, whether a service worker is registered, and whether the page is served over HTTPS.
Read answerWhat is Workbox?
Workbox is a collection of open-source JavaScript libraries, maintained by Google, that wraps common service-worker patterns — precaching, runtime caching strategies, background sync, expiration — behind a simple API, so developers do not have to hand-write low-level Cache Storage and fetch-event logic.
Read answerWhat icon sizes does a PWA need?
A PWA manifest needs at least a 192x192 and a 512x512 icon to be installable on Chromium browsers. For best results across platforms, also include a maskable icon (so Android does not crop your logo oddly) and a separate 180x180 apple-touch-icon link for iOS Safari, which does not read the manifest for its home-screen icon.
Read answerDoes a PWA need HTTPS?
Yes, a PWA needs HTTPS. Browsers refuse to register a service worker on a plain HTTP origin because it can intercept and modify every network request, which would be a serious security risk over an unencrypted connection. The only exception is localhost and 127.0.0.1, which browsers treat as a secure context for local development.
Read answerWhat is the service worker lifecycle?
A service worker moves through four stages: install (fired once when the browser first downloads a new or changed worker), waiting (if an old version still controls open tabs), activate (once it takes control, typically after all old tabs close or skipWaiting() is called) and idle, where the browser terminates it between events to save memory.
Read answerHow do you update a PWA’s service worker?
Browsers automatically check your service-worker script for byte-level changes on every navigation (and roughly every 24 hours in the background). If it differs, the new version installs and waits until old tabs close before activating. Calling self.skipWaiting() in install and clients.claim() in activate makes the new version take over immediately instead of waiting.
Read answerWhat is the difference between cache-first and network-first caching?
Cache-first checks the cache first and only goes to the network if there is no cached match — best for static assets like fonts and logos that rarely change. Network-first always tries the network first and falls back to the cache only if the request fails — best for content that should be as fresh as possible, like an API response, while still working offline.
Read answerWhat is the Background Sync API?
The Background Sync API lets a service worker register a task that the browser retries automatically once the device is back online, even if the user has closed the tab. It is commonly used so a form submission or message made while offline is not lost — it queues, then fires the moment connectivity returns.
Read answerWhat is Periodic Background Sync?
Periodic Background Sync lets an installed PWA periodically wake its service worker to refresh cached content — for example, prefetching news articles — even when the app is not open. It requires the periodic-background-sync permission, is only available on installed PWAs, and Chromium decides the actual interval based on site engagement, not the requested minimum.
Read answerWhat is the App Badging API?
The Badging API lets an installed PWA set a small numeric badge (or a plain dot) on its home-screen or taskbar icon, mirroring the unread-count badges native apps show. Call navigator.setAppBadge(count) to set it and navigator.clearAppBadge() to remove it — no argument shows a plain dot.
Read answerWhat is the Web Share API?
The Web Share API lets a page call navigator.share({ title, text, url }) to open the operating system’s native share sheet, so users can send a link to Messages, Mail, social apps or any other installed share target — the same experience as sharing from a native app.
Read answerWhat is the Web Share Target API?
The Web Share Target API lets an installed PWA declare a share_target entry in its manifest so it shows up in the device’s share sheet as a destination — the same way Twitter or Google Photos appear when you tap "Share" from another app. The declared URL receives the shared title, text, url or files as a request.
Read answerWhat is the Screen Wake Lock API?
The Screen Wake Lock API lets a page request navigator.wakeLock.request("screen") to prevent the device screen from dimming or auto-locking while the page is active — useful for recipe apps being followed hands-free, presentation tools, or video calls. The lock automatically releases when the tab is hidden or closed.
Read answerWhat is a Trusted Web Activity?
A Trusted Web Activity (TWA) is Google’s official way to package a PWA as a full-screen Chrome Custom Tab inside a thin native Android shell, so it can be distributed through the Google Play Store while still rendering as your existing web app with no separate native codebase.
Read answerPWA vs Electron: what is the difference?
A PWA installs through the browser and reuses the browser’s already-installed engine, so it downloads in kilobytes and stays a few MB on disk. Electron bundles an entire Chromium and Node.js runtime into every app, typically 100-200MB, but in exchange gives full Node.js filesystem and OS access that the web sandbox does not allow.
Read answerPWA vs React Native: which should I build?
A PWA is a single website that runs in the browser and can be installed without an app store; React Native compiles JavaScript into genuinely native iOS and Android UI components and ships through the App Store and Play Store. Choose a PWA for the widest reach and lowest cost, and React Native when you need deep native APIs, top App Store placement, or native performance for animation-heavy UI.
Read answerPWA vs Flutter: which should I build?
A PWA runs in the browser and installs without an app store, with a small download size; Flutter compiles Dart to native ARM machine code and renders every pixel itself via its own graphics engine, giving consistent, high-performance UI across iOS, Android, web and desktop from one codebase, but requiring app-store distribution for mobile.
Read answerWhat are Core Web Vitals?
Core Web Vitals are three metrics Google uses to measure real-world page experience: Largest Contentful Paint (LCP, loading speed), Interaction to Next Paint (INP, responsiveness to input, which replaced First Input Delay in March 2024), and Cumulative Layout Shift (CLS, visual stability). They are measured from real Chrome users via the Chrome User Experience Report.
Read answerWhat are PWA app shortcuts?
App shortcuts are quick-action shortcuts that appear when a user long-presses (mobile) or right-clicks (desktop) an installed PWA’s icon — similar to native app long-press menus. They are declared in the manifest’s "shortcuts" array, each with a name, url and optional icon, letting users jump straight to a specific feature like "New message" or "Search".
Read answerWhat are the criteria for "Add to Home Screen" to appear?
Chromium browsers offer "Add to Home Screen" once a site is served over HTTPS, links a manifest with at least a name, a 192px and 512px icon, a start_url and a standalone/fullscreen/minimal-ui display mode, and has registered a service worker with a fetch event handler. Some engagement (visiting the site more than once, with time between visits) is also typically required before the automatic prompt fires.
Read answerHow does a PWA splash screen work?
On Android, Chromium automatically generates a splash screen for an installed PWA using the manifest’s name, background_color, theme_color and the largest available icon — you do not draw it manually. It appears briefly while the app’s first paint loads after the user taps the icon. iOS Safari does not generate one automatically and requires custom <link rel="apple-touch-startup-image"> tags per device size.
Read answerHow do you debug a service worker?
Open Chrome DevTools → Application tab → Service Workers panel. It shows the registered worker’s status (activated, waiting, redundant), lets you check "Update on reload" to force a fresh install every load, simulate offline mode, and unregister a stuck worker. Console logs from inside the worker appear in the main console when you select the worker’s context from the dropdown.
Read answerWhat is the Cache Storage API?
The Cache Storage API is a browser-native key-value store for Request/Response object pairs, accessible from both a service worker and the page via the global caches object. It is the primary mechanism PWAs use to store network responses — HTML, CSS, JS, images, API JSON — so they can be served offline or instantly on repeat visits.
Read answerIndexedDB vs localStorage: which should a PWA use?
localStorage is a simple synchronous key-value store limited to strings and roughly 5-10MB, and it is not accessible from inside a service worker. IndexedDB is an asynchronous, transactional database that can store structured objects, blobs and much larger amounts of data, and it is accessible from both the page and the service worker — making it the right choice for most PWA data storage.
Read answerCan a PWA lock screen orientation?
Yes. The Screen Orientation API’s screen.orientation.lock("landscape") method (or "portrait") can force a specific orientation, but on most browsers it only works while the page is in fullscreen mode via the Fullscreen API. An installed PWA can also declare a preferred orientation directly in its manifest with the "orientation" field, which locks orientation for the whole standalone app.
Read answerHow does a PWA enter fullscreen mode?
A PWA can enter fullscreen two ways: programmatically, by calling element.requestFullscreen() in response to a user gesture (common for games and video players), or declaratively, by setting the manifest’s "display" field to "fullscreen" so the installed app always launches without any system UI at all, including the status bar.
Read answerCan a PWA vibrate the device?
Yes, on Android. Calling navigator.vibrate(200) (milliseconds, or an array of on/off durations) triggers haptic vibration on Android Chrome and other Chromium Android browsers, commonly used for game feedback or notification cues. iOS Safari does not implement the Vibration API at all, so it has no effect on iPhone or iPad.
Read answerCan a PWA access the user’s contacts?
A PWA can access contacts only through the Contact Picker API, which opens the device’s native contact picker so the user explicitly selects which contacts to share — there is no way for a site to read the whole address book silently. It is supported on Android Chrome and some other Chromium Android browsers; iOS Safari and desktop browsers do not support it.
Read answerCan a PWA read NFC tags?
Yes, but only on Android. The Web NFC API lets a page read and write NDEF-formatted NFC tags using the NDEFReader interface, with an explicit user permission prompt. It is supported on Android Chrome (and other Chromium Android browsers) only — iOS Safari and desktop browsers do not implement Web NFC as of 2026.
Read answerCan a PWA connect to USB devices?
Yes, through the WebUSB API, supported on Chrome, Edge and other Chromium desktop and Android browsers. navigator.usb.requestDevice() prompts the user to select a connected USB device, after which the page can send and receive raw USB data — used by tools like Arduino IDE’s web version and firmware flashers. Firefox and Safari do not support WebUSB.
Read answerWhat is the Window Controls Overlay API?
The Window Controls Overlay API lets an installed desktop PWA reclaim the title-bar area next to the window’s minimize, maximize and close buttons, so the app can render its own tabs, search bar or menu there instead of leaving it blank — similar to how VS Code’s desktop app uses its title bar. It is enabled via "display_override": ["window-controls-overlay"] in the manifest.
Read answerCan a PWA be the default handler for a file type?
Yes, on desktop Chromium browsers. The File Handling API lets an installed PWA declare file_handlers in its manifest, associating file extensions or MIME types with the app so double-clicking a matching file (or right-clicking → Open With) launches the PWA with that file passed in via the launchQueue. This is not supported on iOS or Firefox.
Read answerCan a PWA register a custom URL protocol?
Yes. An installed PWA can register itself as the handler for a custom URL scheme (prefixed with "web+", e.g. web+myapp://) using the manifest’s protocol_handlers field, so clicking such a link anywhere on the OS opens the PWA with that URL — the same mechanism native apps use for schemes like mailto: or spotify:. It is supported on Chromium browsers; not on iOS Safari.
Read answerHow many users actually install PWAs?
There is no single industry-wide install rate — it depends heavily on the product, audience and how the install prompt is presented. What is well documented is that several large companies (Twitter/X with Twitter Lite, Starbucks, Pinterest, Uber) have published PWA case studies reporting improved engagement, load times or conversion after launch, which is why PWAs remain a common choice for content and commerce sites.
Read answerWhat are some well-known examples of PWAs?
Well-documented production PWAs include Twitter Lite (X’s lightweight PWA for low-bandwidth markets), the Starbucks ordering PWA (built for reliable performance on slow connections), Pinterest’s mobile web PWA, and Uber’s m.uber.com PWA designed to work on low-end feature phones. Each company has published its own case study describing the goals and outcomes of its build.
Read answerPWA vs AMP: what is the difference?
AMP (Accelerated Mobile Pages) is a restricted HTML/JS framework designed to guarantee fast-loading static content, historically used to qualify for special placement in Google’s mobile search results. A PWA is a broader architectural pattern — HTTPS, manifest, service worker — that adds installability and offline support to any site, including AMP pages. They solve different problems and are not mutually exclusive, though AMP’s search-placement benefits have diminished since Google ended the AMP requirement for the Top Stories carousel in 2021.
Read answerWhat does theme_color do in a manifest?
The manifest’s theme_color field sets the colour of the browser’s toolbar (in a regular tab) and the title bar / task-switcher header for an installed standalone PWA, giving the app a branded look instead of the browser’s default grey or white. It can be overridden per-page with <meta name="theme-color" content="#hex">, which takes precedence over the manifest value while that page is open.
Read answerWhat is a maskable icon?
A maskable icon is a PWA icon designed with extra padding around the logo so that when Android applies its adaptive-icon mask — a circle, squircle or rounded square, depending on the device’s launcher theme — the important part of the logo is never clipped. You declare it by adding "purpose": "maskable" to an icon entry in the manifest, ideally alongside a separate "any" purpose icon.
Read answerHow do you handle safe areas in a PWA?
To avoid content being obscured by notches, camera cutouts or the home indicator on modern phones, set <meta name="viewport" content="viewport-fit=cover"> and then apply padding using the CSS environment variables env(safe-area-inset-top), -right, -bottom and -left, which report the exact inset needed on the current device in standalone or fullscreen mode.
Read answerCan a PWA use Face ID or Touch ID?
Yes. The Web Authentication API (WebAuthn) lets a PWA prompt for the device’s built-in biometric authenticator — Face ID and Touch ID on Apple devices, Windows Hello on PC, or a fingerprint sensor on Android — to register or verify a user without ever handling the raw biometric data, which stays on-device. It is widely supported across modern Chrome, Safari, Edge and Firefox.
Read answerWhat is a passkey and can a PWA use one?
A passkey is a phishing-resistant credential built on the WebAuthn standard that replaces passwords: it is a cryptographic key pair, unlockable with the device’s biometric sensor or PIN, that can sync across a user’s devices via their platform account (Apple iCloud Keychain, Google Password Manager). A PWA can offer passkey sign-in using the same navigator.credentials API as any website — no native app is required.
Read answerWhat is the Idle Detection API?
The Idle Detection API lets a page detect, with the user’s permission, whether they have been idle (no keyboard/mouse/touch activity) for a specified threshold or have locked their screen — commonly used by chat and collaboration apps to automatically show an "away" status. It requires an explicit permission prompt and is supported on Chromium browsers only.
Read answerWhat is the Web Locks API for?
The Web Locks API lets scripts across multiple tabs, workers or a service worker of the same origin coordinate exclusive or shared access to a named resource, so only one context runs a given operation at a time — for example, preventing two open tabs of a PWA from both triggering the same background-sync network request simultaneously.
Read answerWhat is the app install banner (mini-infobar)?
The mini-infobar is a small automatic prompt Chrome for Android can show at the bottom of the screen once a site meets install criteria and engagement heuristics, offering a one-tap install without opening the browser menu. Developers can call preventDefault() on the beforeinstallprompt event to suppress it and instead show their own custom "Install" button, triggering the native dialog later at a more relevant moment.
Read answerIs a responsive website the same as a PWA?
No, they solve different problems. Responsive design means your layout adapts to different screen sizes using CSS (media queries, flexible grids). A PWA is about adding installability, offline support and push notifications through HTTPS, a Web App Manifest and a service worker. A site can be responsive without being a PWA, and in principle a PWA could be built without fully responsive layout, though in practice almost every PWA is also responsive.
Read answerCan you monetize a PWA?
Yes. A PWA can process payments the same way any website does — with a payment processor like Stripe or PayPal, optionally streamlined with the Payment Request API for a native-feeling checkout sheet. Because PWAs are not distributed through an app store by default, sites can take payments without paying Apple’s or Google’s in-app-purchase commission, which only applies to purchases made inside a native app-store listing.
Read answerDo PWAs work on Windows?
Yes. On Windows, installing a PWA through Chrome or Edge adds it to the Start menu and taskbar, gives it its own window without browser chrome, and lists it in Windows Settings → Apps alongside native applications, where it can be uninstalled the same way. Microsoft also historically indexed some PWAs directly into the Microsoft Store via PWABuilder.
Read answerDo PWAs work on macOS?
Yes. On macOS, Chrome and Edge let you install a PWA from the address-bar install icon, and Safari (14+) supports "Add to Dock", which installs the site as a standalone app with its own Dock icon and window. Installed PWAs on macOS run in their own window without browser tabs or address bar, similar to a native Mac app.
Read answerDo PWAs work on ChromeOS?
Yes, PWAs are first-class citizens on ChromeOS. They can be installed directly from a website’s install prompt or discovered through the Chrome Web Store, after which they appear in the app launcher and shelf just like Android or Linux apps on a Chromebook, with full windowing, notifications and file-system access support.
Read answerDoes Samsung Internet support PWAs?
Yes. Samsung Internet, the default browser on Samsung Galaxy phones, is built on Chromium and supports installable PWAs — including the manifest, service worker and beforeinstallprompt criteria used by Chrome. Users install via the browser menu’s "Add page to" → "Home screen" option, and Samsung Internet was historically one of the earlier mobile browsers to support Web Push notifications for installed PWAs.
Read answerCan a PWA follow the system dark mode setting?
Yes. The CSS media feature prefers-color-scheme lets a PWA detect whether the OS is set to light or dark mode and apply matching styles automatically, with no JavaScript required. Pairing this with multiple <meta name="theme-color" media="(prefers-color-scheme: dark)"> tags also lets the browser toolbar and installed app title bar switch colour to match.
Read answerCan a PWA access the user’s location?
Yes. The Geolocation API, available via navigator.geolocation.getCurrentPosition() and watchPosition(), lets a PWA request the device’s location on any major browser, but only after the user grants an explicit permission prompt and only over HTTPS. Accuracy depends on the device — GPS on mobile, Wi-Fi/IP triangulation on desktop.
Read answerCan a PWA read and write the clipboard?
Yes. The asynchronous Clipboard API (navigator.clipboard.writeText() / readText(), plus write()/read() for images and other types) lets a PWA copy to and paste from the system clipboard. Writing generally requires a user gesture like a click; reading is more restricted and, on most browsers, requires either a user gesture, a permission prompt, or both, to prevent silent clipboard snooping.
Read answerCan a PWA record the screen?
Yes, on desktop browsers. navigator.mediaDevices.getDisplayMedia() lets a page request permission to capture a tab, an application window or the entire screen — the user explicitly chooses which one from a native OS picker every time. Combined with the MediaRecorder API, a PWA can record and save screen video entirely client-side. Mobile browser support is more limited than desktop.
Read answerDo you have to submit a PWA to an app store?
No. A PWA installs directly from the browser with no app store involved at all — that is one of its core advantages. Submitting to the Google Play Store, Microsoft Store or Apple App Store is entirely optional and is done purely for extra discoverability, using wrappers like a Trusted Web Activity (Android) or PWABuilder-generated packages (Windows, and a WKWebView-based wrapper for iOS).
Read answerCan a website know if a user uninstalled its PWA?
There is no standard browser event that fires when a user uninstalls a PWA, so a site cannot reliably detect uninstalls directly. In practice, teams infer it indirectly — for example, a push notification send failing with an "unsubscribed" or "gone" error from the push service, or a previously frequent user simply stopping all visits, are the closest available signals.
Read answerDo PWAs need App Store approval?
No. A PWA installs directly from the browser, so it never passes through Apple App Review or Google Play review. You publish changes by deploying your website, and users get them on the next launch. Review only applies if you deliberately package the PWA into a store listing.
Read answer