RevenueCat vs Adapty
RevenueCat versus Adapty: in-app subscription management, paywall A/B testing, analytics, pricing, and which platform wins for monetization.
Tiered 30%/15% commission, 175 regions, new EU commercial terms from October 1, 2026
10-25% + 5% by revenue tier and install age in EEA/UK/US since June 30, 2026
There's no single winner; your revenue mix decides. For EEA/UK/US subscriptions, Google takes 10% + 5% with no install-age distinction, while a non-SBP Apple developer pays 30% in year one. On the first $1 million earned annually, both stores converge at the 15% band. If you sell in the EU, factor in Apple's October 1, 2026 table separately.
| Category | App Store | Google Play |
|---|---|---|
| Performance | 7/10 | 7/10 |
| Ease of Learning | 6/10 | 7/10 |
| Ecosystem | 9/10 | 8/10 |
| Community | 8/10 | 8/10 |
| Job Market | 8/10 | 7/10 |
| Future-Proof | 8/10 | 8/10 |
// StoreKit 2 - load a subscription product and estimate net price after commission
import StoreKit
func loadSubscriptionAndEstimateNet(productID: String, isSmallBusinessProgram: Bool, firstYear: Bool) async throws {
let products = try await Product.products(for: [productID])
guard let product = products.first else { return }
// Apple's official rates: SBP=15% flat, standard=30% in year one, 15% after year one
let commissionRate: Decimal
if isSmallBusinessProgram {
commissionRate = 0.15
} else {
commissionRate = firstYear ? 0.30 : 0.15
}
let price = product.price
let netToDeveloper = price * (1 - commissionRate)
print("Ürün: \(product.displayName)")
print("Liste fiyatı: \(product.displayPrice)")
print("Geliştiriciye net kalan (tahmini): \(netToDeveloper)")
// Purchase flow
let result = try await product.purchase()
switch result {
case .success(let verification):
if case .verified(let transaction) = verification {
await transaction.finish()
}
case .userCancelled, .pending:
break
@unknown default:
break
}
}// Play Billing Library 9.1.0 - query subscription, estimate net revenue (Kotlin)
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingClient.ProductType
import com.android.billingclient.api.BillingClient.BillingResponseCode
import com.android.billingclient.api.QueryProductDetailsParams
fun queryAndEstimateNet(client: BillingClient, productId: String, region: String) {
val product = QueryProductDetailsParams.Product.newBuilder()
.setProductId(productId)
.setProductType(ProductType.SUBS)
.build()
val params = QueryProductDetailsParams.newBuilder()
.setProductList(listOf(product))
.build()
// PBL 8.0.0+: the listener receives a QueryProductDetailsResult
client.queryProductDetailsAsync(params) { billingResult, result ->
if (billingResult.responseCode != BillingResponseCode.OK) return@queryProductDetailsAsync
for (details in result.productDetailsList) {
val offer = details.subscriptionOfferDetails?.firstOrNull() ?: continue
val micros = offer.pricingPhases.pricingPhaseList.first().priceAmountMicros
// EEA/UK/US subscription: new and existing installs are the same, 10% + 5% billing fee
// Remaining markets (including TR): flat 15%
val fee = if (region == "EEA_UK_US") 0.10 + 0.05 else 0.15
println("${details.title}: ${micros / 1_000_000.0 * (1 - fee)}")
}
// result.unfetchedProductList: products that could not be queried
}
}
There's no single winner; your revenue mix decides. For EEA/UK/US subscriptions, Google takes 10% + 5% with no install-age distinction, while a non-SBP Apple developer pays 30% in year one. On the first $1 million earned annually, both stores converge at the 15% band. If you sell in the EU, factor in Apple's October 1, 2026 table separately.
Get Free ConsultationApple: 30% standard, 15% under the Small Business Program, subscriptions 30% in year one then 15% after. Google Play: in remaining markets, 15% on the first $1 million and 30% above it, subscriptions flat at 15%. In EEA/UK/US, every transaction is 10% + 5% on the first $1 million; above that, subscriptions stay at 10% + 5%, while non-subscription transactions are 20% + 5% for new installs and 25% + 5% for existing installs.