Code
25
SDK error · code 25
What it means
emptySubscriberAttributes (code 25) means the SDK tried to sync customer attributes but had none to send. It is not a failure of the purchase or of the server, and no request is made. Catch it, ignore it, and do not show the customer anything. It usually means you called a sync with nothing set.
Code
25
iOS (Swift)
ErrorCode.empty
Android (Kotlin)
PurchasesErrorCode.Empty
Causes
Fix
Call setAttributes, setEmail and the other setters first. The SDK syncs them for you, so you rarely need a manual sync.
In a completion handler, ignore this code. There was nothing to do.
If you call a sync by hand after every launch, delete it. The SDK syncs attributes on its own.
In your app
// Swift
do {
let result = try await Purchases.shared.purchase(package: package)
} catch let error as ErrorCode where error == .emptySubscriberAttributes {
// handle empty subscriber attributes
}
// Kotlin
if (error.code == PurchasesErrorCode.EmptySubscriberAttributesError) { /* ... */ } On RevenueDot: RevenueDot is not involved, because the SDK sends no request when there are no attributes.
FAQ
No. It says an attribute sync found nothing to send. Ignore it.
The shared error list defines the code for every platform. The Android source does not raise it today.
In React Native, compare error.code with PURCHASES_ERROR_CODE.EMPTY_SUBSCRIBER_ATTRIBUTES_ERROR. In Flutter, convert the PlatformException with PurchasesErrorHelper.getErrorCode(e) and compare the result with PurchasesErrorCode.emptySubscriberAttributesError.
Get started
RevenueDot answers the same SDK calls with the same error codes. Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue.
Already have an account? Sign in · Prefer your own servers? Self-host free