What Can the Modern Web Actually Do?
Most developers know fetch and localStorage. But browsers can do a lot more — sensors, Bluetooth, NFC, speech, and OS integration are all on the table.
Most web developers know the basics: fetch, localStorage, the DOM, maybe service workers. But there is a whole layer of browser APIs that rarely comes up in day-to-day work, and most of it has been available for years.
The term web capability refers to any browser API that extends what a web app can do beyond those basics. Some of these are stable and work in every browser. Others are only available in Chromium. A few require origin trials or are still behind flags. Knowing where a capability sits on that spectrum is as important as knowing the API itself.
The Scope is Bigger Than You Think
Here is what is already possible in a browser, right now, with no native app required:
- Sensors -- accelerometer, gyroscope, magnetometer, proximity sensor, and ambient light
- Geolocation -- via GPS, Wi-Fi networks, cell towers, or a combination
- Speech recognition and synthesis -- microphone input converted to text, and text spoken back through speakers
- Camera and image detection -- barcode scanning, face detection, and reading text from images
- Gamepad input -- USB and Bluetooth controllers, including analog sticks and haptic feedback
- Web Bluetooth -- direct low-level communication with Bluetooth Low Energy peripherals
- Web NFC -- reading and writing NFC tags (including passive stickers and smart cards)
- Web MIDI -- connecting musical instruments and hardware controllers
- Web Serial and Web USB -- talking to any USB or serial device at the protocol level
- Screen Wake Lock -- prevent the display from dimming during long operations like following a recipe
- OS integration -- file type handlers, URL protocol handlers, window management, app shortcuts
And that is before even touching the PWA side: push notifications, background sync, contact pickers, payment requests, fullscreen APIs, and the ability to install as a standalone app.
Three Things Worth Knowing Upfront
Browser support is uneven. Some of these APIs work everywhere. Others are Chromium-only. A few exist only in origin trials or behind experimental flags. For anything touching hardware, always check support before building around it.
Permissions are non-negotiable. Almost every capability that accesses hardware or personal data requires explicit user permission. The browser enforces this with no workaround. Your code cannot quietly read the sensor in the background -- the user has to say yes first.
Most hardware APIs are low-level. Something like Web Bluetooth gives you raw binary communication with a device. You need vendor-specific documentation or a wrapper library to do anything useful with it. The API surface is small, but the work to actually use it is not.
The Demo App: Cooking Masters
A single demo app ties all of these capabilities together throughout the course -- a recipe app called Cooking Masters. Instead of looking at each API in isolation, the app lets you follow a recipe using just a gamepad, navigate it with voice commands, or flash connected Bluetooth lights when a timer runs out.
That kind of combination is where the real value is. Individual APIs can seem like novelties. Together, they can make a web app feel genuinely native.
The source code is plain vanilla JavaScript -- no framework, no build step. A good reminder that these are browser APIs, not React APIs or Vue APIs. They work in any context.
- Course resources: firtman.github.io/capabilities
- Slides (PDF): firtman.github.io/capabilities/slides.pdf
- Source code (Cooking Masters): github.com/firtman/capabilities
Where to Look
The best reference for browser capability support is MDN Web Docs. For a quick visual check of which browsers support what, caniuse.com is hard to beat. Google's web.dev site has a full chapter on web capabilities that covers the PWA angle in depth, with a free e-book published by the Chrome team.
The capability landscape moves fast. Something that is behind a flag today might be stable in six months. Origin trials exist specifically to let developers test experimental features in production before they ship broadly -- without requiring users to enable anything in their browser settings.
The goal with all of this is not to use every API. It is to know which ones exist so you can reach for the right one when the need comes up.
Quick Reference
| Capability | API | Support |
|---|---|---|
| Device motion | Accelerometer / Gyroscope API | Chrome, Edge |
| User location | Geolocation API | All browsers |
| Voice input | Speech Recognition API | Chrome, Edge |
| Voice output | Speech Synthesis API | All browsers |
| Barcode / face scan | Shape Detection API | Chrome (flag) |
| Game controllers | Gamepad API | All browsers |
| Bluetooth devices | Web Bluetooth API | Chrome, Edge |
| NFC tags | Web NFC API | Chrome Android |
| MIDI instruments | Web MIDI API | Chrome, Edge |
| Serial/USB devices | Web Serial / Web USB API | Chrome, Edge |
| Prevent screen lock | Screen Wake Lock API | Chrome, Edge, Firefox |
| File/protocol handlers | Web App Manifest | Chrome, Edge |
Practice
0/6 doneKeep reading
Enjoyed this? Get more like it.
Deep dives on system design, React, web development, and personal finance — straight to your inbox. Free, always.