5月13日、WebKitで「Safari 18.5 の WebKit 機能(WebKit Features in Safari 18.5)」と題した記事が公開された。この記事では、Safari 18.5に搭載された新機能や修正事項について詳しく紹介されている。
中でも注目は、Declarative Web Pushが実装されたことだ。
以下に、Safari 18.5に搭載されたDeclarative Web Pushについて簡単に解説する。

Declarative Web Pushとは
Safari 18.5 では Service Worker を必要としない Declarative Web Push が利用可能となった。標準化された JSON 形式を用いることで実装が極めて容易になり、不要な常駐処理が省かれるためバッテリー消費も削減できる。プライバシー保護と省電力設計を両立しつつ、未対応エンジン向けのフォールバックも用意されている点が特徴だ。
{
"web_push": 8030,
"notification": {
"title": "WebKit.org — Meet Declarative Web Push",
"lang": "en-US",
"dir": "ltr",
"body": "Send push notifications without JavaScript or service worker!",
"navigate": "https://webkit.org/blog/16535/meet-declarative-web-push/",
"silent": false,
"app_badge": "1"
}
}
Declarative Web Push は JSON ファイルをサーバに設置し、プッシュメッセージも JSON で送信するだけ で動作する。ブラウザは Service Worker の登録やバックグラウンド実行を行わず、システムレベルのプッシュ通知 API を直接利用するため、従来の Web Push よりも電力効率に優れる。
通知スキーマ
通知は上記のnotification
オブジェクトで定義され、タイトル・本文・遷移先 URL などを指定する。送信方法
送信側は JSON を HTTP POST で Apple Push Notification service (APNs) に渡すだけでよい。認証は通常の APNs トークンを用いる。
以下は簡易的な送信サンプルだ。トークンやエンドポイント URL は実際の環境に合わせて置き換える。
curl -X POST \
-H "apns-topic: com.example.web" \
-H "authorization: bearer <JWT_TOKEN>" \
-H "content-type: application/json" \
--data @notification.json \
https://api.push.apple.com/3/device/<DEVICE_TOKEN>
これだけで Safari は JSON を解釈し、ユーザーにネイティブ通知を表示する。Service Worker が不要なため、JavaScript の登録コードやバックグラウンドスレッドの維持は一切発生しない。
Declarative Web Pushにより、Webブラウザ上でのプッシュ通知送信が今までよりはるかに容易に、効率的になることから、Webプッシュの利用がより促進されることが今後期待される。
Safari 18.5でのアップデート内容全体はWebKit Features in Safari 18.5を参照していただきたい。