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 and Safari teams don't document this information anywhere :(.

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
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

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
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 display: standalone in manifest
apple-mobile-web-app-name 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 👎 since 15.4 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

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
Navigation Preload 15.4

Abilities on Top of Service Workers #

Ability Supported Since version
Web Push 15.4 (experiment, not yet working)
Background Sync
Periodic Background Sync
Background Fetch

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 15.4
2D Canvas 2.0
3D Canvas: WebGL 8.0
3D Canvas: WebGL 2.0 15.0
Web XR (VR & AR) 15.4 (experimental, not yet working)
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
WakeLock
Device Memory
Idle Detection
Screen Orientation
Presentation
Pointer Lock
Network Information
Screen Capture
Shape Detection
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
Contact Picker 14.5 (experimental)
Web Sockets 4.2
WebRTC 11.0
Web Codecs
Web Notifications
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 15.0 (experimental)
WebMetal 12.2 (experimental) WebGL 2.0 (compatible)
Safari Push Notifications (mac-only) not on iOS Web Push (future compatibility)
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!