The App Store review team has a tendency to reject apps not leveraging native platform features. Hence, a native application would need to earn its place in the App Store by going above and beyond what a Progressive Web Application (PWA) can provide.
Conversely, even though web applications are write once, run anywhere, iOS and macOS have a number of platform features not available to them. Thus, web developers may need to pay attention to these limitations and engage their native app developer counterparts should their solution need to cross the border.
In this article, we will discuss the web technologies and features that are not available in web applications running on Safari for iOS and macOS, and how these limitations compare to native applications.
Limited Access to Device Hardware and Sensors
One of the most significant limitations of web applications running on Safari is their limited access to device hardware and sensors. Native applications, on the other hand, have native APIs to interact with such hardware sensors, providing more advanced user experiences.
For example, web applications running on Safari cannot access the following:
- Bluetooth: Safari does not support the Web Bluetooth API. Native applications can easily access Bluetooth devices and enable features such as wireless audio streaming, data transfer, and device control.
- NFC (Near Field Communication): Safari does not support the Web NFC API, which allows web applications to communicate with NFC-enabled devices. Native applications can leverage Core NFC to read tags, such as information in museum exhibits, or write data to tags.
- Ambient Light Sensor: Safari does not support the Ambient Light Sensor API. Native iOS applications can use this sensor to adjust screen brightness or app themes based on the surrounding light conditions.
Limited Background Execution
Web applications running on Safari have limited background execution capabilities compared to native applications. This means that when a user switches to another app or locks their device, a web app running in Safari may have its execution suspended or terminated.
Native applications can schedule tasks to run in the background, such as downloading or uploading files, playing audio, or sending notifications. This enables native apps to provide a more seamless user experience, even when they are not in the foreground.
Limited Local Storage
Web applications running on Safari have limited access to the device’s file system compared to native applications. Safari supports the File System Access API, which allows web applications to read and write files. However, this access is severely limited; web application local storage is limited to about 5 MB on macOS and 50 MB on iOS and iPadOS.
Native applications have their respective sandboxes within the file system, not restricted to storage quota. Furthermore, the user can direct native applications to open files from other applications’ sandboxes.
Limited Support for Advanced Camera Features
Although Safari on iOS and macOS allow web applications to access the device’s camera using the
getUserMedia() API, the range of camera features and controls available to web applications is limited compared to native applications.
For example, web applications running on Safari cannot:
- Control camera settings, such as focus, exposure, and white balance.
- Access depth information or use advanced camera features like Portrait mode.
- Capture RAW images or record video at high frame rates and resolutions.
Native applications can access these advanced camera features, providing users with more control and flexibility in their photography and videography experiences.
Limited Offline Functionality
Web applications running on Safari can leverage technologies like service workers and the Cache API to provide offline functionality. However, native applications can execute more complex tasks and access device resources even when there is no network connection.
Native applications have the ability to provide a robust offline experience, ensuring that users can continue to use the app without an Internet connection.
Limited Access to Advanced Audio Features
Web applications running on Safari can use the Web Audio API to generate, process, and analyze audio. However, the capabilities of the Web Audio API are limited compared to the audio features available to native applications.
For instance, native applications can:
- Access low-latency audio input and output, allowing for real-time audio processing and playback.
- Provide custom support for audio codecs and formats.
- Integrate with platform-specific audio APIs, such as Core Audio on macOS and iOS, for more advanced audio processing and routing.
These advanced audio features enable native applications to provide a more comprehensive audio experience for users.
Limited Virtual and Augmented Reality Support
Safari supports the WebXR Device API, which enables web applications to create immersive virtual and augmented reality experiences. However, the WebXR API’s capabilities are limited compared to native applications, which can leverage platform-specific APIs and access advanced device features.
Native applications can provide more advanced and performant virtual and augmented reality experiences, benefiting from direct access to the device’s sensors, cameras, and hardware acceleration.
While web applications running on Safari for iOS and macOS offer many features and capabilities, they still face several limitations compared to native applications. These limitations include restricted access to hardware and sensors, limited background execution, and a lack of advanced features such as offline functionality, low-latency audio, augmented reality, and more.
Developers need to consider these limitations when designing solutions for iOS and macOS and evaluate the trade-off between cross-platform support of web applications with customized platform-specific experiences of native applications for their target user experience.