Eric Elliott
Jul 26, 2017 · 1 min read

getUserMedia() and navigator.permission are not well supported on mobile. However, this is supported on most mobile devices today:

<input type="file" accept="audio/*" capture="microphone">

On mobile devices, this will probably cause the app to delegate recording to a 3rd party app (iOS microphone app, or whatever recording app users have installed on Android).

I understand this is not ideal, and if you’re building an audio recording app, you’re better off looking at React Native than going with a PWA today. However, the standards do exist, and browsers are implementing them. Chrome for Android & Android Browser partially support getUserMedia() behind a feature flag.

The latest iOS Safari has full support for getUserMedia() today. Notably though, the global market share for the latest iOS is rather small.

There are some remaining device API gaps that need to be plugged before PWAs can truly replace all native apps (excluding native hardware drivers), but the gaps are closing relatively fast.

    Eric Elliott

    Written by

    Make some magic. #JavaScript

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade