Can StoreKit products be observed with ObservableObject? Can I get notified when a users subscription has lapsed without polling Transaction.currentEntitlements?

I have an auto-renewable subscription. I have two methods helping me keep track of when they are expired

@MainActor public func isPurchased(product: Product) async -> Bool {
        guard let state = await product.currentEntitlement else {
            return false
        }
        
        switch state {
        case .unverified(_, _):
            return false
        case .verified(let transaction):
            await transaction.finish()
            return isTransactionRelevant(transaction)
        }
    }
private func isTransactionRelevant(_ transaction: Transaction) -> Bool {
        if let revocationDate = transaction.revocationDate {
            logger.error("Transaction verification failed: Transaction was revoked on \(revocationDate)")
            return false
        }
        if let expirationDate = transaction.expirationDate,
           expirationDate < Date()
        {
            logger.error("Transaction verification failed: Transaction expired on \(expirationDate)")
            return false
        }
        if transaction.isUpgraded {
            logger.error("Transaction verification failed: Transaction was upgraded")
            return false
        }
        logger.info("Transaction verification succeeded")
        return true
    }

I also have this that I can call to get the latest state of purchases

@MainActor public func updateStoreKitSubscriptionStatus() async {
        var currentProductsPurchased: [Product] = []

        for await result in Transaction.currentEntitlements {
            if case .verified(let transaction) = result {
                if isTransactionRelevant(transaction) {
                    if let product = products.first(
                        where: { $0.id == transaction.productID
                        })
                    {
                        currentProductsPurchased.append(product)
                    }
                }
                
                await transaction.finish()
            }
        }
        self.purchasedProducts = currentProductsPurchased
    }

Right now when a subscription expires the user needs to manually do some action that triggers updateStoreKitSubscriptionStatus() as it appears that expirations do not come through in Transaction.updates.

I am surprised there does not seem to be a better way. Does StoreKit not notify you somewhere that an auto-renewable subscription has expired? Can you observe it in an ObservableObject? Or do I need to just frequently poll Transaction.currentEntitlements even if I dont expect frequent updates?

Can StoreKit products be observed with ObservableObject? Can I get notified when a users subscription has lapsed without polling Transaction.currentEntitlements?
 
 
Q