StoreKit v2: autoRenewStatus returns 0 right after purchase on iOS 26.1

Hi everyone,

I’m implementing subscriptions using StoreKit v2, and I’ve noticed a behavior change starting with iOS 26.1. I’d like to ask if anyone else has experienced the same issue.

■ Issue
Immediately after purchasing a new subscription, the value of auto_renew_status (or autoRenewStatus) returned in the receipt is 0 (auto-renew OFF). This issue occurs on iOS 26.1. On iOS 26.0 and earlier, the same parameter returned 1 (auto-renew ON) right after purchase.

Sometimes, after executing a “restore” operation, the value changes to 1 later.

Since we’ve been using this parameter to determine whether a user’s subscription is active or not, the current behavior is causing some difficulties on our end.

■ Questions

  1. Has anyone else observed this issue (where autoRenewStatus is 0 immediately after purchase on iOS 26.1 or later)?
  2. How are you handling or working around this behavior in your implementation?
  3. If autoRenewStatus is unreliable, we’re considering determining the subscription state based on receipt fields instead.

Would this approach be reasonable?

  1. "status" is 1 (indicates active subscription)
  2. "expire_time" is in the future
  3. "deleted_at" is null

If anyone has encountered the same behavior or knows of any Apple-recommended implementation approach, I’d really appreciate your insights.

Thank you! 🙏

I can confirm that on the app side since iOS 26.1 we are observing same behavior:

  • try await product.purchase(options: options) returns .success
  • transaction under .verified result has productType == .autoRenewable
  • but await transaction.subscriptionStatus returns nil

According the documentation it shouldn't happen:

@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, visionOS 1.0, *)
extension Transaction {

    /// The full subscription status for the transaction.
    ///
    /// If the transaction is not for a subscription (i.e. ``Transaction/productType`` is not
    /// ``Product/ProductType/autoRenewable``), the value will always be `nil`. The value
    /// may be `nil` if there is an error retrieving the subscription status.
    ///
    /// - Note: The value's ``Product/SubscriptionInfo/Status/transaction`` property
    ///         represents the latest transaction for the subscription, which is not necessarily the same
    ///         as this transaction.
    @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, visionOS 1.0, *)
    @backDeployed(before: iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0)
    public var subscriptionStatus: Product.SubscriptionInfo.Status? { get async }
}
StoreKit v2: autoRenewStatus returns 0 right after purchase on iOS 26.1
 
 
Q