`entitlementVerificationMode` defaults to `DISABLED` and overrides the native default (`INFORMATIONAL`)

Open Beginner friendly
#2,127 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@AlvaroBrey is already working on this.

Since Nov 9, 2026.

  • #2128 by @AlvaroBrey — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
75/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
android, ios, react-native, typescript

Research direction

The issue names dist/purchases.js and the configure option’s JSDoc; start by tracing how entitlementVerificationMode is defaulted and passed to the native SDK. Compare this behavior with the native default described in the issue and choose whether to omit the unset option or default it to INFORMATIONAL. Done means configuring without the option no longer forces verification to DISABLED.

Written by the indexing model from the issue text.

Description

Describe the bug

Since iOS SDK 5.15.0 and Android SDK 8.11.0, Trusted Entitlements is on by default (informational). The docs say so too.

In react-native-purchases, Purchases.configure sets entitlementVerificationMode to ENTITLEMENT_VERIFICATION_MODE.DISABLED when the app does not pass it. It then sends this value to the native SDK, and the native SDK applies it. So RN apps that do not set the option get verification turned off. Native apps on the same SDK version get it on.

  1. Environment

    1. Platform: iOS and Android
    2. SDK version: 10.10.0. The same code is in 11.0.1.
    3. OS version: any
    4. Xcode/Android Studio version:
    5. React Native version: 0.86
    6. SDK installation (CocoaPods + version or manual): CocoaPods, RevenueCat 5.89.0, PurchasesHybridCommon 19.0.0
    7. How widespread is the issue. Percentage of devices affected: all devices of apps that do not set entitlementVerificationMode
  2. Debug logs that reproduce the issue

  3. Steps to reproduce, with a description of expected vs. actual behavior

    1. Call Purchases.configure({ apiKey, appUserID }) without entitlementVerificationMode.
    2. Call Purchases.getCustomerInfo().
    3. Read customerInfo.entitlements.verification.

    Expected: VERIFIED, the same as a native app on iOS 5.15.0+ or Android 8.11.0+.
    Actual: NOT_REQUESTED.

  4. Other information

    • Default in the code: dist/purchases.js, in configure: entitlementVerificationMode = _f === void 0 ? ENTITLEMENT_VERIFICATION_MODE.DISABLED : _f. The JSDoc also says [entitlementVerificationMode=ENTITLEMENT_VERIFICATION_MODE.DISABLED].
    • On Android, purchases-hybrid-common applies it in common.kt with entitlementVerificationMode(EntitlementVerificationMode.valueOf(verificationMode)). On iOS, Purchases+HybridAdditions.swift does the same with .with(entitlementVerificationMode:).
    • The option was added in #678 (Nov 2023). The native default was still disabled then.
    • The Unity SDK had the same problem and fixed it in RevenueCat/purchases-unity#1018 and RevenueCat/purchases-unity#1108.
    • Suggested fix: do not send a value when the app does not set one, so the native default applies. Or change the default to INFORMATIONAL.

Additional context

The setting is easy to miss. Most RN developers will assume they get the native default.

Dominant language
TypeScript
Stars
1.2k
Forks
124
Avg merge
1d 3h
Merged PRs (30d)
69

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from RevenueCat/react-native-purchases

All issues in RevenueCat/react-native-purchases

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.