Send web push notifications from Next.js
Web push on Next.js works through the same InstantPWA snippet you add for install prompts — placed in app/layout.tsx or pages/_document.tsx via root layout via next/script with strategy="afterInteractive". Once a visitor opts in, you can send push notifications from your InstantPWA dashboard to anyone who granted permission, including installed home-screen users on iOS 16.4+.
Steps
- 1
Open app/layout.tsx or pages/_document.tsx
Go to root layout via next/script with strategy="afterInteractive".
- 2
Paste the InstantPWA snippet
Drop the one-line async script tag in the Next.js head section — no build step or dependency install.
- 3
Enable push in your dashboard
Turn on Web Push in InstantPWA settings and upload your notification icon and default badge.
- 4
Publish and collect opt-ins
Once live on Next.js, the popup asks for notification permission after install (or standalone, if you enable prompt-first push).
- 5
Send a test push
Send a test notification from the dashboard to your own opted-in browser before sending to all subscribers.
Constraints to know
- App Router and Pages Router both work, but the script must be a Client Component boundary (next/script) — plain <script> tags inside a Server Component layout get stripped by React's hydration diffing.
- On Vercel Edge Middleware or strict CSP setups, add the InstantPWA domain to script-src or the snippet will be blocked silently.
FAQ
Does web push work without the visitor installing the app?+
On Chromium browsers and desktop, yes. On iOS Safari, push requires the visitor to add the site to their home screen first (iOS 16.4+).
Can I segment who receives a push?+
Yes — the InstantPWA dashboard supports targeting by page visited, device type and custom events you send from your site.
Is there anything Next.js-specific I need to configure for push?+
No — push registration is handled entirely by the InstantPWA snippet once it's live on Next.js; there's no separate push API key to manage.