← Notification attribution for PWAs on macOS · Chrome 152 reference
v152 · behavior contract · notifications
requireInteraction is not honored for installed PWAs on macOS
With notification attribution active (Chrome 152+, macOS, installed PWAs), Chrome no longer supports the requireInteraction notification field for app notifications: whether an alert stays on screen is a per-app macOS setting controlled by the user, not a per-notification setting controlled by the app.
requireInteraction: true to keep calls, alarms, or time-critical alerts on screen until the user acts, that guarantee disappears for installed PWAs on macOS in Chrome 152. Users can set the PWA's alert style to “Banners” (auto-dismissing) in macOS settings, and the web app cannot override it. Provide an in-app fallback (for example a full-screen ringing UI) for flows that must not be missed.
syntax
The web API surface is unchanged — the field still exists and is still specified:
// Notifications API (WHATWG) — NotificationOptions.requireInteraction
new Notification(title, { requireInteraction: true });
serviceWorkerRegistration.showNotification(title, { requireInteraction: true });
The WHATWG Notifications Standard defines requireInteraction as a notification's require interaction preference (a boolean, initially false): “When true, indicates that on devices with a sufficiently large screen, the notification should remain readily available until the end user activates or dismisses the notification.”
inputs
| Input | Contract under attribution (Chrome 152+, macOS, installed PWA) |
|---|---|
requireInteraction: true | Ignored. The notification is delivered through the PWA's app shim via UNUserNotificationCenter; persistence (banner vs. alert style) is the user's per-app macOS setting for the PWA, set in System Settings → Notifications |
requireInteraction: false / omitted | Unchanged — default behavior; the alert follows the same per-app macOS setting |
Scope of the change, per the PSA: “For installed PWAs, Chrome will no longer support the requireInteraction field for notifications.” Notifications posted by ordinary (non-installed) tabs in Chrome on macOS are not affected by this feature — they continue to be attributed to Google Chrome and keep the pre-152 behavior.
outputs
- The
Notificationobject is still created and itsrequireInteractiongetter still reflects the value passed in the options — the field is not removed from the API. - The observable difference is at the OS level: an attributed PWA notification's on-screen persistence follows the PWA's macOS alert-style setting (“None” / “Banners” / “Alerts”), regardless of the field's value.
- Per the PSA, this “matches the already shipping behavior in WebKit” for installed web apps on macOS.
errors
None. Passing requireInteraction never throws and produces no console warning — it is silently ignored for attributed PWAs. There is no programmatic signal that the preference was disregarded; developers should treat the field as advisory on this platform.
context and exposure
Applies only when all attribution requirements hold: macOS, the feature enabled (default in 152), the app installed with OS integration, an app shim registered, and the shim ad-hoc signed — see the requirements table. When any condition fails, the notification is attributed to Google Chrome and requireInteraction behaves as before.
There is no web-exposed capability detection for “is this notification attributed?” — no API reports which delivery path was used. A pragmatic proxy is to check whether the page is running as an installed PWA (matchMedia('(display-mode: standalone)')) on macOS Chrome 152+ and avoid depending on the field there.
lifecycle
- The web app creates the notification (page
new Notification()or service workershowNotification()) withrequireInteractionset. - Chrome resolves the posting context to an installed app id (
GetAppIdForNotificationAttribution) and routes delivery to the PWA's app shim notification provider. - The shim posts a
UNNotificationRequesttoUNUserNotificationCenter.currentNotificationCenter. macOS applies the PWA's per-app notification settings — including alert style — with no channel for the app to request persistence. - The alert auto-dismisses or stays per the user's setting; activation/dismissal events flow back through the shim's action handler to the service worker as usual (
notificationclick,notificationclose).
examples
// Before (pre-152 macOS / other platforms): alert persists until dismissed
reg.showNotification("Incoming call", {
body: "Ada is calling",
requireInteraction: true,
});
// Chrome 152+, installed PWA on macOS: same code, different outcome.
// The field is ignored; the user's per-app alert style decides.
// Robust pattern: don't encode "must persist" in the notification —
// surface critical state in-app as well.
const isMacPWA =
matchMedia("(display-mode: standalone)").matches &&
/Mac OS X/.test(navigator.userAgent);
if (isMacPWA) {
showInAppRingUI(); // your own unmissable surface
}
reg.showNotification("Incoming call", { body: "Ada is calling" });
Try it in the Chrome Platform Showcase notification capability lab (route HEAD-checked 200, 2026-07-29).
Source: behavior per the PSA; demo per chrome-platform-showcasebrowser compatibility
From BCD api/Notification.json (fetched 2026-07-29), with the macOS attribution change annotated — BCD itself has no entry for the attribution behavior:
| Browser | requireInteraction | Notes |
|---|---|---|
| Chrome | 47 | 152 (macOS): ignored for installed PWAs with attribution (listing, PSA) |
| Edge | 17 | No separate statement on the macOS attribution change |
| Firefox | 117 (partial) | “Only supported on Windows. Behind a flag on other operating systems” (dom.webnotifications.requireinteraction.enabled) |
| Safari | No support | BCD version_added: false; installed web apps on macOS use per-app OS settings — the behavior Chrome aligns to |
security and privacy
- User control over app control. Persistence moves from a per-notification app decision to a per-app user decision — users can no longer be forced to keep an alert on screen by an installed PWA on macOS.
- No fingerprinting surface added. The field continues to be accepted identically; there is no signal exposing whether attribution is active or which alert style the user chose.
- Do not compensate invasively. Because the platform intentionally removes the persistence guarantee, workarounds that try to recreate it (wake-lock tricks, re-posting loops) fight the user's explicit OS-level choice.
specifications
WHATWG Notifications API Standard — requireInteraction | Living Standard — unchanged; the macOS behavior is a platform constraint layered on top, not a spec change |
see also
- Notification attribution for PWAs on macOS — overview
- App badging requires notification permission
- Enterprise deployment (MDM pre-grant)
- ChromeStatus 5863296436666368
- MDN — Notification.requireInteraction (API reference; does not document the macOS attribution behavior — checked 2026-07-29)