PushCraft Academy

Master Ionic Capacitor push notifications with Expo React Native. Hands-on weekly course covering local & remote notifications, FCM/APNs...
1 joined
Profile picture
@unfitskylineProfile pictureJun 11

Why Most Expo Developers Get Push Notifications Wrong (And How to Fix It)


If you've ever tried implementing push notifications in an Expo React Native app using Ionic Capacitor, you know the pain:


  • FCM tokens that silently expire and you never find out until users complain

  • APNs certificates vs. keys — which one do you actually need for production?

  • Notifications arriving but not displaying because you missed the Android notification channel setup

  • Deep links that open the app but dump the user on the home screen instead of the right content


Here's the thing — push notifications aren't hard. They're just poorly documented across three different ecosystems (Expo, Capacitor, and Firebase/APNs) that each assume you already understand the other two.


The 3 Mistakes I See Constantly


1. Skipping Local Notifications Entirely

Most devs jump straight to remote push via FCM. But local notifications are your testing foundation. If you can't trigger and display a local notification reliably, you have no way to isolate whether a remote push failure is a server problem, a token problem, or a display problem.


2. Not Handling the "Cold Start" Tap

When a user taps a notification while your app is killed, the startup flow is completely different from a foreground tap. If you only handle pushNotificationActionPerformed in your main component, you'll miss cold-start taps because the listener isn't registered yet.


// This listener needs to be registered BEFORE your app component mounts
PushNotifications.addListener('pushNotificationActionPerformed', (notification) => {
  // Store the deep link data and process it after navigation is ready
  pendingNotificationAction = notification;
});


3. Ignoring Silent Pushes for Data Sync

Silent pushes let you update your app's data in the background without disturbing the user. They're essential for chat apps, content feeds, and anything where freshness matters. Yet most tutorials completely ignore them.


The Bottom Line


Push notifications are a system — device registration, server-side sending, display handling, deep linking, and background processing all need to work together. Miss one piece and the whole thing feels broken.


I built a full course covering all of this from zero to production. If you're tired of piecing together Stack Overflow answers, check it out.


What's the biggest push notification headache you've dealt with? Drop it in the comments 👇