Compliance7 min read

Android developer verification: what Capacitor teams must do by 30 September

From 30 September 2026, certified Android devices in Brazil, Indonesia, Singapore and Thailand block installs from unregistered developers, including Play apps. Who is affected, what to register, and why staging APKs are the trap.

On 30 September 2026, Google starts enforcing Android developer verification. Certified Android devices in Brazil, Indonesia, Singapore and Thailand will block the normal install of any app whose developer has not registered with Google. That includes apps from Google Play and from the big OEM stores: Samsung Galaxy Store, Xiaomi GetApps, OPPO, vivo, HONOR and Transsion's Palm Store.

The rest of the world follows in 2027. If you have users in those four countries, or testers who install builds outside the Play Store, you have one week.

The common miss: teams verify their production app and forget the other package names: the staging build, the white-label variant, the QA APK sent to a tester in São Paulo. Each package name is an app, and each needs to be registered.

What verification requires

According to Google's published requirements:

  • Identity. A legal name, address and contact details, and in some cases an uploaded government ID.
  • Proof that you own each app. You register each package name and prove ownership by submitting an APK signed with your private key.
  • A fee for standard accounts. The standard account has a one-time $25 fee. A free limited-distribution account for students and hobbyists lets you share an app with up to 20 devices without a government ID.

Unregistered apps can still be installed over ADB, or through an “advanced flow” that makes the user enable developer mode, restart, wait 24 hours and authenticate again. That is fine for you at your desk. It is not a way to distribute an app to customers.

Who is affected

SituationAffected on 30 September?What to do
Production app on Google Play, users in BR/ID/SG/THYesConfirm your account and the package name are verified and registered
Separate staging or beta package (com.acme.app.staging)Yes, if installed on certified devices in those countriesRegister it too, or retire it (see below)
White-label builds with one package name per customerYes, every packageRegister each package name, or ask customers to publish under their own verified account
APKs shared via Firebase App Distribution, email or a download linkYesRegister the package; testers otherwise hit the advanced flow
Debug builds you install with Android Studio or ADBNoNothing
Users outside the four launch countriesNot yet (2027)Do it now anyway

A checklist for Capacitor teams

  1. List every package name you have ever shipped. In a Capacitor app it lives in capacitor.config.ts as appId and in android/app/build.gradle as applicationId. Check for build flavors and applicationIdSuffix, which silently create extra packages:
grep -rn "applicationId" android/app/build.gradle
grep -n "appId" capacitor.config.*
  1. Check verification status for your developer account in the Play Console or the Android Developer Console, and complete any open identity steps. Identity checks can take days, so start today.
  2. Register each package name and complete the ownership proof with an APK signed by the key that signs that app.
  3. Confirm who holds the keys. If a contractor or an old CI system signs your staging builds, find that keystore now. Losing it later means a new package name.
  4. Tell testers in the four countries what to expect if a build they rely on is not registered by the 30th.

Fewer packages, less to verify

Many Capacitor teams keep a second app ID for staging because it was the only way to have staging and production installed side by side. Verification makes every extra package name a small ongoing cost: another registration, another keystore, another thing to keep in order.

For most staging needs, you do not need a second package at all. The native shell rarely changes between staging and production. What changes is the web layer, and that can be switched with an update channel inside the same verified app:

// capacitor.config.ts in your internal build
plugins: {
  OtaKit: {
    appId: 'YOUR_OTAKIT_APP_ID',
    channel: 'staging',
  },
},

Internal testers install the same app from an internal Play testing track, and receive staging bundles over the air. Production users on the base channel never see them. You can also switch channels at runtime with setChannel(), for example from a hidden developer menu. See staging environments with channels for the full setup.

Does verification affect OTA updates?

No. Verification controls which apps can be installed. An over-the-air update with OtaKit replaces the web assets inside an app that is already installed and registered; it does not install a new APK. Your OTA releases keep working the same way on 1 October as on 29 September.

It is still worth using the week to put both in order. A verified package, a single app ID per product, and channels for everything else is a setup that survives the global rollout in 2027 without another scramble.

Related docs