music on atproto
plyr.fm
1# research: Web Share Target API for iOS PWAs
2
3**date**: 2025-12-19
4**question**: can a PWA receive shared audio files from the iOS share sheet (like SoundCloud does)?
5
6## summary
7
8**No, iOS Safari does not support Web Share Target API.** This is a known limitation with an open WebKit bug (#194593) since February 2019 - no timeline for implementation. Android Chrome fully supports it. The SoundCloud iOS share integration you saw works because SoundCloud has a native iOS app, not a PWA.
9
10## findings
11
12### iOS Safari limitations
13
14- Web Share Target API (receiving files) - **NOT supported**
15- Web Share API (sending/sharing out) - supported
16- WebKit bug #194593 tracks this, last activity May 2025, no assignee
17- Apple mandates WebKit for all iOS browsers, so no workaround via Chrome/Firefox
18- This is why plyr.fm can't appear in the iOS share sheet as a destination
19
20### Android support
21
22- Chrome fully supports Web Share Target since ~2019
23- manifest.json `share_target` field enables receiving shared files
24- Would work for Android users installing plyr.fm PWA
25
26### current plyr.fm state
27
28- `frontend/static/manifest.webmanifest` - basic PWA config, no share_target
29- `frontend/src/lib/components/ShareButton.svelte` - clipboard copy only
30- no `navigator.share()` usage (even though iOS supports sharing OUT)
31
32### workaround options
33
341. **native iOS app** - only real solution for iOS share sheet integration
352. **Web Share API for outbound** - can add "share to..." button that opens iOS share sheet
363. **improved in-app UX** - better upload flow, drag-drop on desktop
374. **PWABuilder wrapper** - publish to App Store, gains URL scheme support
38
39## code references
40
41- `frontend/static/manifest.webmanifest` - would add `share_target` here for Android
42- `frontend/src/lib/components/ShareButton.svelte:8-15` - current clipboard-only implementation
43
44## potential quick wins
45
46even without iOS share target support:
47
481. **add navigator.share() for outbound sharing** - let users share tracks TO other apps via native share sheet
492. **add share_target for Android users** - Android PWA installs would get share sheet integration
503. **improve upload UX** - streamline the in-app upload flow for mobile
51
52## open questions
53
54- is Android share target support worth implementing given iOS is primary user base?
55- would a lightweight native iOS app (just for share extension) be worth maintaining?
56- any appetite for PWABuilder/App Store distribution?
57
58## sources
59
60- [WebKit Bug #194593](https://bugs.webkit.org/show_bug.cgi?id=194593)
61- [MDN: share_target](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/share_target)
62- [web.dev: OS Integration](https://web.dev/learn/pwa/os-integration)
63- [firt.dev: iOS PWA Compatibility](https://firt.dev/notes/pwa-ios/)