Every app developer’s aim is to get feedback/review for their app to get better exposure and encourage others to use their apps. Usually, the developer presents a custom review view(UIView) with star images in another view(UIStackview) on to their app. Then, the user ratings are recorded in the backend, but when it comes to app store review, the user generally clicks“Not now” option, as the user will be taken out from the current app’s screen to Apple App store page.

Do we miss feedback from the user because of this behavior?

Now, Apple has introduced ‘SKStoreReviewController’, which presents a review UIView on your app screen, from which ratings and reviews are recorded. There is no need for any user to navigate to Apple app store for submitting his/her review. Cool. Isn’t it?

The apps like Clash Royale, Numerics, Adobe sketch, Google Drive and so on has implemented this feature and few statistics say Instagram has raised their rating on Apple app store.Here is the link! See below images for the look and feel of Numerics app on SKStorereviewController.

Here is Adobe Sketch,

So, the simple steps are:

  1. import StoreKit.
  2. Check if your iOS version is 10.3 and above.
  3. Then call, SKStoreReviewController.requestReview()

You will be presented with a review view and stars for rating the app.

Great, but we have to be aware of certain points while implementing ‘SKStoreReviewController’ view.
Those are:

  1. You should only call request review when it makes sense in the user experience flow of your app, and then call the method only after the user has demonstrated some engagements on an app.

  2. You have no control over exactly what’s happening and the dialog displayed or its callbacks, that is determined entirely by the system.

  3. The system may or may not show a rating prompt, it’s not appropriate to call the API in response to a button tap or other user action because it is not going to happen every time.

  4. No matter how many times you call the API, the system will only show up to a maximum of 3 prompts to the same user in a 365-day period.

  5. The App Store defaults to showing ratings and reviews only for your app’s most recent version.

  6. The User can turn off this in settings.

  7. Apple might mandate this flow in future.

A better way to write ‘SKStoreReviewController’ from my perspective would be:

  1. Writing a separate class for all ‘SKStoreReviewController’ related checks, imports, and methods.

    2. The logic on showing review view can be based on no of launches made by any user in the app. The launch count will be stored in NSUserDefaults.

    3. To decide whether review view to be shown or not.

    4. To call ‘showReviewView’ method from any view controller of the app.

    5. Now you can call ‘’showReviewView’ like this:

    Minimum launch count is ‘Int’ value here, which we decide on the number of launch counts. Instead, we can also add logic like on every ‘Nth’ launch to show this review view. But we have to be sure that users open the app frequently to have Nth launch logic.:)

I have seen this SKStoreReviewController in almost all gaming apps (like Clash Royale which I play frequently) and few other production apps in the app store.This API is definitely a big advantage for iOS developers.