Alright, let’s talk about dealing with app ratings using fastlane back in 2023. It wasn’t exactly a direct thing, but fastlane played its part, you know?

Getting Started – The Rating Problem
So, we had this app, right? And like everyone else, we wanted more stars, more reviews on the app stores. We were doing it kinda randomly before. Sometimes a developer would chuck in a pop-up, sometimes not. It was messy and we had no real control over when or how often users were asked. We needed something more consistent, tied to our releases.
I was already deep into using fastlane for handling our builds and getting them onto TestFlight and the Play Store. Saved a ton of time, honestly. So, naturally, I thought, “Can fastlane help with this rating thing too?”
Looking into Fastlane
My first step was digging into the fastlane docs and available actions. I searched around, hoping for some magic action like ask_for_rating
or something. Turns out, it’s not that simple. Fastlane is great for automating the build and release process, but it doesn’t really control the runtime behavior inside your app. The actual job of asking the user for a rating, that happens using native SDKs, like Apple’s SKStoreReviewController
or Google’s In-App Review API.
So, fastlane itself wouldn’t pop up the rating dialog. That was a bit of a letdown initially, but then I realized how it could fit in.
Putting it Together – The Actual Plan
The real work had to happen inside the app’s code first. We needed to:

- Integrate the native iOS and Android review prompts. This meant adding the code to call on iOS and using the
ReviewManagerFactory
andReviewManager
on Android. - Figure out the logic for when to show it. You can’t just blast users with prompts constantly, Apple and Google have rules. We decided on some basic logic, like triggering it after a user completed a key action a few times, and making sure we didn’t ask again too soon.
Okay, so the logic was planned for the app code itself. Where did fastlane come in?
Fastlane became the tool to reliably manage the deployment of the app versions containing this new rating prompt logic. Our process looked like this:
- Code the feature: Developers added the rating prompt code and logic into the app’s codebase (iOS and Android).
- Update Fastfile (if needed): Our existing `Fastfile` already handled building (`gym` for iOS, `gradle` for Android) and uploading (`pilot` to TestFlight, `upload_to_play_store` for Google Play). We didn’t really need to add new lanes specifically for ratings.
- Run the Release Lane: When we were ready to ship the app version with the new rating prompt, we just ran our standard fastlane deployment lanes. Like
fastlane ios release
orfastlane android deploy_beta
. - Consistency: Fastlane handled all the boring, error-prone stuff: incrementing build numbers, code signing, building the archive/APK/AAB, and uploading it straight to App Store Connect or Google Play Console.
How It Went
Using fastlane this way made the whole rollout much smoother. We knew that when we triggered the release lane, the version going out definitely had the rating logic baked in correctly, built and signed the same way every time. No manual steps missed.
It didn’t magically get us more ratings overnight – that still depends on users actually liking the app and being willing to rate it when asked. But it helped us deploy the mechanism for asking them in a controlled and repeatable way. We could tweak the logic in the app, and then use fastlane to push out the update reliably.
Final Thoughts
So yeah, back in 2023, fastlane wasn’t a direct tool for managing star ratings prompts themselves. It’s more of a build and release automation powerhouse. But it was super valuable in the process surrounding it. It helped us ship the feature reliably as part of our standard workflow. It took the headache out of the deployment part, so we could focus more on getting the in-app logic right. It’s about using the right tool for the right job, and fastlane was definitely the right tool for getting our app updates out the door consistently.
