Comprehensive mobile push notification guide for iOS (APNS) and Android (FCM). Use when setting up push notifications, debugging delivery issues, implementing background/foreground handlers, managing push tokens, integrating deep linking, or troubleshooting platform-specific issues.
View on GitHubclix-so/skills
push-notification-best-practices
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/clix-so/skills/blob/main/skills/push-notification-best-practices/SKILL.md -a claude-code --skill push-notification-best-practicesInstallation paths:
.claude/skills/push-notification-best-practices/# Push Notification Best Practices
## Overview
Comprehensive guide for implementing and troubleshooting push notifications in mobile applications. Covers iOS (APNS), Android (FCM), React Native, Expo, and Flutter platforms with platform-specific configurations, token management, message handling, and deep linking patterns.
## Platform Support Matrix
| Platform | Offline Push | Notification Bar | Click Navigation | In-App Toast | Background Handler |
|----------|--------------|------------------|------------------|--------------|-------------------|
| iOS | APNS | System | Deep Link | Custom | data-only payload |
| Android | FCM | System | Intent | Custom | data-only payload |
| React Native | APNS/FCM | System | React Navigation | Custom | setBackgroundMessageHandler |
| Expo | Expo Push | System | Linking | Custom | TaskManager |
| Flutter | APNS/FCM | System | Navigator | Custom | onBackgroundMessage |
## Decision Trees
### Permission Request Timing
**When to request notification permission?**
```
User installing app
|
v
[First launch?] ──Yes──> [Show value proposition first]
| |
No v
| [User action triggers need?]
v |
[Already granted?] Yes
| |
Yes v
| [Request permission] ──> 70-80% acceptance rate
v
[Notifications ready]
```
| Timing | Acceptance Rate | Use Case |
|--------|-----------------|----------|
| Immediate (app launch) | 15-20% | Low engagement apps |
| After onboarding | 40-50% | Standard apps |
| User-initiated action | 70-80% | High engagement apps |
**Recommendation:** Request after explaining value or when user enables a related feature.
### Silent vs Visible Notification
**Which payload type should I use?**
```
[What's the purpose?]
|
+──> Time-sensitive user alert ──