gplay vs Fastlane supply: which Google Play CLI in 2026?
Fastlane supply has been the default answer to “how do I publish to Google Play from the command line?” for a decade. It’s battle-tested and it works. But it was designed for one job — pushing builds and metadata — and the Play Console has grown far beyond that: subscriptions with base plans and offers, purchase verification, vitals, reviews, permission management, private app publishing.
Here’s an honest look at where each tool stands.
The short version
Section titled “The short version”- Both handle the classics well: AAB/APK upload, track assignment, staged rollouts, store listings, screenshots.
- gplay goes further: full monetization stack, purchase verification, vitals, reviews, reports, user management, Managed Google Play.
- Runtime footprint is the sleeper difference: Fastlane needs a Ruby environment; gplay is one static Go binary.
Feature comparison
Section titled “Feature comparison”| Capability | gplay | Fastlane supply |
|---|---|---|
| Upload AAB/APK, tracks, rollouts | ✅ | ✅ |
| Store listings & screenshots | ✅ | ✅ |
| Subscriptions, base plans, offers | ✅ Full | ❌ |
| In-app products & one-time purchases | ✅ | ❌ |
| Purchase verification & refunds | ✅ | ❌ |
| Vitals: crashes, ANRs, performance | ✅ | ❌ |
| Reviews: read + reply | ✅ | ❌ |
| Financial & statistics reports | ✅ | ❌ |
| Users & permission grants | ✅ | ❌ |
| Managed Google Play (private apps) | ✅ | ❌ |
| Output format | Minified JSON | Human-oriented logs |
| Runtime | Single Go binary | Ruby + gems |
Where Fastlane still wins
Section titled “Where Fastlane still wins”Fairness matters:
- Ecosystem breadth — Fastlane is a whole automation framework (screenshots via
screengrab, iOS support, plugins). If you already run aFastfilefor both platforms, that inertia is real. - Maturity — a decade of production use and a huge community.
If all you do is supply an AAB once a sprint, Fastlane keeps doing that fine.
Where gplay pulls ahead
Section titled “Where gplay pulls ahead”1. Everything after the upload
Section titled “1. Everything after the upload”Modern Play operations are mostly not uploads. Checking crash clusters before expanding a rollout, replying to reviews, creating a promotional offer, verifying a purchase token server-side — with Fastlane these all mean opening the web console. With gplay:
gplay vitals crashes query --package com.example.app --from 2026-06-27 --to 2026-07-04gplay reviews reply --package com.example.app --review-id <ID> --text "Fixed in 2.1!"gplay purchases subscriptionsv2 get --package com.example.app --token <TOKEN>2. Scriptable, JSON-first output
Section titled “2. Scriptable, JSON-first output”Every gplay command emits minified JSON, so it pipes into jq, scripts, and AI agents without parsing log text:
gplay tracks list --package com.example.app | jq '.tracks[].track'3. Zero-runtime install
Section titled “3. Zero-runtime install”CI images and dev machines don’t need Ruby. Install is one line, and startup is instant:
brew install tamtom/tap/gplay4. Built for AI agents
Section titled “4. Built for AI agents”Explicit flags, --help everywhere, --dry-run on every write, no interactive prompts — plus ready-made Agent Skills so Claude Code or Cursor can run your whole release flow.
Migrating from Fastlane
Section titled “Migrating from Fastlane”Already have a Fastlane metadata/ directory? gplay imports it directly:
gplay migrate fastlane --package com.example.app --dir ./fastlane/metadata/androidYour existing translations, descriptions, and screenshots come along; nothing is lost.
Bottom line
Section titled “Bottom line”If your Play workflow is “upload an AAB, sometimes update a listing,” either tool works — pick whichever fits your stack. The moment your workflow touches subscriptions, purchase verification, vitals, reviews, or agents/automation beyond the upload, gplay covers ground Fastlane simply doesn’t.