React Native in-app purchases (IAP) let users buy subscriptions, premium features or consumables inside your app. Payments go through Apple's App Store and Google Play billing. You add them with a library such as react-native-iap or RevenueCat's react-native-purchases. Then track each step of the purchase flow as an event, so you can see where users drop out and why.
| Purchase step | Event to log | What to watch |
|---|---|---|
| Paywall or store screen viewed | paywall_viewed | How many users see your offer |
| Product selected | product_selected, with product_id and price | Which products attract interest |
| Purchase started | purchase_started | Drop-off before the store payment sheet |
| Purchase completed | purchase_completed, with revenue and currency | Conversion rate per product and platform |
| Purchase failed or cancelled | purchase_failed, with the error code | Payment errors and cancellations |
| Purchases restored | purchase_restored | Users who reinstall or switch devices |
Adding in-app purchases is the easy part. Making them convert is harder: you have to balance user experience, pricing and timing without getting in the way of the app itself. Get it wrong and users leave the paywall, or the app.
This guide covers the types of in-app purchases and how to set them up in React Native. It then shows how to track and analyze the purchase flow with UXCam, and how to use what you find to improve conversions.
In-app purchases are payments users make inside an app, and they're one of the main ways mobile apps earn money. Users buy extra content, features or services without leaving the app.
You'll find them almost everywhere. Games sell virtual goods and power-ups, productivity apps sell premium features, and news and streaming apps sell subscriptions.
There are three types of in-app purchases, and the right mix depends on what your app sells:
Consumables: One-time items that are used up, such as in-game currency or a temporary boost. They suit games and apps where users benefit from quick extras.
Non-consumables: Purchases users keep for good, such as unlocking a premium feature or a special character.
Subscriptions: Ongoing access to content or features for a recurring fee. They give you steady income, as long as users keep getting value. News apps, streaming services and apps with premium tiers use them.
Knowing these types helps you decide which ones fit your app's goals and your users' needs.
Setting up in-app purchases in React Native takes a library, your products in both stores and a few event handlers:
Install a library: Add a library such as react-native-iap or RevenueCat's react-native-purchases. Both wrap the native purchase APIs for Android and iOS.
Configure your products: Create your in-app products in the Google Play Console and App Store Connect, with their details, prices and any subscription options.
Initialize the library: Import it in your React Native code and initialize it with the configuration it needs, such as API keys or app user IDs.
Fetch available products: Load each product's title, description and price from the store through the library.
Show products and start purchases: Build the screen that lists your products. When a user picks one, call the library's purchase function to open the store's payment sheet.
Handle purchase events: Handle successful purchases, failed transactions and subscription renewals with the events your library provides.
Each library's documentation walks through the full setup, including receipt validation and testing.
Once purchases work, the next question is why users buy, or don't. Analyzing the purchase flow takes five steps:
Choose the right product analytics tool
Collect data automatically
Track in-app purchase events
Analyze conversion funnels
Use qualitative insights
Together, they show your users' purchasing patterns, where the flow loses them and how to raise your conversion rate.
Pick a product analytics tool that engineers, designers and product managers can all use. Inspire Fitness is a good example. Its React Native app offers live and on-demand workout classes for training at home.
As the app grew, the product team wanted to decide what content to push out next, and their existing analytics couldn't answer that. With UXCam's React Native SDK, they set up and tracked the relevant app events in about two hours. Event analytics then showed which workouts and instructors drive the most engagement. That's the same question an in-app purchase strategy starts with: which content is worth putting in front of users next.
The case study reports a 181% increase in new user sign-ups and a 460% increase in time spent in the app, both over three months. Total app sessions grew 415%. Total app crashes fell 40% over one month, and rage taps dropped 56%.
UXCam gives you a detailed view of how users interact with your app. Its lightweight SDK takes a few lines of code to add to a React Native project, plus a tag for each screen. From then on, every session and gesture is recorded, so you have the data before you know which questions to ask.
UXCam's autocapture means you don't have to tag every interaction before you can analyze it. For in-app purchases, that helps in four ways:
Every gesture is recorded: Taps, swipes and other interactions are captured automatically, so you don't miss the moment a user hesitates on your paywall.
You can look back: Smart events let you define an event from data you've already captured and analyze past behavior with it.
Less manual tracking: Your team spends less time instrumenting events and more time acting on them.
New questions, no new release: When a new question comes up, you can often answer it from the data you already have.
Track each step of the purchase flow as its own event, so you can see where users drop out. Log them with RNUxcam.logEvent() and add properties such as product ID, price and currency. Each event can carry up to 20 properties. These are the events to start with:
Paywall or store viewed (paywall_viewed): How many users see your offer.
Product selected (product_selected): Which products attract interest. Add the product ID and price.
Purchase started (purchase_started): How many users open the store's payment sheet.
Purchase completed (purchase_completed): Your conversions. Add revenue and currency.
Purchase failed or cancelled (purchase_failed): Payment errors and cancellations. Add the error code.
Purchases restored (purchase_restored): Users who reinstall or switch devices.
A funnel from paywall to completed purchase shows the step where you lose the most users. In UXCam, you build it from the events above and see the drop-off between each step.
The funnel tells you where users drop off. To find out why, UXCam lets you:
Analyze interactions: Look at what users do at each step of the funnel before they leave.
Spot technical issues: Find crashes, UI freezes and other bugs that stop users from completing a purchase.
Simplify the flow: Remove or rework the steps that confuse users or slow them down.
Numbers show where the purchase flow breaks. Session replays and heatmaps show what users actually experienced there.
Watch user sessions: Watch real users move through your purchase flow. Notice where they pause, hesitate or give up, because those moments point to the problems worth fixing.
Look for rage taps, UI issues and confusing flows: Rage taps, repeated taps on something that doesn't respond, are a clear sign of frustration. So is a step where many users struggle in the same way. Both usually point to a UI issue or a flow you can simplify.
See where users look and tap: Heatmaps show where users focus on your purchase screens. Use them when redesigning your app's layout, so key elements such as the buy button or a promotional offer get noticed.
Improve UI elements and layouts: If users ignore an important button, try changing its size, color or placement. Small changes like these can make a big difference to your purchase flow.
Improving conversions comes down to testing changes, measuring them and tailoring the flow to different users.
Test one version of your purchase flow against another to see which converts better. With your A/B testing tool, try different button copy, product page layouts or numbers of steps. The results show you which approach works, instead of leaving it to opinion.
After you ship a change, watch what it does to your conversion rate. UXCam lets you compare funnel performance before and after the change, so you know whether it actually helped.
Different users buy for different reasons. Segment users by behavior, platform, demographics or purchase history, and compare how each group moves through the purchase flow. You'll often find that one segment struggles where others don't.
Use what you learn from each segment to tailor the purchase experience. That can mean recommending different products, changing the offer or adjusting the message for each group.
Keep experimenting with your purchase flows, offers and price points as the data comes in. Small, regular changes usually beat one big redesign.
A dashboard keeps your purchase metrics in one place. UXCam's dashboards let you track conversion rates and purchase events at a glance, across each of your in-app purchase funnels.
Start with the funnel. Track each step from paywall to completed purchase, find the step that loses the most users, and watch the sessions behind it. That usually shows you the first thing to fix.
UXCam brings these pieces together for React Native: autocapture, event analytics for React Native apps, funnels, session replays and heatmaps. Try UXCam for free and see your own purchase flow. You can also book a demo to see how UXCam fits your app.
FAQ
Install a library such as react-native-iap or RevenueCat's react-native-purchases. Create your products in App Store Connect and the Google Play Console, then fetch them in the app and start purchases through the library. Handle success, failure and restore events, and validate receipts before you grant access.
There are three main types. Consumables are used up, like in-game currency. Non-consumables are bought once and kept, like a premium upgrade. Subscriptions give ongoing access for a recurring fee. Apple and Google both support all three through their billing systems.
Track every step of the funnel: paywall viewed, product selected, purchase started, purchase completed, purchase failed and purchases restored. Add properties such as product ID, price, currency and error code. That lets you see where users drop out and which products convert.
Build a funnel from paywall to completed purchase and find the step with the biggest drop. Watch session replays of users who left at that step to see why. Compare segments such as platform or plan, then test changes to price, layout or copy.
On iOS, use sandbox testers in App Store Connect or StoreKit testing in Xcode. On Android, add license testers and publish the app to an internal testing track in the Google Play Console. Test successful, failed, cancelled and restored purchases on both platforms.
You might also be interested in these;
React Native Session Replay with UXCam: Setup Guide
React Native Mobile App Analytics Tool: UXCam
React Native Performance Monitoring Guide
A Practical Guide to Heatmaps in React Native Apps
How to Optimize Flutter In-App Purchase with Analytics
NET MAUI mobile app analytics tool - Transitioning from Xamarin
Ardent technophile exploring the world of mobile app product management at UXCam.
Conversion funnel analysis is how product teams find where users drop off in critical flows like signup, checkout, and activation, and fix the specific...
Founder & CEO | UXCam
Mobile app analytics takes the guesswork out of understanding how users interact with your app. Learn what mobile app analytics is, why it's important, and how it differs from web...
Product Analytics Expert
The 52 mobile app KPIs worth knowing in 2026, organized by category, with the 10 that actually matter for most product teams...
Founder & CEO | UXCam





