Skip to content

Commit fa48c8f

Browse files
committed
Finish first draft
1 parent 0c2dcbd commit fa48c8f

9 files changed

+63
-2
lines changed

_drafts/2024-12-20-play-store-rating-prompt.md

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: An Android in-app rating prompt helper to rapidly improve Play Store rating (from 2.0 - 4.2 in 8 days!)
2+
title: Rapidly improving Play Store rating with an Android in-app review prompt helper (from 2.0 to 4.3 in 9 days!)
33
image: /assets/images/banners/rating-browser.png
44
tags:
55
- Android
@@ -70,12 +70,14 @@ So, why add complexity to a fairly simple to use library? Well, there are a few
7070

7171
1. **Simple to use**: Any ViewModel that wants to display a review prompt shouldn't need to keep track of the request status, handle errors etc. It should just be able to request the prompt's appearance, and optionally pre-load.
7272
2. **Remotely configurable triggers**: I want to be able to remotely control where this prompt appears. For example, I may want to disable it appearing after a successful bud due to some unrelated technical issue.
73-
3. **Triggered on button click or without specific interaction**: The review prompt should be triggerable by a variety of trigger types.
73+
3. **Triggered on button click or without specific interaction**: The review prompt should be triggerable by a variety of trigger types`^`.
7474
4. **Able to remotely disable**: In case there's some catastrophic issue in Google's library, I want the ability to ensure it isn't relied upon at all if there's no enabled triggers.
7575
5. **Requests aren't spammed**: Whilst Google [doesn't explicitly state quotas](https://developer.android.com/guide/playcore/in-app-review#quotas), they do say:
7676
1. "_To provide a great user experience, Google Play enforces a time-bound quota on how often a user can be shown the review dialog._"
7777
2. "_Because the quota is subject to change, it's important to apply your own logic and target the best possible moment to request a review._"
7878

79+
`^`: Note that Google advises "_you should not have a call-to-action option (such as a button) to trigger the API, as a user might have already hit their quota and the flow won’t be shown_", this is **not applicable** here since we're using a callback to still perform the button's usual function, not a dedicated CTA button!
80+
7981
Okay, pretty sensible requirements. How can they be all be implemented?
8082

8183
### Handler flow
@@ -271,4 +273,63 @@ You'll see slightly different messages when testing via internal app sharing vs
271273

272274
_Note: The oddly zoomed-in app icon happens on my device for all prod apps, presumably it's a Google / Samsung issue!_
273275

276+
## Extra notes
277+
278+
### Monitoring store rating
279+
280+
To keep an eye on my app's rating, I checked into the console once or twice a day.
281+
282+
Whilst [there is a Google Play Console app](https://play.google.com/store/apps/details?id=com.google.android.apps.playconsole) (which is rated 2.8!), and it has attractive data visualisations, the data updates are painfully slow. The data was typically 12 hours _behind_ Google Play Console web, which is _itself_ 12-24 hours behind!
283+
284+
The main number is the "Default Google Play rating" on the "Ratings" screen:
285+
286+
[![](/assets/images/2024/rating-ratingsummary.png)](/assets/images/2024/rating-ratingsummary.png)
287+
288+
However, the app is the only way to see charts of Google Play rating and many other KPIs (Key Performance Indicators) over time:
289+
290+
| Overview | Specific metric | KPI list |
291+
| :-----------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: |
292+
| [![](/assets/images/2024/rating-screenshot1-thumbnail.jpg)](/assets/images/2024/rating-screenshot1.jpg) | [![](/assets/images/2024/rating-screenshot2-thumbnail.jpg)](/assets/images/2024/rating-screenshot2.jpg) | [![](/assets/images/2024/rating-screenshot3-thumbnail.jpg)](/assets/images/2024/rating-screenshot3.jpg) |
293+
294+
### Speed of increase
295+
296+
Whilst Google Play Console does have an "Average rating over time" chart, this won't match up with your displayed store rating due to how Google weights reviews based on time.
297+
298+
As such, I had to manually keep a note each day of the rating! Once the version with review prompting was rolled out to 100% (12th December), the rating improved by 0.1 to 0.5 per day(!):
299+
300+
- 19/11/24: **2.088**
301+
- 09/12/24: **2.187**
302+
- 11/12/24: **2.249**
303+
- 12/12/24: **2.327**
304+
- 13/12/24: **2.719**
305+
- 14/12/24: **2.819**
306+
- 15/12/24: **3.335**
307+
- 16/12/24: **3.796**
308+
- 17/12/24: **3.922**
309+
- 18/12/24: **4.082**
310+
- 19/12/24: **4.145**
311+
- 20/12/24: **4.285**
312+
313+
An increase from 2.2 to 4.3 in just 9 days is absolutely amazing, and far exceeded my expectations for this project!
314+
315+
### Cached rating
316+
317+
A rapid rise in rating for a well-established app is pretty unusual, so other services will take multiple weeks to notice this rating has changed.
318+
319+
For example, whilst the store itself currently shows 4.3 for Seatfrog, Google Search shows a rating from around July!
320+
321+
[![](/assets/images/2024/rating-googleresults.png)](/assets/images/2024/rating-googleresults.png)
322+
274323
## Conclusion
324+
325+
Adding an in-app review rating prompt had an unbelievably rapid improvement to my app's rating.
326+
327+
I'd absolutely recommend adding a prompt to pretty much any app, with the resulting rating essentially depending on how well you pick your triggers. If you prompt whilst the user is frustrated, putting a pop-up in their face is going to make things even worse!
328+
329+
I see in-app review prompts pretty regularly for other apps, however they are usually implemented in a seemingly untargeted way. For example, 2 I saw recently were obviously triggered by the number of times the app has been opened, when I didn't have a particular positive sentiment and was trying to complete a task.
330+
331+
Whilst I did begin working on an "after X days" prompt, I eventually decided a smarter implementation was prompting _less often_ but in a _more targeted_ way. It seems to have been the correct call, with almost every review being 5-star.
332+
333+
As I write the first draft of this article, the app is sitting around 4.3. However, the rise is so rapid that I'm going to hold off until it reaches the expected final value (based on average rating) of 4.8. Fingers crossed!
334+
335+
One last time, all code used is available on GitHub: <https://gist.github.com/JakeSteam/c09c7bd980095a8a26649419d49d393e>
23.4 KB
Loading
7.96 KB
Loading
9.48 KB
Loading
203 KB
Loading
7.27 KB
Loading
147 KB
Loading
15.7 KB
Loading
434 KB
Loading

0 commit comments

Comments
 (0)