This may not necessarily work in your situation, but I had the exact same issue with a PWA for Safari and I solved it by just using long polling. It will allow you to get around all of the limitations with Safari and I was able to redirect and load sections within our SPA.

async function subscribe() {
  let response = await fetch("/subscribe");

  if (response.status == 502) {
    // Status 502 is a connection timeout error,
    // may happen when the connection was pending for too long,
    // and the remote server or a proxy closed it
    // let's reconnect
    await subscribe();
  } else if (response.status != 200) {
    // An error - let's show it
    showMessage(response.statusText);
    // Reconnect in one second
    await new Promise(resolve => setTimeout(resolve, 1000));
    await subscribe();
  } else {
    // Get and show the message
    let message = await response.text();
    showMessage(message);
    // Call subscribe() again to get the next message
    await subscribe();
  }
}

subscribe();

https://javascript.info/long-polling

Answer from Munsterlander on Stack Overflow
🌐
Engage Lab
engagelab.com › blog › ios-web-push-notifications
iOS Web Push Notifications: Overview, Set Up & Optimization
April 30, 2024 - This feature was short-lived for EU users, as Apple removed the support for web-push notifications with the iOS 17.4 release to comply with the EU's Digital Markets Act (DMA). The rest of the world can still enjoy iOS 16 web push notifications.
🌐
MagicBell
magicbell.com › blog › best-practices-for-ios-pwa-push-notifications
4 Best Practices for iOS PWA Push Notifications
Users in the EU can still open Home Screen web apps, but they’ll have to open them within a browser window rather than as a stand-alone app. Another blow is that opening PWAs within a browser means those apps won’t have certain functions, most notably push notifications. What does this mean for developers? When designing iOS PWA push notifications, it’s important to keep in mind that they won’t reach iOS users in the EU.
🌐
Pushpad
pushpad.xyz › blog › ios-special-requirements-for-web-push-notifications
iOS special requirements for web push notifications - Pushpad
In particular, if a user opens ... do anything to avoid that. Even the localStorage of the PWA is separate from that of the browser, so there isn't any workaround for this....
🌐
Apple Developer
developer.apple.com › forums › thread › 732594
PWA push notifications on iOS | Apple Developer Forums
I've resorted to checking navigator.userActivation, which was also added in 16.4, as a workaround to display the "Add to Home Page" message.
🌐
Batch
help.batch.com › en › articles › 7234414-how-do-i-enable-ios-web-push-notifications-on-my-website
How do I enable iOS Web Push notifications on my website? | Help Center — Batch
If configured, Batch Web SDK will show a UI component prompting you to subscribe to notifications. Subscribe and you should see the iOS permission request. You're done! As the Safari Inspector is not available for installed PWAs, you will need to add a way (hidden button, secret tap sequence, etc...) to call the batchSDK('ui.showPublicIdentifiers') javascript method so that Batch displays the Installation ID needed to test your Web Push notification.
Top answer
1 of 6
159

You have only three main options to get push notifications working on iOS for a PWA. In both cases, you must register an App ID on Apple Developer portal, with permission to the appropriate service. For Option 1, your registered App ID must have permission to Apple Wallet. For options 2 and 3, you must have permission to Push Notifications. In both cases, you should record your Bundle ID and Team ID in case you need it later.

  • Option 1 (Easier): Use PassKit to set up a generic Apple Wallet pass, which can broker notifications that are very similar to native ones. Here's some documentation, and here's a working demo of how this can send push notifications to registered devices.

  • Option 2 (Harder): Use Firebase Cloud Messaging or a package like Node-APN to send push notifications the "proper" way, signed with a P12 or P8 key from the Apple Developer Portal. This gets tricky mainly because you need the iOS device identifier, which is only exposed to applications installed natively. I'm afraid I don't have an answer on how to get this device ID from within a PWA, and without it, this method doesn't work.

  • Option 3 (not a PWA): You can use an App ID with a provisioning profile and either a P12 or P8 key, similar to the previous option, but you wrap your application in Apache Cordova, and distribute it (either through the public app store, or using MDM software and via the private Apple Business Manager).

Those are your options. I have exhausted every possible avenue researching this, and I am confident that these will remain your only options through at least the next several months. It's possible we may see further support for Web Push or perhaps just a way to get the device ID from the web in the future, but until that time, this is it. There aren't any other ways to go about this presently.

Source: I architect and develop apps for major brands like Subway, Gartner, Morgan Stanley and PwC (among many others). My research is very recent, and includes direct communication with the head of WebKit at Apple, and also with one of the world's foremost PWA and iOS experts.

2 of 6
39

I just want to let you all know: Apple will support push notifications for web apps! This news was published at the WWDC2022. Apple will release Web Push with Safari 16 on macOS (Ventura) in a few months (2022) and for iOS and iPadOS in 2023.

See: https://webkit.org/blog/12945/meet-web-push/

