DEV Community

Cover image for How I built an app to solve the "12 testers for 14 days" Google Play requirement
Gromas Tech
Gromas Tech

Posted on

How I built an app to solve the "12 testers for 14 days" Google Play requirement

Marketplace on 12 Testers GT app with all the apps that need testers. Add your own!

The problem

Since Google introduced the requirement that new developer accounts need 12 real testers running a Closed Test for 14 consecutive days before publishing to production, thousands of Android developers have been stuck.

Finding 12 real people willing to install your app and use it for two weeks is much harder than the requirement makes it sound. Family and friends bail after day 3. Random Reddit and Telegram groups are full of dead accounts. Paid "tester exchange" services violate Google Play policy and can get your account banned.

I hit this wall myself, so I built a solution.

The idea

A community app where every user is both a tester and a developer. You list your own Closed Test inside the app, and you test everyone else's. The app tracks reciprocity so nobody just takes without giving.

Available in 21 languages because this problem is universal.

The stack

  • Native Android, Kotlin
  • Jetpack Compose UI
  • DataStore for local preferences and onboarding state
  • Supabase (Postgres, Auth, Storage, Edge Functions) as the shared backend: the app registry, swaps, reputation and credits all live there, behind row-level security
  • Firebase for push (FCM), analytics and crash reporting
  • Coroutines + Flow on the client; the swap and day-close logic runs server-side as Postgres functions

There's no auto-matcher. You browse a marketplace of open Closed Tests and choose what you test, either as a Swap (I test yours, you test mine, free) or a Solo request (the app's owner spends 1 credit, never the tester). Reciprocity is enforced server-side by a reputation score that starts at 100 and drops when you skip a day you agreed to, plus a credit balance that gates Solo requests. It all runs as Postgres functions behind row-level security, so a client can't fake a completed day.

The genuinely hard part was proving a tester actually opens the app each day, not just leaves it installed. The app reads Android's usage-access stats to confirm a real launch and marks the day's proof "verified" before the developer even reviews it. Making that reliable across manufacturers was the real work: some phones report the permission as granted while it silently returns nothing until you toggle it off and on.

The meta twist

My own app is currently in Closed Testing. So I'm using the app I built to help pass the requirement for the app that helps others pass the requirement. Recursion in production.

If you want to try it or add your own Closed Test

Package: com.gromastech.testers12gt

Steps:

  1. Join the Google Group: https://groups.google.com/g/appsgromastech
  2. Opt in on web: https://play.google.com/apps/testing/com.gromastech.testers12gt
  3. Install from Play Store: https://play.google.com/store/apps/details?id=com.gromastech.testers12gt

What I'd love feedback on

  • The reciprocity model. Reputation plus credits keeps swaps fair, but is the missed-day penalty (minus 3 reputation) too harsh, or about right?
  • Onboarding. First run should show value in under 60 seconds. Am I there?
  • Discovery of new Closed Tests. There's search and a feed today, which do you actually reach for, and what's missing?

Drop a comment. If you have an app in Closed Testing yourself, add it inside 12 Testers GT and I'll be one of your testers.

Cheers.

Top comments (0)