DEV Community

We Shipped a Bilingual Next.js PWA to Play Closed Testing. Production Access Was Rejected. Here’s What Google Asked For.

I wanted one codebase that a person in Miami and a person in Bogotá could both use in their first language, install on a phone, and keep using even before a public store listing existed.

The result is a Next.js app that runs in the browser, installs as a progressive web app, and is also wrapped as an Android Trusted Web Activity for Google Play closed testing. The product is Plenifa, an AI life coach and language tutor. I’ll mention it where the architecture and the Play review are about this app, and I’ll be precise about what is - and is not - on the Play Store.

English and Spanish as first-class URLs

The app is a Next.js App Router project (we build with Node 22 and a standalone server output). The public site is bilingual in a deliberately boring way:

  • English is the bare URL, and also x-default.
  • Spanish is the same path with ?lang=es.
  • The canonical tag follows the lang query only. It does not follow Accept-Language or a language cookie. Auto-detecting a crawler into the wrong canonical is a good way to scramble search results.

Coaching and the chrome of the app are English and Spanish. A language-tutor mode can practice 35 languages, including sessions of real Spanish for life in Latin America and professional English for work. Those other languages are for practice; they are not a claim that the whole interface ships in 35 locales.

Signup is for adults 18 and over. The product is coaching and language practice, not therapy, and not medical, legal, financial, or mental-health advice. The UI says that the assistant can make mistakes.

Because this is a PWA, someone can install it from the browser on Android, iPhone, Windows, Mac, or a Chromebook and get an icon, a standalone window, and a service worker. That path still works today, and it does not depend on a public Play listing.

The Play build is a TWA, and it does not sell subscriptions

The Android package is com.plenifa.app. It is a Trusted Web Activity, generated with Bubblewrap, pointing at the live site. The start URL includes src=twa. The web app treats that flag (and the android-app:// referrer) as “we are inside the Play app,” and it hides every purchase and upgrade surface.

That is not a pricing experiment. Google Play’s payments policy expects Play Billing for digital subscriptions sold inside a Play app. For the first Play version we chose the conservative reading of the anti-steering rules: do not sell, and do not point people at a web checkout, from inside the store app. People who already subscribed on the web keep the same account and entitlements. Play Billing is a later step, not something we pretended to have in v1.

Digital Asset Links are served at https://plenifa.com/.well-known/assetlinks.json so a verified install can open full-screen, without a URL bar. Privacy and terms had to be real pages with no placeholders before we submitted - Play will reject a policy page that still says “TODO.”

The in-app listing is 18+, with no ads, and with a notice that replies are AI-generated. The current closed-test package is version 1.0.2 (versionCode 3).

The public store listing for this package is still not live. If you search Play as a regular user, you will not find a public Plenifa listing to install. That is expected, not a typo.

Closed testing on a personal developer account

A new personal Play developer account cannot go straight to production. The rule we planned around is: at least 12 testers, opted in, who keep the app installed for 14 consecutive days, then an application for production access. Organization accounts with a D-U-N-S number skip that requirement; this account is personal, so we did not.

Our own plan, written before we submitted, already said the quiet part: aim for more than 12 people in case some drop out; ask them to use chat, voice, a photo, and the English/Spanish switch a few times a week; collect feedback through the in-app button; and ship at least one or two updates during the test, because Google looks for active development.

Opting in is not the same as testing.

What the 9 November rejection actually said

On 9 November 2026, Google Play Support wrote to the developer address with the subject “More testing required to access Google Play production.” They had reviewed the application and determined that the app needs more testing before production access. The possible reasons they listed were:

  • Testers were not engaged with the app during the closed test.
  • Testing best practices may not have been followed, which may include gathering and acting on user feedback through updates to the app.

Before applying again, they asked us to test the app in closed testing for an additional 14 days with real testers.

That is the whole lesson, and it is more useful than a vague “Play is strict.” Headcount in a Google Group is not engagement. A tester who opts in and never opens the app does not help you, and it does not look like a test to Play. Shipping a versionCode bump is not the same as changing the app because someone reported a problem.

We had already learned, in ordinary QA, that the Play/TWA shell has sharp edges - microphone permission in a full-screen TWA is not the same as in Chrome, and the in-app steps have to match the surface the user is actually looking at. Those are the kinds of things only show up if testers open the app and talk back.

I will not dress this up with a tester count, a rating, or a claim that the public listing is “coming this week.” The honest status is: the app remains in closed testing; production access was not granted on that application; we need another 14 days of closed testing with people who actually use the build.

What we’re asking of testers now

If you want to try a bilingual AI coach and tutor, you do not have to wait for Play. The website and the PWA are the same product.

If you have an Android phone and you’re willing to help with the store path: join the plenifa-testers Google Group, then opt in at https://play.google.com/apps/testing/com.plenifa.app.

Please install it, open it, and use it over 14 days - send a message, try voice, switch English and Spanish, and tell us what broke through the in-app feedback button. That is the work Google asked for, and it is also how the app gets better.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.