Maximiliano Firtman's articles, notes and learning experiences for devs-firt.dev

iOS PWA Compatibility

What's supported on Safari on iOS and iPadOS for Progressive Web Apps

This is a Note: a sometimes short, sometimes incomplete, living document.

Sponsored by you: PayPal donation, or buying me a coffee.

This is a compatibility list of supported features on Safari on iOS and iPadOS vs. what's available in the most used PWA browser in current market share for similar mobile devices: Google Chrome on Android.

This list is based and maintained on private tests I frequently do. WebKit is getting better documenting these things, but there is still a huge gap.

High-level PWA support #

Ability Supported Since version
Offline Support with Service Workers ✅ 11.3
App Installation from Browser ✅ 11.3 (from 2.0 with meta tags)
App Installation from Store ✅ 14.0 with WebView and App-Bound domains (no official announcement)
App Installation for Enterprise ✅ 10.0 (MobileConfig file)
Installation Prompt or Banner ❌
Singleton Installation ❌
App Installation Recovery with Backup ✅ 11.3
Link Capturing ❌ Only a push message can open an installed PWA
In-App Browser for out-of-scope links ✅ 12.0
Storage shared with Browser ❌
App appears in Search ✅ 11.3 (from 4.0 with meta tags)
App appears in Multitasking list ✅ 11.3 (from 2.0 with meta tags)
App appears in Homescreen ✅ 11.3 (from 2.0 with meta tags)
App appears in App Gallery Folders ❌
App can share screen with other apps ✅ 14.0 (iPadOS-only)
App can be installed from non-Safari browsers ✅ 16.4, if opted-in by the browser

Web App Manifest Support #

W3C Spec Fields #

Field Supported Since version
dir ❌
lang ❌
name ✅ 11.3
short_name ✅ 11.3
scope ✅ 11.3
icons ✅ 15.4
display ✅ 11.3
orientation ❌
start_url ✅ 11.3
id ✅ 16.4 (it's concatenated with icon's name)
theme_color ✅ 15.0
related_applications ❌
prefer_related_applications ❌
background_color ❌
shortcuts ❌

Before iOS 15.4, icons for PWAs can only be set by the non-standard <link> element with rel=apple-touch-icon. If you still have that element, it overrides your manifest icons declaration.

Display options #

Value Supported Fallbacks To
browser ✅
standalone ✅
minimal-ui¹ ❌ browser
fullscreen¹ ❌ standalone

Icon Options #

Option Supported
PNG Image ✅
SVG Image ❌
Maskable Icon¹ ❌
Monochrome Icon¹ ❌

¹ WebKit recognizes these options, but it ignores them. The apple-touch-icon link element in the HTML overrides the manifest icon declaration.

The list of fields comes from the latest W3C Working Draft. What's supported on WebKit can be seen by testing or by checking the WebKit Source code (ApplicationManifest.h).

Option Supported since Should you use it? Replaced by
apple-mobile-web-app-capable meta 2.0 🫱 since 11.3 it's optional² display: standalone in manifest
apple-mobile-web-app-title meta 8.0 👎 since 11.3 name in manifest
apple-mobile-web-app-status-bar-style meta 2.0 👎 since 15.0 theme-color meta tag
black-translucent status bar meta 2.0 👍 Still the only way to get a fullscreen app
apple-touch-icon link 2.0 🫱 (optional since 15.4 but still useful) icons in manifest
apple-touch-startup-image link 8.0 👍 Still the only way to define splash screens²
navigator.standalone flag 2.0 👎 since 11.3 display-mode media query

² Startup images only work if the apple-mobile-web-app-capable meta tag is present despite the presence of the manifest standalone replacement.

Manifest Incubations #

Field Supported Since version
display_override ❌
share_target ❌
note_taking ❌
protocol_handlers ❌
appinstalled event ❌
beforeinstallprompt event (installation prompt) ❌

The list of fields comes from the latest Web Application Manifest Incubators supported in Google Chrome for Android (stable or experimental).

These abilities may only be suitable for iPadOS devices.

