Help centre
Answer
Can a PWA read NFC tags?
Short answer
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.
By InstantPWA engineering·Reviewed July 25, 2026
How it works
new NDEFReader().scan() starts listening for nearby tags; reading fires a "reading" event with the tag’s NDEF message.
Security requirements
Requires HTTPS, a user gesture, and the page must be the active, focused tab — it cannot scan in the background.
Common use cases
Product authentication, venue check-ins, and pairing physical devices with a web app without a native app installed.
Sources
Related
Can 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.
Can 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.
What 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.
Can 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.
Can 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.