Thursday, May 28, 2020

Mac App Store Review Prompting Bug

Steve Troughton-Smith:

When macOS bugs, completely out of developer control, translate into bad reviews 😭 Anybody on the StoreKit team know why SKStoreReviewController can get stuck in a loop on macOS Catalina and keep presenting incessant ratings dialogs even when the app is not running?

The irony is that the whole point of this API was to prevent third-party code from prompting the user too often.

Will Cosgrove:

Virtually all the bad Transmit reviews are due to this bug. We’ve been trying to get it fixed for years.

Xavi Moll:

I also got a 1 star rating this morning due to that bug

Previously:

8 Comments RSS · Twitter

John Daniel

The developer literally has to make the function call to trigger this. Apple has web pages, videos, and sample code explaining how and when to ask for reviews for the best user experience. The only control Apple imposes is a rate limit of 3 requests per year. And this is "completely out of developer control"?

But! But! There's a bug!!! Yeah. Buck it up, buttercup. There's lotsa bugs. Maybe the app is just issuing thousands of review requests and filling up some system dispatch queue? Technically that would be a bug in Apple's rate limiter. But it might explain why it is so rare that the few people who do claim to have seen it still have 4+ average review scores. Can't be too bad then.

But my favourite part is fragile internet egos. People like to blame Apple for their own failures, but they are quick to block others who suggest that developers actually does have control of their own code. Maybe focus more on writing code than writing tweets.

The developer literally has to make the function call to trigger this. Apple has web pages, videos, and sample code explaining how and when to ask for reviews for the best user experience. The only control Apple imposes is a rate limit of 3 requests per year. And this is “completely out of developer control”?

But! But! There’s a bug!!! Yeah. Buck it up, buttercup. There’s lotsa bugs. Maybe the app is just issuing thousands of review requests and filling up some system dispatch queue? Technically that would be a bug in Apple’s rate limiter.

Orrrrrr there’s a bug on Apple’s end, in a fairly opaque API, with near-zero control on the third party’s end, and with a UI that makes it look as though the third party has issued the dialog, and can control it.

People like to blame Apple for their own failures, but they are quick to block others who suggest that developers actually does have control of their own code. Maybe focus more on writing code than writing tweets.

But the developer doesn’t. This isn’t their code. By design, the API gives very little leeway in how the developer handles the dialog. In particular, in when and how often the dialog appears.

John Daniel

I am a developer. I use this API. I have full control over how, when, how often, and whether to issue the dialog. It is, after all, my code. Even if I wanted to annoy the user and display more than 3 prompts a year, I could do that too. All I would have to do is use the documented API that Apple provides for older operating systems.

What I can't control is what other people say on the internet. Sometimes it just isn't true.

@John You seem to be assuming that these top developers are accidentally issuing many repeat review requests for no reason. And that they somehow didn’t figure this out over a period of years when trying to track down this bug. I guess that’s possible, but it seems really unlikely to me.

And then that would have to be combined with an OS bug in the rate limiter. It’s much easier to imagine a single bug in the store’s prompting code that causes it to go into a loop.

John Daniel

@Michael I was just suggesting one possible explanation. I would assume that anyone experiencing a significant problem with this for years would have either figured it out by now or would have stopped using the API. Or, maybe it isn't a significant problem. That would explain why no one has ever complained about it until now and why it doesn't seem to have materially harmed anyone's review scores.

As I explained above, bugs are a fact of life for developers. The operating system has bugs. Vendors have bugs. Developers create their own bugs. Sure, they are an annoyance. I complain about them too. Such is life.

But my primary complaint here is not about the bug, but about this repeated claim that bugs, even operating system bugs, are "completely out of developer control". That claim is false. You can already see the damage being done. At least one person is now not going to use the API for fear of encountering this bug.

@John The developers seem to have calculated that the benefit of more reviews is greater than the harm of some negative reviews due to the prompting bug. That doesn’t mean it isn’t a significant problem.

And, yes, some bugs really are completely out of developer control. This is the case for one of my apps. The API, without which the app is almost useless, completely fails for some (thankfully small) percentage of users. DTS has confirmed that I’m using it correctly.

Another example is the backup apps and macOS 10.15.5. There are two APIs for this critical functionality: one longstanding and (now) broken, the other new, incomplete, and buggy.

Steven Troughton-Smith

@John in my case, the API is called once at launch, every launch — which is how it should be, as it's the system's responsibility to rate-limit it. If you're doing your own rate limiting you're just reducing the chance of encountering the bug, not avoiding it or fixing it in any way. On that one day you present a prompt, your users too might still see this issue for your app, and you'll get the same kind of feedback about it. You're also leaving potentially thousands of reviews on the table in the meantime. While that may work for you, other developers want to be able to rely on the API as offered, and would rather not deal with reports of a seemingly innocuous API going catastrophically wrong when used as intended.

I've found SKStoreReviewController an essential API in all my apps, and it makes a huge difference to reviews, despite the chance of it going so badly wrong. Broadcasts has 900 or so reviews, and only two of them referenced this bug. I still care about those two customers, and I imagine Panic does too. I'm pretty sure the Panic folks know what they're doing.

John Daniel

@Michael Well of course some bugs could be completely out of developer control. Developers would be helpless if there was a bug in NSApplicationMain(), for example. Do I really have to explain how different bugs have different priorities?

@Steven It's your app. You can do what you want with it. At this point, I'm tired of the topic and I have no further interest in suggesting better alternatives.

I realize it is easy to trash Apple. People who don't understand will readily accept it and click "like" or "follow". That's what its about these days, isn't it?

Leave a Comment