Ability Supported Since version
Window Controls Overlay ❌
Tabbed Display ❌

Service Workers Support #

Ability Supported Since version
Fetch API ✅ 10.1
Service Worker Support ✅ 11.3
Cache Storage interface ✅ 11.3
UpdateViaCache at Registration ✅ 15.0
Streams ✅ (partial) 11.3
Navigation Preload ✅ 15.4

Abilities on Top of Service Workers #

Ability Supported Since version
Web Push ✅ 16.4 only for installed PWAs
Background Sync ❌
Periodic Background Sync ❌
Background Fetch ❌

³ Web Push only works if the web app is installed in the home screen; not available in Safari or other browsers

High-level overview of Web abilities for PWAs #

Ability Supported Since version
Geolocation ✅ 2.0
Web Storage ✅ 2.0
IndexedDB ✅ 8.0
Web Workers ✅ 5.0
Shared Web Workers ✅ 5.0 to 6.1, back in 16.0
2D Canvas ✅ 2.0
3D Canvas: WebGL ✅ 8.0
3D Canvas: WebGL 2.0 ✅ 15.0
Web XR (VR & AR) ❌⏳ 17 (only for visionOS)
Web Assembly ✅ 11.0
Clipboard ✅ 12.0
Credential Management ✅ 14.0
Payment Request ✅ 12.2
Payment Handler ❌
Motion Sensors ✅ 4.2 to 12.1, back in 13.0
Touch Events ✅ 2.0
Pointer Events ✅ 13.2
Camera and Microphone Access (getUserMedia) ✅ 13.0
Advanced Camera Controls ❌
Media Recorder ✅ 14.5
Media Session ✅ 15.0
Web Speech Synthesis ✅ 7.0
Web Speech Recognition ✅ 14.5
Web Bluetooth ❌
WebAudio ✅ 6.0
WebSerial ❌
WebNFC ❌
WebHID ❌
Battery Status ❌
Ambient Light ❌
Vibration ❌
Battery Status ❌
GamePad ✅ 10.3
Screen Wake Lock ✅ 16.4
User Activation ✅ 16.4
Device Memory ❌
Idle Detection ❌
Screen Orientation ✅ 16.4 (partial support)
Presentation ❌
Pointer Lock ❌
Network Information ❌
Screen Capture ❌
Shape Detection ❌⏳ 17 (experimental)
SMS OTP input attribute ✅ 14.0
SMS WebOTP API ❌
Virtual Keyboard ❌
File through input ✅ 6.0
FileSystem Access (public fs) ❌
FileSystem Access (origin private fs) ✅ 15.2
Storage Management: Persistent ✅ 15.2
Storage Management: Quota ✅ 17
Contact Picker ⏳ 14.5 (experimental)
Web Sockets ✅ 4.2
WebRTC ✅ 11.0
Web Codecs ✅ 16.4
Web Notifications ✅ 16.4
Fullscreen ✅ 8.0 (iPad only)
Page Visibility ✅ 7.0
Web Authentication ✅ 14.5
Web Share ✅ 12.1
Web Share 2.0 ✅ 15.0
Get Installed Related Apps ❌

Safari-only abilities for PWAs #

Ability Since version Standard replacement?
Apple Pay JS 10.0 Payment Request (compatible)
Quick Look for Augmented Reality 12.0
<model> Element for Augmented Reality 17.0
WebMetal 12.2 (experimental) WebGL 2.0 (compatible)
Safari Push Notifications (mac-only) not on iOS Web Push (Safari 16)
Gesture touch events 4.0
Smart App Banners 6.0
Sign In with Apple 13.0

This is a quick and dirty list of abilities in the Web Platform and its compatibility in Safari and installed PWAs. Each ability has many properties or sub-abilities that may or may not be available on every browser, so check Can I Use to see how it works on iOS and iPadOS. Use always Feature Detection.

Contact me if you want to suggest a feature or report a bug in these tables.


This note is mantained by Maximiliano Firtman Twitter @firt About Newsletter

If you liked this newsletter and the content in this website, you can support me by a PayPal donation, or buying me a coffee. Thanks!