When all the noise around the past WWDC 23 has gone down, it’s time to calmly sort out all the updates related to mobile subscriptions. We’ve collected the most important moments, so you don’t have to go through tons of information. Enjoy!
New merchandising views
Creating native paywalls and adding in-apps will become easier with the addition of new views –
SubscriptionStoreView. Let’s break down what they shall be used for:
ProductView– merchandises an individual in-app purchase.
StoreView– merchandises a collection of in-app purchases.
SubscriptionStoreView– merchandises a collection of auto-renewable subscription options in a subscription group (basically a paywall).
Thanks to the familiar features of the SwiftUI APIs, the integration of these views should be quite convenient.
SubscriptionStoreView looks the most intriguing as it’s basically a prepared paywall template that fetches and displays all the data for you in one line of code. Another good news is that such paywalls will work across all the Apple platforms, even WatchOS.
But despite the fact that this will simplify and facilitate the process of creating a paywall, there are still a number of inconveniences, like limiting template customization and API availability only on devices with iOS 17+. As an alternative, you can consider Adapty’s Paywall Builder, which allows you to personally design and build a native paywall for iOS and other platforms in a few minutes.
StoreKit 2 transaction enhanced
Within StoreKit 2, additional fields have been introduced to enhance transaction details. These new fields include:
storefront– the region and unique identifier of the App Store storefront for the device.
storefront country code– the three-letter code representing the country or region associated with the App Store storefront.
reason– the field that provides valuable insights, indicating whether a purchase is user-initiated or a renewal.
RenewalInfo now incorporates the next renewal date. This addition proves highly beneficial in determining the upcoming billing cycle for the user.
All these fields are introduced in Xcode 15 and are backward compatible with iOS 15 and 16.
Get an ebook with insights
and advice from top experts
A new reason for StoreKit messages added
A new message reason was introduced called
billingIssue. This message is available starting in iOS 16.4. The App Store sends this message when a subscription fails to renew because of a billing issue. StoreKit shows a Billing Problem sheet, and the user can resolve the issue without leaving the app. When the App Store fails to renew a subscription, the subscription goes into a Billing Retry state.
More price points added
Apple now allows you to choose a price tag for subscriptions and IAP from 900 options! More precisely, by default, only 800 points will be available, but upon request, Apple will be able to open access to another hundred. All of this applies to 44 currencies and 175 regions.
Base region and base price introduced
Applications now require a base region to be set for automatic pricing in other regions and currencies. For example, if you select the United States as your base region and set a base price, the App Store will automatically calculate prices for other regions based on exchange rates and taxes. Prices in the regions will be automatically updated as exchange rates and tax rates fluctuate. It will also be possible to schedule a change in the base price in advance. All this applies to paid applications and consumable in-apps.
Product Page Optimization and Custom Product Pages improved
There’s been an update to App Store Connect that now allows you to run Product Page Optimization (PPO) tests even after you’ve submitted a new version of your app for publication. It is quite possible that such a change will increase the popularity of PPO among ASO specialists. In addition to PPO, the update also affected Custom Product Pages (CPP) – now you can create custom product pages and run PPO tests even for applications in pre-order status.
Customization for promoted in-app purchases added
A new Swift API for managing promoted in-app purchases was introduced. It allows customizing how your products are displayed locally on the current device. For example, if a user buys one of several products of yours, you can hide it, so the App Store doesn’t show it again.
You can also manage the product order, or the subset of products featured, based on a current state in your app, for example, a level advancement in a game. You’ll also have the option to use the App Store promotion image in the product view in your app. The icon will appear alongside the in-app purchase in your app.
More possibilities for App Clips added
It’s worth mentioning that App Clips has also been updated: now the “mini-app” can weigh up to 50 MB, and can also be opened by a link inside other applications, including other apps that you own, providing more cross-selling opportunities.
Guidelines and privacy renewed
If you have ads in your app, you should pay attention to the new paragraph 2.5.18 of the App Review Guidelines. It states: “Apps that contain ads must also include the ability for users to report any inappropriate or age-inappropriate ads”. It’s not yet very clear whether Apple will require a specific button in the app or something like that, but this needs to be monitored and taken into account during the development phase. This is likely due to security and privacy updates, where a lot of attention was paid to labeling inappropriate content.
They also updated section 4.1 on Copycats, where they stated: “Submitting apps which impersonate other apps or services is considered a violation of the Developer Code of Conduct and may result in removal from the Apple Developer Program”. This hints that Apple will spend even more time checking applications for originality and ruthlessly removing clones.