Oof, good luck with ReactNative. I haven't used any IAP ReactNative library, so I'll speak in terms of native StoreKit.
On a somewhat relieving note, I also have this issue in my Swift-native iOS app, and I made a post about it on the forums, too. It happens both in Sandbox and production, but NOT when using Local StoreKit Testing configuration files.
There are multiple ways for you to observe StoreKit updates. You can observe transactions with Transaction.updates, and also just the subscription updates themselves with SubscriptionStatus.updates. Technically, these are different, but of course a new transaction means potential for a subscription status update.
Basically, I had to implement logic to de-duplicate subscription updates that were redundant.
For every Subscription update I get, I map it to an array for what I see as "active" subscriptions.
The rest of my app will watch for if my array of "active" subscriptions changes. If it changes, then we will enabled/disable features. Duplicate transactions / updates should have no effect on my array and therefore no effect on the rest of my app.
This is similar to Apple's SKDemo, which I highly suggest you look through carefully to get an idea of what I'm talking about.
Topic:
App & System Services
SubTopic:
StoreKit