Find elsewhere
🌐
XDA Developers
xda-developers.com › home › phones, smartwatches, and everything else › how to enable safari push notifications on iphone or ipad
How to enable Safari push notifications on iPhone or iPad
October 3, 2024 - After that, you'll need to manually add each website you'd like to receive notifications from to your Home Screen. Here's how: Launch the Safari app and visit the website you'd like to receive push notifications from.
🌐
Developer Guide
developers.moengage.com › hc › en-us › articles › 13906923326100-Safari-Web-Push-for-iOS-and-iPadOS
Safari Web Push for iOS and iPadOS – Developer Guide
To enable web push notifications for iOS and iPadOS, import the MoEngage service worker and place it in the root file. This step is the same as that of the normal web push notifications integration.
🌐
Firt
firt.dev › ios-15.4b
Push Notifications, WebXR, and better PWA support coming to iOS - firt.dev
There are two new experiments on iPadOS and iOS 15.4: "Built-In Web Notifications" and "Push API," both disabled by default in the latest beta.
🌐
GitHub
github.com › firebase › firebase-js-sdk › issues › 8010
iOS Web Push Device Unregisters Spontaneously · Issue #8010 · firebase/firebase-js-sdk
December 19, 2023 - People mention this can be a cause, Silent Push can cause your device to become unregistered: https://dev.to/progressier/how-to-fix-ios-push-subscriptions-being-terminated-after-3-notifications-39a7 · Safari doesn’t support invisible push notifications. Present push notifications to the user immediately after your service worker receives them. If you don’t, Safari revokes the push notification permission for your site. https://developer.apple.com/documentation/usernotifications/sending_web_push_notifications_in_web_apps_and_browsers
Published   Feb 05, 2024
🌐
GitHub
github.com › kosmigramma › appleshouter
GitHub - kosmigramma/appleshouter: iOS Push Notifications for PWAs and Web apps
You might have figured out that Safari on iOS STILL has no support for the Web Push API. You might have considered making a web wrapper around your app just to get notifications working on iOS.
Starred by 223 users
Forked by 2 users
Languages   JavaScript 99.0% | Dockerfile 1.0%
🌐
Zeroqode Forum
forum.zeroqode.com › t › cant-get-web-notifications-to-work-on-ios › 14841
Can't get Web Notifications to work on iOS - Join the Bubble Community | Zeroqode Forum
June 6, 2024 - I installed and configured the Web Notifications plugin a few days ago. It is working great on desktop Chrome and Android Chrome but I can’t seem to get it to allow notifications on iOS/iPhone. I have the Bubble app on the home screen of the iOS device. I have enabled notifications in Safari ...
🌐
iZooto
izooto.com › ios push notifications › ios push notifications on web is now live with ios 16.4
iOS Push Notifications on Web Is Now Live With iOS 16.4
November 8, 2024 - Most push notification service providers extended support for push notifications on Safari for macOS. This wasn’t possible on iOS. Apple’s support for web push notification standards, as adopted by other browsers such as Google Chrome, Mozilla Firefox, and Microsoft Edge, will simplify work for developers.
🌐
Reddit
reddit.com › r/pwa › push notifications on safari ios
r/PWA on Reddit: Push Notifications on Safari IOS
January 25, 2024 -

A good portion of my PWA users use Safari on iPhone, but I can't figure how to make Push Notifications work os IOS Safari, they work perfectly on chrome for android and windows. But nothing I've tried seems to works on IOS Safari, on apple.developer docs it just say you should use the push notification API and it should work, it didn't, tried following some tutorials, nothing worked, tried using Firebase Messaging Cloud, also didn't work. I know probably I'm doing something wrong, but it's very hard to debug on an iPhone. Even demos like https://webpushtest.com/ or https://progressier.com/pwa-capabilities/push-notifications do not work properly. Do anyone have an example or demo that really works for IOS Safari, for me to look and see what I'm doing wrong?

🌐
Medium
medium.com › @jaybharadiya › my-experience-about-integrating-ios-16-4-web-push-notification-ee729949083c
My Experience about integrating IOS 16.4 Web Push Notification | by Jay Bharadia - Web Dev & Life Coach | Medium
April 11, 2023 - After a lot of debugging and surfing the web 🕸️, I finally found the problem. The issue was that in order to enable push notification, the user had to manually add the app to their home screen in PWA (Progressive Web App) mode and install it.
🌐
Reddit
reddit.com › r/webdev › finally! safari on ios now supports web push — my journey and key takeaways
r/webdev on Reddit: Finally! Safari on iOS now supports web push — My journey and key takeaways
July 4, 2025 -

Back in 2015–2017, web push notifications (especially on Chrome) were extremely popular and often achieved much higher CTR than emails. Over time, however, adoption declined, and most importantly, Safari on iOS didn’t support them at all — which forced many developers (including me) to abandon push-related projects for iOS users.

At that time, I built a push system using Firebase Cloud Messaging (FCM) for Android, and everything worked fine. But on iOS, you needed an Apple Developer Account ($100/year), plus a pretty complex setup with certificates (APNs), which made it frustrating.

Fast forward to October 2024, I decided to revisit and upgrade my old system. The good news: starting from iOS 16.4, Safari now officially supports web push notifications!

Here are the two main requirements:
✅ Your web app must be added to the home screen (like a PWA).
✅ Devices must run iOS 16.4 or newer.

With this change, my system finally works smoothly across Android and iOS Safari.

🔧 Quick steps to enable push on iOS Safari:

  • Implement JavaScript logic to capture push subscriptions from Safari.

  • Use server-side tools (like the web-push library) to send notifications to subscribed endpoints.

  • Test it on a real iOS device, after adding your web app to the home screen.

Overall, push on iOS Safari is no longer impossible — it just needs a few extra steps. If anyone has questions or runs into issues, feel free to ask. Happy to share more details! 🚀

🌐
PushEngage
pushengage.com › home › docs › getting started › setting up web push notifications on ios and ipados
Setting Up Web Push Notifications on iOS and iPadOS - PushEngage
April 16, 2025 - The users must be on iOS or iPadOS 16.4 or later. The user needs to install the web app to their Home Screen by tapping the Share button to open the Share menu, and then tapping “Add to Home Screen”. A user gesture, such as a click or tap on a button is required to show the native permission prompt and allow the permission to receive push notification.