React Native Push Notifications, Deep Links and Payments: Key Concepts
Understand how push notifications, deep links and in-app payments work so you can design them correctly.
How push notifications work
Push notifications pass through platform services: Apple Push Notification service for iOS and Firebase Cloud Messaging for Android. Your app asks the user for permission, receives a device token from the platform and sends that token to your backend. When something happens, such as an order shipping, your backend sends a message to the platform service addressed to that token, and the platform delivers it to the device. Services such as Expo's push service wrap these steps behind one API.
Design the backend side carefully. Store tokens per user and per device, because one person may have a phone and a tablet. Remove tokens the platform reports as invalid. Ask for permission at a moment that makes sense, such as after a user places their first order, rather than on first launch with no context. Use notification channels or categories so users can turn off promotions without losing order updates.
Deep links and universal links
Deep links open a specific screen in your app from a URL. A custom scheme such as fieldorders://orders/42 is simple but only works when the app is installed. Universal links on iOS and App Links on Android use normal https URLs that open the app if installed and fall back to your website otherwise. They require hosting verification files on your domain, as described in the Apple and Android documentation.
Map URLs to screens in one configuration, as shown below, and test every route. Treat incoming link parameters as untrusted input, because anyone can craft a link. Validate IDs, check that the signed-in user may see the requested record and handle links that arrive before sign-in by sending the user through login and then on to the target screen. Push notifications often carry a deep link, so the same routing serves both features.
Payments: physical goods versus digital content
Payments in mobile apps split into two worlds, and choosing the wrong one can get an app rejected. Physical goods and real-world services, such as groceries, taxi rides or clinic appointments, are usually paid through a payment gateway like Stripe or Razorpay. Digital goods and subscriptions used inside the app are generally subject to Apple and Google in-app purchase rules. These rules differ by country and change over time, so read the current App Store Review Guidelines and Google Play payments policy for each market.
Whatever the provider, follow one core pattern: the server is the source of truth. The app collects payment details through the provider's own SDK, so card data never touches your servers. Your backend creates the payment or order, and confirms success through a verified server-side callback such as a webhook or receipt validation. Never mark an order as paid because the app said so, because a modified client can claim anything.
- Create payment intents or orders on the server
- Collect card or wallet details only through the provider SDK
- Confirm payment through webhooks or receipt validation
- Grant access or ship goods only after server confirmation
Testing these features
Push, deep links and payments are hard to test in a simulator alone, so plan device testing early. Test notifications when the app is in the foreground, in the background and fully closed, because each case follows a different code path. Test deep links from email, messaging apps and the browser. Use the sandbox or test modes of every payment provider, and include failure cases such as declined cards, cancelled flows and slow webhooks.
Write a short test matrix for these features and run it before every release. For an Indian app, include UPI flows if your gateway supports them; for a Gulf app, include the local cards and wallets your users prefer. At XDQ Labs this matrix lives next to the release checklist so it never gets skipped. Bugs in these three areas are the ones users remember, because they touch money and time-sensitive information.
- Push flows: permission, device token, backend storage, platform delivery
- Universal links and App Links need domain verification files
- Treat deep link parameters as untrusted input
- Digital goods and physical goods follow different store payment rules
- The server, not the app, confirms that a payment succeeded
Draw a sequence diagram for your app's push notification flow from permission request to delivery, including token storage and cleanup. Write a linking configuration for three screens and test each URL on a device. For your payment flow, list which server event confirms payment and what the app shows while waiting.
Check your understanding
1. Where should the decision that a payment succeeded be made?
2. What do universal links and App Links require besides app configuration?
3. When is a good time to ask for notification permission?
From USD 49 or INR 2,999 a month. A person approves every step.