[{"data":1,"prerenderedAt":2415},["ShallowReactive",2],{"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F":3,"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F-related":653,"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F-resources":2398},{"id":4,"title":5,"author":6,"body":10,"category":565,"createdAt":566,"description":567,"disclosure":568,"extension":569,"faq":570,"howTo":568,"lastVerified":568,"location":586,"meta":587,"navigation":593,"ogImage":568,"path":594,"primaryKeyword":595,"readingTime":596,"related":597,"seo":601,"sources":602,"stem":643,"tags":644,"takeaways":645,"updatedAt":566,"url":651,"__hash__":652},"blog\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027.md","Google Play Contacts and Location Permission Changes 2027",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":550},"minimark",[13,21,24,30,35,164,167,171,174,177,180,183,201,204,207,211,217,223,229,240,244,253,258,264,267,271,276,281,287,291,296,301,323,327,334,413,416,421,436,443,453,464,467,470,474,527,534,538],[14,15,16,20],"p",{},[17,18,19],"strong",{},"Google Play's deadlines table lists January 27, 2027 for four sensitive-permission changes: a new Contacts Permissions policy, the location button as the recommended minimum for precise location, no more READ_CALL_LOG for phone-number verification, and geofencing removed as a foreground service use case."," The contacts and location button rules are tied to apps that target Android 17 (API level 37) or later. Google's call log and geofencing pages say only \"effective January 27, 2027\" and give no target API. The June 2026 Play newsletter says \"Starting October 28, 2026\" for the contacts and location changes, and I could not reconcile the two dates.",[14,22,23],{},"I checked each one on October 19, 2026. Google can change a date, so open the linked page before you plan around it.",[14,25,26,29],{},[17,27,28],{},"Disclosure:"," App369 is my studio. I build and fix Flutter and Firebase apps, and the last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,32,34],"h2",{"id":33},"the-dated-table","The dated table",[36,37,38,60],"table",{},[39,40,41],"thead",{},[42,43,44,48,51,54,57],"tr",{},[45,46,47],"th",{},"Change",[45,49,50],{},"Announced",[45,52,53],{},"Declaration",[45,55,56],{},"Compliance date",[45,58,59],{},"Source",[61,62,63,95,118,142],"tbody",{},[42,64,65,69,72,75,80],{},[66,67,68],"td",{},"Contacts Permissions policy",[66,70,71],{},"April 15, 2026",[66,73,74],{},"Play Console prompts start September 2026",[66,76,77],{},[17,78,79],{},"January 27, 2027",[66,81,82,89,90],{},[83,84,88],"a",{"href":85,"rel":86},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Ftable\u002F12921780",[87],"nofollow","Deadlines table",", ",[83,91,94],{"href":92,"rel":93},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16935362",[87],"Help Center",[42,96,97,100,102,105,109],{},[66,98,99],{},"Location button (precise location)",[66,101,71],{},[66,103,104],{},"Precise-location declaration available November 2026",[66,106,107],{},[17,108,79],{},[66,110,111,89,114],{},[83,112,88],{"href":85,"rel":113},[87],[83,115,94],{"href":116,"rel":117},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F17033915",[87],[42,119,120,123,126,129,133],{},[66,121,122],{},"READ_CALL_LOG for phone verification",[66,124,125],{},"July 15, 2026 (per the table)",[66,127,128],{},"None listed",[66,130,131],{},[17,132,79],{},[66,134,135,89,138],{},[83,136,88],{"href":85,"rel":137},[87],[83,139,94],{"href":140,"rel":141},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F10208820",[87],[42,143,144,147,149,151,155],{},[66,145,146],{},"Geofencing as a foreground service use case",[66,148,71],{},[66,150,128],{},[66,152,153],{},[17,154,79],{},[66,156,157,89,160],{},[83,158,88],{"href":85,"rel":159},[87],[83,161,94],{"href":162,"rel":163},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16965181",[87],[14,165,166],{},"The contacts article says compliance is mandatory on January 27, 2027 for apps that target Android 17 or later (API level 37+). The location article says compliance is mandatory for \"all apps\" on that date, but it requires the location button for apps that target Android 17 or later, and expects enforcement for those apps in late January 2027. Both say a self extension of 30 days will be available in Play Console, and that apps in scope are subject to enforcement after that date. The call log and geofencing pages state the effective date only, with no target API, so I can't say whether a lower target API protects you there.",[31,168,170],{"id":169},"the-date-conflict","The date conflict",[14,172,173],{},"Two Google sources give two different dates, and I want to show both.",[14,175,176],{},"The policy deadlines table lists 2027-01-27 as the deadline for each of the four rows, with announcement dates of 2026-04-15 (and 2026-07-15 for READ_CALL_LOG). The Help Center articles repeat it: the contacts article says \"January 27, 2027: Policy compliance is mandatory for all apps that target Android 17 or later (API level 37+).\"",[14,178,179],{},"The June 2026 Play newsletter, under \"Policy deadlines and reminders\", says: \"Starting October 28, 2026: Contacts permissions: Developers must use the Android Contact Picker for apps that do not require broad contact access.\" It says the same date for the location button. It does not mention READ_CALL_LOG or geofencing.",[14,181,182],{},"What I could verify for each reading:",[184,185,186,192,198],"ul",{},[187,188,189,191],"li",{},[17,190,79],{}," appears on the deadlines table and in four Help Center articles as the effective or mandatory date.",[187,193,194,197],{},[17,195,196],{},"October 28, 2026"," appears on the newsletter page. It does not appear in the Help Center articles I read.",[187,199,200],{},"The April 2026 Android Developers Blog post says \"new pre-review checks in the Play Console will be available starting October 27\". That is one day off from October 28, and the post does not say the two are the same thing. It also says the contacts declaration form \"will be available before October.\"",[14,202,203],{},"My reading is that October 27 or 28 marks the start of Play Console checks and January 27, 2027 is the date compliance becomes mandatory. That is my inference. No page I found states it, so treat it as unconfirmed.",[14,205,206],{},"My advice: plan to be done before October 28, 2026 if you can, and use January 27, 2027 as the hard date. Open Play Console, check any prompt or pre-launch warning on your app, and follow what it says.",[31,208,210],{"id":209},"_1-contacts-permissions-policy","1. Contacts Permissions policy",[14,212,213,216],{},[17,214,215],{},"What changes."," The Help Center article says apps that target Android 17 or later \"may only request the READ_CONTACTS permission if the Android Contact Picker is not sufficient for your app to provide core functionality.\" Contacts are treated as personal and sensitive data under the User Data policy.",[14,218,219,222],{},[17,220,221],{},"Who must act."," Any app that targets Android 17 (API level 37) or later and requests READ_CONTACTS. Google says private apps and enterprise device management apps are exempt. If your app asks for contacts to share or invite, the April 2026 Android Developers Blog says to switch to the picker and remove READ_CONTACTS.",[14,224,225,228],{},[17,226,227],{},"The declaration."," If you keep the permission, you complete a declaration in Play Console that shows your access needs and why the Contact Picker is insufficient. The article says a custom picker \"does not qualify as a reason to retain Contacts access.\"",[14,230,231,234,235,239],{},[17,232,233],{},"The catch."," The article states that the Android Contact Picker \"is not backported to previous versions and only exists for Android 17 or later (API level 37+).\" It is invoked with the ",[236,237,238],"code",{},"Intent.ACTION_PICK_CONTACTS"," intent. If your app supports older Android versions, you need to decide what those users get.",[31,241,243],{"id":242},"_2-the-location-button","2. The location button",[14,245,246,248,249,252],{},[17,247,215],{}," Google's preview article says it is \"introducing the location button as the recommended minimum scope for precise location.\" For apps that target Android 17 or later, if precise location is needed only for one-time, user-initiated actions, you must implement the Android location button and declare it in the manifest with the ",[236,250,251],{},"onlyForLocationButton"," flag.",[14,254,255,257],{},[17,256,221],{}," Any app that requests ACCESS_FINE_LOCATION. The minimum-scope article says all apps requesting precise location must complete a declaration in Play Console and explain why the location button or coarse location is insufficient. Apps that need precise, persistent access must show it is essential to core functionality.",[14,259,260,263],{},[17,261,262],{},"Dates."," Announced April 15, 2026. The precise-location declaration becomes available in November 2026. Compliance is mandatory January 27, 2027.",[14,265,266],{},"My advice: list every place your app asks for precise location. For each, ask whether it is a one-time action the user starts, such as \"find stores near me\". Those are the ones the button is for.",[31,268,270],{"id":269},"_3-read_call_log-and-phone-verification","3. READ_CALL_LOG and phone verification",[14,272,273,275],{},[17,274,215],{}," The SMS and call log article says Google \"will no longer permit account verification via phone call as a use case for the READ_CALL_LOG permission\", effective January 27, 2027. The article already requires apps using these permission groups to be actively registered as the default SMS, Phone or Assistant handler.",[14,277,278,280],{},[17,279,221],{}," Apps that read the call log to confirm a user's phone number, for example by matching an incoming verification call.",[14,282,283,286],{},[17,284,285],{},"What to use instead."," The article recommends the Digital Credentials API to verify accounts without sensitive permissions, and mentions that the SMS Retriever API can do SMS-based verification automatically. If neither is an option, users can enter a verification code manually.",[31,288,290],{"id":289},"_4-geofencing-as-a-foreground-service","4. Geofencing as a foreground service",[14,292,293,295],{},[17,294,215],{}," The foreground service preview article says: \"We're removing geofencing as an approved foreground services use case.\" It adds that developers can instead use the Geofence API. Effective January 27, 2027.",[14,297,298,300],{},[17,299,221],{}," Apps that run a location-type foreground service just to monitor geofences. The article still lists background location updates for user-initiated location sharing and navigation, so a service that does those is a separate question.",[14,302,303,306,307,310,311,314,315,318,319,322],{},[17,304,305],{},"What the Geofence API needs."," Android's geofencing guide says your app must request ",[236,308,309],{},"ACCESS_FINE_LOCATION",", and ",[236,312,313],{},"ACCESS_BACKGROUND_LOCATION"," if it targets Android 10 (API level 29) or higher. You create a ",[236,316,317],{},"GeofencingClient"," through ",[236,320,321],{},"LocationServices",". Note that the geofencing guide's permissions are themselves sensitive and fall under Play's location rules above.",[31,324,326],{"id":325},"the-flutter-angle","The Flutter angle",[14,328,329,330,333],{},"Flutter apps get these permissions from three places: your own ",[236,331,332],{},"AndroidManifest.xml",", plugin manifests, and the Play policy checks on the final build. Here is what I could verify on pub.dev.",[184,335,336,354,383,394],{},[187,337,338,341,342,345,346,349,350,353],{},[17,339,340],{},"permission_handler"," (13.0.2 when I read it) has ",[236,343,344],{},"Permission.contacts"," and a rationale check, ",[236,347,348],{},"Permission.contacts.shouldShowRequestRationale",", on Android. Its page also says that on Android 10 and later you request foreground location first, then call ",[236,351,352],{},"Permission.locationAlways.request()",". The page does not mention Android 17, the Contact Picker or the location button.",[187,355,356,359,360,363,364,367,368,371,372,375,376,378,379,382],{},[17,357,358],{},"flutter_contacts"," (2.6.0) tells you to add ",[236,361,362],{},"READ_CONTACTS"," and ",[236,365,366],{},"WRITE_CONTACTS"," to your manifest. Its ",[236,369,370],{},"FlutterContacts.native.showPicker()"," needs no contacts permission on either platform. The page says calling it with ",[236,373,374],{},"properties"," on Android requires ",[236,377,362],{},". The page does not mention Android 17, so I can't say whether ",[236,380,381],{},"showPicker()"," uses the new system picker on API 37.",[187,384,385,388,389,363,391,393],{},[17,386,387],{},"contacts_service"," (0.6.3) is listed as published 5 years ago. Its README says to add ",[236,390,362],{},[236,392,366],{}," and that it does not handle permission requests itself. I did not see a discontinued note on the page.",[187,395,396,399,400,310,403,405,406,408,409,412],{},[17,397,398],{},"geolocator"," (14.1.1) tells you to add ",[236,401,402],{},"ACCESS_COARSE_LOCATION",[236,404,309],{}," only if you need precise location. For ",[236,407,313],{}," it says apps targeting Android 10 and later need it for updates in the background. It states that ",[236,410,411],{},"FOREGROUND_SERVICE_LOCATION"," is required from Android 14 for a location foreground service and that the plugin's manifest declares it.",[14,414,415],{},"None of those pages describe the new Play policy, so whether a given plugin version is compliant is something you need to test, not assume.",[417,418,420],"h3",{"id":419},"removing-a-permission-from-the-merged-manifest","Removing a permission from the merged manifest",[14,422,423,424,427,428,431,432,435],{},"Android's manifest documentation describes the ",[236,425,426],{},"tools:node=\"remove\""," marker as one that removes an element from the merged manifest, used \"when you discover an element in your merged manifest that you don't need that was provided by a lower-priority manifest file that's out of your control (such as an imported library).\" The page declares the namespace as ",[236,429,430],{},"xmlns:tools=\"http:\u002F\u002Fschemas.android.com\u002Ftools\""," on the ",[236,433,434],{},"\u003Cmanifest>"," element.",[14,437,438,439,442],{},"For a permission, the pattern in ",[236,440,441],{},"android\u002Fapp\u002Fsrc\u002Fmain\u002FAndroidManifest.xml"," looks like this:",[444,445,450],"pre",{"className":446,"code":448,"language":449},[447],"language-text","\u003Cmanifest xmlns:android=\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres\u002Fandroid\"\n    xmlns:tools=\"http:\u002F\u002Fschemas.android.com\u002Ftools\">\n\n    \u003Cuses-permission\n        android:name=\"android.permission.READ_CALL_LOG\"\n        tools:node=\"remove\" \u002F>\n","text",[236,451,448],{"__ignoreMap":452},"",[14,454,455,456,459,460,463],{},"The Android page's own example removes a ",[236,457,458],{},"meta-data"," element, not a ",[236,461,462],{},"uses-permission"," line. Applying it to a permission follows from the general rule, but I have not run it against your build. Build a release, then read the merged manifest and confirm the line is gone.",[14,465,466],{},"One more caution. Removing a permission a plugin needs will break that plugin feature at runtime. Remove only what you have confirmed your app does not use.",[14,468,469],{},"My advice: for each of the four permissions, search your own manifest and your merged manifest, then work out which plugin adds it before you change anything.",[31,471,473],{"id":472},"a-short-plan","A short plan",[475,476,477,483,499,505,515,521],"ol",{},[187,478,479,482],{},[17,480,481],{},"Check Play Console."," Look for prompts about READ_CONTACTS and precise location on each app, and note the dates they show.",[187,484,485,488,489,89,491,89,493,363,496,498],{},[17,486,487],{},"Find the permissions."," Read the merged manifest for ",[236,490,362],{},[236,492,309],{},[236,494,495],{},"READ_CALL_LOG",[236,497,411],{},".",[187,500,501,504],{},[17,502,503],{},"Trace each to a feature."," Sharing or inviting: use the picker. One-time precise location: use the location button. Call-log verification: move to the Digital Credentials API or SMS Retriever. Geofence monitoring: move to the Geofence API.",[187,506,507,510,511,498],{},[17,508,509],{},"Decide your target API."," The contacts and location rules apply to apps that target Android 17 or later. For the target API deadline itself, see ",[83,512,514],{"href":513},"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","my Android 16 target API guide",[187,516,517,520],{},[17,518,519],{},"File declarations"," only for permissions you truly keep, and write down the user-facing feature each one supports.",[187,522,523,526],{},[17,524,525],{},"Test a release build"," on a real device, with a clean install, before you submit.",[14,528,529,530,498],{},"For every other dated Apple, Google Play and Firebase requirement in 2026 and 2027, see ",[83,531,533],{"href":532},"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","App Store and Google Play deadlines for 2026 and 2027",[31,535,537],{"id":536},"need-a-hand","Need a hand?",[14,539,540,541,545,546,498],{},"If your Flutter app requests contacts, precise location, call log or geofencing permissions and you want it sorted before Google Play enforces the change, the ",[83,542,544],{"href":543},"\u002Ffixed-price\u002Fflutter-firebase-bug-fix\u002F","App Fix Ticket"," covers it in two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days and comes as a pull request. Or ",[83,547,549],{"href":548},"\u002Fcontact\u002F","send me a short description",{"title":452,"searchDepth":551,"depth":551,"links":552},2,[553,554,555,556,557,558,559,563,564],{"id":33,"depth":551,"text":34},{"id":169,"depth":551,"text":170},{"id":209,"depth":551,"text":210},{"id":242,"depth":551,"text":243},{"id":269,"depth":551,"text":270},{"id":289,"depth":551,"text":290},{"id":325,"depth":551,"text":326,"children":560},[561],{"id":419,"depth":562,"text":420},3,{"id":472,"depth":551,"text":473},{"id":536,"depth":551,"text":537},"AI & Technology","2026-10-19T10:00:00.000Z","Google Play's sensitive-permission changes for Android apps: the Contacts Permissions policy, the location button, READ_CALL_LOG for phone verification and geofencing foreground services. The dates, who must act, and what it means for Flutter, checked October 19, 2026.",null,"md",[571,574,577,580,583],{"question":572,"answer":573},"When do the new Google Play contacts and location rules apply?","Google's Policy Deadlines table lists January 27, 2027 for the Contacts Permissions policy and the location button. The contacts Help Center article says compliance is mandatory for apps that target Android 17 or later on that date, with a 30-day automatic self extension in Play Console. The location article applies the location button to apps that target Android 17 or later. The June 2026 newsletter separately says \"Starting October 28, 2026\", and I found no page that explains the gap.",{"question":575,"answer":576},"Do I have to stop using READ_CONTACTS?","Not always. Google's policy says apps that target Android 17 or later may only request READ_CONTACTS if the Android Contact Picker is not sufficient to provide core functionality. If you keep it, you complete a declaration in Play Console that explains why the picker is not enough. A custom in-app contact picker does not count as a reason, according to the article.",{"question":578,"answer":579},"What replaces READ_CALL_LOG for phone number verification?","Google's article says it will no longer permit account verification via phone call as a use case for READ_CALL_LOG, effective January 27, 2027. It points to the Digital Credentials API, and mentions the SMS Retriever API for SMS-based verification.",{"question":581,"answer":582},"Is geofencing banned in Android apps?","No. Google is removing geofencing as an approved foreground services use case, effective January 27, 2027, and says developers can instead use the Geofence API. Android's geofencing guide describes the Geofence API through GeofencingClient.",{"question":584,"answer":585},"How do I remove a permission a Flutter plugin adds?","Add xmlns:tools=\"http:\u002F\u002Fschemas.android.com\u002Ftools\" to the manifest element of android\u002Fapp\u002Fsrc\u002Fmain\u002FAndroidManifest.xml, then add a uses-permission line for that permission with tools:node=\"remove\". Android's manifest documentation describes the marker as removing an element from the merged manifest that a lower-priority manifest, such as a library, provided. Its own example removes a meta-data element, so test the permission case on a release build. Then check the merged manifest to confirm it is gone.","Boynton Beach, FL",{"readingTimeStats":588},{"text":589,"minutes":590,"time":591,"words":592},"10 min read",9.115,546900,1823,true,"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027","google play contacts permissions policy","10 min",[598,599,600],"app-store-google-play-deadlines-2026-2027","google-play-target-api-36-android-16-requirement-2026","android-developer-verification-requirement-2026",{"title":5,"description":567},[603,605,608,611,614,617,619,621,623,625,628,631,634,637,640],{"title":604,"url":85},"Play Console Help, Policy Deadlines",{"title":606,"url":607},"Android Developers, Play Monthly newsletter, June 2026","https:\u002F\u002Fdeveloper.android.com\u002Fnewsletter\u002Fplay-monthly\u002F2026\u002Fcontent\u002Fjune",{"title":609,"url":610},"Android Developers Blog, updated Play policies (April 2026)","https:\u002F\u002Fandroid-developers.googleblog.com\u002F2026\u002F04\u002Fgiving-users-clearer-choice-and-everyone-a-safer-more-trusted-app-ecosystem.html",{"title":612,"url":613},"Play Console Help, Permissions and APIs that Access Sensitive Information","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16558241",{"title":615,"url":616},"Play Console Help, Preview: Permissions and APIs that Access Sensitive Information","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16909972",{"title":618,"url":92},"Play Console Help, Understanding Restricted Permissions with minimum scope alternatives",{"title":620,"url":116},"Play Console Help, Minimum Scope: Foreground Location Access and the Location Button",{"title":622,"url":140},"Play Console Help, Use of SMS or Call Log permission groups",{"title":624,"url":162},"Play Console Help, Preview: foreground service and full-screen intent requirements",{"title":626,"url":627},"Android Developers, Create and monitor geofences","https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fsensors-and-location\u002Flocation\u002Fgeofencing",{"title":629,"url":630},"Android Developers, Merge multiple manifest files","https:\u002F\u002Fdeveloper.android.com\u002Fbuild\u002Fmanage-manifests",{"title":632,"url":633},"pub.dev, permission_handler","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fpermission_handler",{"title":635,"url":636},"pub.dev, flutter_contacts","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_contacts",{"title":638,"url":639},"pub.dev, contacts_service","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fcontacts_service",{"title":641,"url":642},"pub.dev, geolocator","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgeolocator","blog\u002Fgoogle-play-contacts-permissions-policy-2027","google play contacts permissions policy, android contact picker, READ_CONTACTS google play, google play location button, onlyForLocationButton, READ_CALL_LOG google play, sms retriever api, geofencing foreground service google play, flutter permission_handler contacts, flutter tools:node remove permission, google play policy january 27 2027",[646,647,648,649,650],"Google Play's policy deadlines table lists January 27, 2027 for all four changes: the Contacts Permissions policy, the location button, READ_CALL_LOG for phone verification, and geofencing as a foreground service use case. Google ties the contacts and location button rules to apps that target Android 17 (API level 37) or later; its call log and geofencing pages give no target API.","One Google source says something different. The June 2026 Play newsletter says \"Starting October 28, 2026\" for the contacts and location changes. I could not reconcile the two with a primary source, so I plan around January 27, 2027 and treat October 28 as an earlier date to watch.","Apps that target Android 17 (API level 37) or later may request READ_CONTACTS only if the Android Contact Picker is not sufficient for core functionality, and they must file a Play Console declaration.","The Contact Picker exists only on Android 17 or later (API level 37+) and is not backported, so an app that still supports older Android versions needs a plan for them.","In Flutter, the permissions usually enter your app through plugins. Check the merged manifest, and remove one you do not need with tools:node=\"remove\" on a uses-permission line in your own AndroidManifest.xml.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F","eOmFpbw-YCW6fgOWP6XWYACYav4WLw2GRePECTKpAVE",[654,1504,1966],{"id":655,"title":656,"author":657,"body":659,"category":565,"createdAt":1431,"description":1432,"disclosure":568,"extension":569,"faq":1433,"howTo":568,"lastVerified":568,"location":586,"meta":1449,"navigation":593,"ogImage":568,"path":1455,"primaryKeyword":1456,"readingTime":1457,"related":1458,"seo":1461,"sources":1462,"stem":1493,"tags":1494,"takeaways":1495,"updatedAt":1501,"url":1502,"__hash__":1503},"blog\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027.md","App Store and Google Play Deadlines for 2026 and 2027",{"name":7,"social":658},{"twitter":9},{"type":11,"value":660,"toc":1423},[661,667,670,675,679,1329,1341,1344,1354,1357,1361,1378,1381,1385,1401,1404,1408,1414,1416],[14,662,663,666],{},[17,664,665],{},"The App Store and Google Play requirements that affect mobile app owners in 2026 and 2027 fit in one table: Xcode 26 uploads since April 28, 2026, target API 36 and Play Billing Library 8 since August 31, 2026, 16 KB page size support from February 1, 2027, and five Firebase shutdowns between March 22 and September 30, 2027."," The table below is sorted by date, and every row links to the page where the platform states it.",[14,668,669],{},"I checked each one on October 18, 2026. Rows whose date has passed are marked \"In effect\".",[14,671,672,674],{},[17,673,28],{}," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Apple and Google don't pay me for anything on this page.",[31,676,678],{"id":677},"all-dates-in-order","All dates, in order",[36,680,681,699],{},[39,682,683],{},[42,684,685,688,691,694,696],{},[45,686,687],{},"Date",[45,689,690],{},"What changes",[45,692,693],{},"Status",[45,695,59],{},[45,697,698],{},"My guide",[61,700,701,728,751,776,800,822,845,874,899,926,951,977,999,1025,1049,1071,1095,1116,1140,1164,1189,1216,1237,1261,1284,1305],{},[42,702,703,706,712,715,722],{},[66,704,705],{},"January 31, 2026",[66,707,708,711],{},[17,709,710],{},"Apple."," Apple asked developers to answer the updated age rating questions in App Store Connect by this date, to avoid an interruption when submitting app updates. Affects: every app on the App Store.",[66,713,714],{},"In effect",[66,716,717],{},[83,718,721],{"href":719,"rel":720},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Fupcoming-requirements\u002F",[87],"Apple",[66,723,724],{},[83,725,727],{"href":726},"\u002Fblog\u002Fapp-store-age-rating-questions-update-2026\u002F","Age rating questions",[42,729,730,733,738,740,745],{},[66,731,732],{},"April 28, 2026",[66,734,735,737],{},[17,736,710],{}," Uploads to App Store Connect must be built with Xcode 26 or later, using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. Affects: anyone uploading a build, including Flutter apps.",[66,739,714],{},[66,741,742],{},[83,743,721],{"href":719,"rel":744},[87],[66,746,747],{},[83,748,750],{"href":749},"\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026\u002F","ITMS-90725 and Xcode 26",[42,752,753,756,762,764,771],{},[66,754,755],{},"August 31, 2026",[66,757,758,761],{},[17,759,760],{},"Google Play."," New apps and app updates must target Android 16 (API level 36) or higher. Wear OS and Android Automotive OS apps need API 35, and Android XR apps need API 34. Affects: anyone publishing a new app or an update.",[66,763,714],{},[66,765,766],{},[83,767,770],{"href":768,"rel":769},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F11926878",[87],"Play Console Help",[66,772,773],{},[83,774,775],{"href":513},"Target API 36",[42,777,778,780,785,787,794],{},[66,779,755],{},[66,781,782,784],{},[17,783,760],{}," New apps and updates must use Play Billing Library 8 or later. Version 7 is no longer accepted by default. Affects: apps with in-app purchases or subscriptions.",[66,786,714],{},[66,788,789],{},[83,790,793],{"href":791,"rel":792},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Fdeprecation-faq",[87],"Android Developers",[66,795,796],{},[83,797,799],{"href":798},"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","Billing Library 8",[42,801,802,805,810,812,818],{},[66,803,804],{},"September 2026",[66,806,807,809],{},[17,808,710],{}," Answers to the new social media questions in the age rating questionnaire are required when submitting new apps or updates, or apps for notarization for alternative distribution. Apple gives the month, not a day. Affects: every app on the App Store.",[66,811,714],{},[66,813,814],{},[83,815,721],{"href":816,"rel":817},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002F?id=tlur8uvi",[87],[66,819,820],{},[83,821,727],{"href":726},[42,823,824,827,832,834,839],{},[66,825,826],{},"September 9, 2026",[66,828,829,831],{},[17,830,710],{}," iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later. Affects: anyone uploading an iOS or iPadOS build.",[66,833,714],{},[66,835,836],{},[83,837,721],{"href":719,"rel":838},[87],[66,840,841],{},[83,842,844],{"href":843},"\u002Fblog\u002Fios-27-sdk-requirement-april-2027-xcode-27-flutter\u002F","iOS 27 SDK checklist",[42,846,847,850,855,857,868],{},[66,848,849],{},"September 14, 2026",[66,851,852,854],{},[17,853,710],{}," Xcode 27 was released. Flutter's docs say Apple mandates the UIScene life cycle for UIKit apps built with the iOS 27 SDK, and that Flutter apps built with Xcode 27 without it fail to launch. Affects: anyone building with Xcode 27, including Flutter apps with a custom AppDelegate.",[66,856,714],{},[66,858,859,89,864],{},[83,860,863],{"href":861,"rel":862},"https:\u002F\u002Fdocs.flutter.dev\u002Frelease\u002Fbreaking-changes\u002Fuiscenedelegate",[87],"Flutter docs",[83,865,721],{"href":866,"rel":867},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Freleases\u002F",[87],[66,869,870],{},[83,871,873],{"href":872},"\u002Fblog\u002Fflutter-uiscene-migration-xcode-27-app-wont-launch-2026\u002F","UIScene migration",[42,875,876,879,885,887,893],{},[66,877,878],{},"September 30, 2026",[66,880,881,884],{},[17,882,883],{},"Google Play \u002F Android."," Developer verification protections begin for apps installed from participating stores in Brazil, Indonesia, Singapore and Thailand on certified devices running Android 7 or higher. Affects: anyone distributing Android apps.",[66,886,714],{},[66,888,889],{},[83,890,793],{"href":891,"rel":892},"https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification",[87],[66,894,895],{},[83,896,898],{"href":897},"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F","Developer verification",[42,900,901,904,910,913,920],{},[66,902,903],{},"October 30, 2026",[66,905,906,909],{},[17,907,908],{},"Google APIs."," Google says the legacy Fitbit Web API will be turned off and will no longer function or sync data. Support already ended on September 30, 2026. Affects: apps that read Fitbit data through the Fitbit Web API.",[66,911,912],{},"Upcoming",[66,914,915],{},[83,916,919],{"href":917,"rel":918},"https:\u002F\u002Fdevelopers.google.com\u002Fhealth",[87],"Google Health API",[66,921,922],{},[83,923,925],{"href":924},"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F","Google Fit to Health Connect",[42,927,928,930,936,938,945],{},[66,929,903],{},[66,931,932,935],{},[17,933,934],{},"Supabase."," New tables in the public schema stop getting automatic Data API access in existing projects, so they need an explicit grant. Affects: apps with a Supabase backend.",[66,937,912],{},[66,939,940],{},[83,941,944],{"href":942,"rel":943},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F45329-breaking-change-tables-not-exposed-to-data-and-graphql-api-automatically",[87],"Supabase",[66,946,947],{},[83,948,950],{"href":949},"\u002Fblog\u002Fsupabase-permission-denied-new-tables-october-30-2026\u002F","Supabase permission denied",[42,952,953,956,961,963,971],{},[66,954,955],{},"November 1, 2026",[66,957,958,960],{},[17,959,760],{}," End of the extension Google offers for the target API 36 and Billing Library 7 deadlines. Affects: anyone who requested an extension.",[66,962,912],{},[66,964,965,89,968],{},[83,966,770],{"href":768,"rel":967},[87],[83,969,793],{"href":791,"rel":970},[87],[66,972,973,89,975],{},[83,974,775],{"href":513},[83,976,799],{"href":798},[42,978,979,982,987,989,995],{},[66,980,981],{},"End of 2026",[66,983,984,986],{},[17,985,908],{}," The Google Fit APIs, including the REST API, are supported only until the end of 2026. Affects: apps that read fitness data through Google Fit.",[66,988,912],{},[66,990,991],{},[83,992,793],{"href":993,"rel":994},"https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect\u002Fmigration\u002Ffit",[87],[66,996,997],{},[83,998,925],{"href":924},[42,1000,1001,1004,1010,1012,1019],{},[66,1002,1003],{},"January 1, 2027",[66,1005,1006,1009],{},[17,1007,1008],{},"Firebase."," New users can no longer start using the FCM InstanceId server APIs and device groups. Firebase says new users can onboard before this date. Affects: new integrations that use those APIs.",[66,1011,912],{},[66,1013,1014],{},[83,1015,1018],{"href":1016,"rel":1017},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Ftroubleshooting",[87],"Firebase",[66,1020,1021],{},[83,1022,1024],{"href":1023},"\u002Fblog\u002Ffcm-legacy-api-shutdown-http-v1-migration-2026\u002F","FCM migration",[42,1026,1027,1030,1035,1037,1043],{},[66,1028,1029],{},"Early 2027",[66,1031,1032,1034],{},[17,1033,710],{}," Existing apps in the EEA, UK or US whose category is Health & Fitness or Medical, or that are marked in the age rating questionnaire as containing frequent Medical or Treatment Information, must declare a regulated medical device status in App Store Connect. Without it, you can no longer submit app updates. New apps have needed it since March 26, 2026. Apple gives no exact date. Affects: health, fitness and medical apps.",[66,1036,912],{},[66,1038,1039],{},[83,1040,721],{"href":1041,"rel":1042},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002F?id=nyqbfz1y",[87],[66,1044,1045],{},[83,1046,1048],{"href":1047},"\u002Fblog\u002Fapp-store-medical-device-status-declaration-2027\u002F","Medical device status",[42,1050,1051,1053,1058,1060,1065],{},[66,1052,79],{},[66,1054,1055,1057],{},[17,1056,760],{}," Four sensitive-permission changes take effect: the Contacts Permissions policy (use the Android Contact Picker unless the app needs broad access), the location button as the minimum for one-time precise location, no READ_CALL_LOG for phone-call account verification, and no geofencing as a foreground service use case. Google ties the contacts and location rules to apps that target Android 17 (API level 37) or later; its call log and geofencing pages give no target API. A 30-day self extension is available in Play Console. Affects: apps that request READ_CONTACTS, ACCESS_FINE_LOCATION or READ_CALL_LOG, or run geofencing in a foreground service.",[66,1059,912],{},[66,1061,1062],{},[83,1063,770],{"href":85,"rel":1064},[87],[66,1066,1067],{},[83,1068,1070],{"href":1069},"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F","Play permission changes",[42,1072,1073,1076,1081,1083,1089],{},[66,1074,1075],{},"February 1, 2027",[66,1077,1078,1080],{},[17,1079,760],{}," Updates that don't support 16 KB memory page sizes can't be released, for apps targeting Android 15 (API level 35) and higher. Affects: apps with native code, which includes Flutter apps.",[66,1082,912],{},[66,1084,1085],{},[83,1086,793],{"href":1087,"rel":1088},"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fpractices\u002Fpage-sizes",[87],[66,1090,1091],{},[83,1092,1094],{"href":1093},"\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F","16 KB page size",[42,1096,1097,1100,1105,1107,1112],{},[66,1098,1099],{},"2027 (no month stated)",[66,1101,1102,1104],{},[17,1103,883],{}," Developer verification capability expands globally for all apps on certified Android devices. Affects: anyone distributing Android apps.",[66,1106,912],{},[66,1108,1109],{},[83,1110,793],{"href":891,"rel":1111},[87],[66,1113,1114],{},[83,1115,898],{"href":897},[42,1117,1118,1121,1126,1128,1134],{},[66,1119,1120],{},"March 22, 2027",[66,1122,1123,1125],{},[17,1124,1008],{}," Firebase Studio shuts down and remaining data is permanently deleted. Affects: anyone with a Firebase Studio workspace.",[66,1127,912],{},[66,1129,1130],{},[83,1131,1018],{"href":1132,"rel":1133},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fstudio\u002Fmigrating-project",[87],[66,1135,1136],{},[83,1137,1139],{"href":1138},"\u002Fblog\u002Ffirebase-studio-shutting-down-migrate-project-2027\u002F","Firebase Studio shutdown",[42,1141,1142,1145,1150,1152,1158],{},[66,1143,1144],{},"March 31, 2027",[66,1146,1147,1149],{},[17,1148,1008],{}," Firebase Extensions service shuts down. Installed extensions keep running, but you lose the ability to update, reconfigure or uninstall them through the console or CLI. Affects: apps with installed extensions.",[66,1151,912],{},[66,1153,1154],{},[83,1155,1018],{"href":1156,"rel":1157},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Ffaq-and-troubleshooting",[87],[66,1159,1160],{},[83,1161,1163],{"href":1162},"\u002Fblog\u002Ffirebase-extensions-shutting-down-replace-2027\u002F","Firebase Extensions shutdown",[42,1165,1166,1169,1174,1176,1182],{},[66,1167,1168],{},"April 2027",[66,1170,1171,1173],{},[17,1172,710],{}," Apps uploaded to App Store Connect must be built with the iOS 27 and iPadOS 27 SDK or later (tvOS, visionOS and watchOS 27 SDKs for those platforms). Apple gives the month, not a day. Affects: every iOS and Flutter app that ships an update.",[66,1175,912],{},[66,1177,1178],{},[83,1179,721],{"href":1180,"rel":1181},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002F?id=k1mtkt1k",[87],[66,1183,1184,89,1186],{},[83,1185,844],{"href":843},[83,1187,1188],{"href":872},"UIScene and Xcode 27",[42,1190,1191,1193,1198,1200,1212],{},[66,1192,1168],{},[66,1194,1195,1197],{},[17,1196,710],{}," Apple's news post says any app or game submitted must include screenshots for iPhone Duo. Its screenshot specifications page says they will be required for any app using the iOS 27.1 SDK or later. Apple gives the month, not a day. Affects: App Store submissions.",[66,1199,912],{},[66,1201,1202,89,1207],{},[83,1203,1206],{"href":1204,"rel":1205},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002F?id=kkphp5qo",[87],"Apple news",[83,1208,1211],{"href":1209,"rel":1210},"https:\u002F\u002Fdeveloper.apple.com\u002Fhelp\u002Fapp-store-connect\u002Freference\u002Fapp-information\u002Fscreenshot-specifications",[87],"Apple specs",[66,1213,1214],{},[83,1215,844],{"href":843},[42,1217,1218,1220,1225,1227,1233],{},[66,1219,1168],{},[66,1221,1222,1224],{},[17,1223,710],{}," Apple's submitting page says iOS and iPadOS apps uploaded to App Store Connect must target iOS 15 or later. The upcoming requirements page still lists iOS 13 as the minimum since September 9, 2026. Apple gives the month, not a day. Affects: apps whose deployment target is iOS 13 or 14.",[66,1226,912],{},[66,1228,1229],{},[83,1230,721],{"href":1231,"rel":1232},"https:\u002F\u002Fdeveloper.apple.com\u002Fapp-store\u002Fsubmitting\u002F",[87],[66,1234,1235],{},[83,1236,844],{"href":843},[42,1238,1239,1242,1247,1249,1255],{},[66,1240,1241],{},"June 15, 2027",[66,1243,1244,1246],{},[17,1245,1008],{}," Firebase ML custom model hosting shuts down. Affects: apps that host custom models in Firebase ML.",[66,1248,912],{},[66,1250,1251],{},[83,1252,1018],{"href":1253,"rel":1254},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fml\u002Fmigrate-to-cloud-storage",[87],[66,1256,1257],{},[83,1258,1260],{"href":1259},"\u002Fblog\u002Ffirebase-ml-model-hosting-shutting-down-migrate-2027\u002F","Firebase ML model hosting shutdown",[42,1262,1263,1266,1271,1273,1278],{},[66,1264,1265],{},"August 31, 2027",[66,1267,1268,1270],{},[17,1269,760],{}," Billing Library 8 reaches its own deadline. New apps and updates must use Billing Library 9 or later. Extension available until November 1, 2027. Affects: apps with in-app purchases or subscriptions.",[66,1272,912],{},[66,1274,1275],{},[83,1276,793],{"href":791,"rel":1277},[87],[66,1279,1280],{},[83,1281,1283],{"href":1282},"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F","Billing Library 9",[42,1285,1286,1289,1294,1296,1301],{},[66,1287,1288],{},"September 29, 2027",[66,1290,1291,1293],{},[17,1292,1008],{}," The FCM InstanceId server APIs and device groups are decommissioned. Affects: servers that manage topics or tokens through the old APIs.",[66,1295,912],{},[66,1297,1298],{},[83,1299,1018],{"href":1016,"rel":1300},[87],[66,1302,1303],{},[83,1304,1024],{"href":1023},[42,1306,1307,1310,1315,1317,1323],{},[66,1308,1309],{},"September 30, 2027",[66,1311,1312,1314],{},[17,1313,1008],{}," Firebase Test Lab is fully shut down. Affects: CI pipelines that run tests on Test Lab.",[66,1316,912],{},[66,1318,1319],{},[83,1320,1018],{"href":1321,"rel":1322},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Ftest-lab",[87],[66,1324,1325],{},[83,1326,1328],{"href":1327},"\u002Fblog\u002Ffirebase-test-lab-shutting-down-alternatives-2027\u002F","Firebase Test Lab shutdown",[14,1330,1331,1332,1336,1337,1340],{},"Two more notes. Apple's privacy manifest rules (May 1, 2024 for required reason APIs and February 12, 2025 for common SDKs, see the ",[83,1333,1335],{"href":1334},"\u002Fblog\u002Fapple-privacy-manifest-itms-91053-itms-91061-flutter-fix-2026\u002F","privacy manifest guide",") and the FCM legacy send shutdown (July 22, 2024, see the ",[83,1338,1339],{"href":1023},"FCM migration guide",") already passed before 2026. I keep them in their own guides because they still cause upload and delivery errors.",[31,1342,721],{"id":1343},"apple",[14,1345,1346,1347,89,1349,363,1351,498],{},"Apple's page names one build rule that matters most: Xcode 26 or later since April 28, 2026. Apple's September 9, 2026 news post adds the next one: starting April 2027, uploads must be built with the iOS 27 and iPadOS 27 SDK or later, which means Xcode 27. Apple's October 5, 2026 post also says that from April 2027 every submission needs iPhone Duo screenshots. The bigger change with Xcode 27 is the UIScene life cycle, which a Flutter app on 3.41 or later with an unmodified AppDelegate gets automatically. A custom AppDelegate needs manual changes. The guides are ",[83,1348,750],{"href":749},[83,1350,1188],{"href":872},[83,1352,1353],{"href":1334},"privacy manifest errors",[14,1355,1356],{},"My advice: check which Xcode your build machine uses before your next upload, and test a build with Xcode 27 before you need one.",[31,1358,1360],{"id":1359},"google-play-and-android","Google Play and Android",[14,1362,1363,1364,1367,1368,89,1371,89,1373,363,1375,498],{},"The Play rules come in pairs. Target API 36 and Billing Library 8 both took effect on August 31, 2026 with an extension to November 1, 2026. After that, February 1, 2027 brings the 16 KB page size rule, and on August 31, 2027 Google requires Billing Library 9 or later for new apps and updates. The ",[83,1365,1366],{"href":1282},"Billing Library 9 guide"," covers that move. Separately, Android developer verification started on September 30, 2026 in four countries, with a global expansion in 2027. The guides are ",[83,1369,1370],{"href":513},"target API 36",[83,1372,1094],{"href":1093},[83,1374,799],{"href":798},[83,1376,1377],{"href":897},"developer verification",[14,1379,1380],{},"My advice: if you are still behind on API 36 or Billing 8, ship that update before November 1, 2026. Then do the 16 KB check before February 1, 2027, since it is the next date that can block a release.",[31,1382,1384],{"id":1383},"firebase-and-google-apis","Firebase and Google APIs",[14,1386,1387,1388,89,1392,89,1395,1397,1398,498],{},"Firebase has five shutdown dates in 2027, plus the January 1 cutoff for new users of the InstanceId APIs. Firestore, Authentication, Cloud Functions and Hosting are not on the list. Google Fit APIs are supported only until the end of 2026, and Google points to Health Connect and the Google Health API. The legacy Fitbit Web API goes first: Google says it will be turned off on October 30, 2026. The guides are ",[83,1389,1391],{"href":1390},"\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026\u002F","Firebase shutdown dates",[83,1393,1394],{"href":1023},"FCM HTTP v1 migration",[83,1396,925],{"href":924}," and, if you use it, ",[83,1399,1400],{"href":949},"Supabase new table permissions",[14,1402,1403],{},"My advice: open the Firebase console for every project you own and look at Extensions, Machine Learning, Test Lab and Studio. Those are the products with a date attached.",[31,1405,1407],{"id":1406},"how-i-keep-this-page-current","How I keep this page current",[14,1409,1410,1411,498],{},"Every row links to the page where the platform states the date. If a source says only a month or \"later this year\", I write exactly that. When a platform moves a date, I change the row and the updated date at the top of this page. If you spot a date that looks wrong, ",[83,1412,1413],{"href":548},"tell me",[31,1415,537],{"id":536},[14,1417,1418,1419,545,1421,498],{},"If one of these deadlines lands on an app you can't update yourself, the ",[83,1420,544],{"href":543},[83,1422,549],{"href":548},{"title":452,"searchDepth":551,"depth":551,"links":1424},[1425,1426,1427,1428,1429,1430],{"id":677,"depth":551,"text":678},{"id":1343,"depth":551,"text":721},{"id":1359,"depth":551,"text":1360},{"id":1383,"depth":551,"text":1384},{"id":1406,"depth":551,"text":1407},{"id":536,"depth":551,"text":537},"2026-10-18T22:00:00.000Z","One dated table of the App Store, Google Play, Firebase and Google API requirements that affect mobile app owners in 2026 and 2027, with the primary source for each date, checked October 18, 2026.",[1434,1437,1440,1443,1446],{"question":1435,"answer":1436},"What is the next Google Play deadline?","The deadline of November 1, 2026 is the end of the extension window for the target API 36 and Billing Library 7 deadlines. After that, the next one is February 1, 2027, when Google says app updates that don't support 16 KB memory page sizes can't be released.",{"question":1438,"answer":1439},"What Xcode version does the App Store require?","Apple's upcoming requirements page says that since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. Apple's September 9, 2026 news post adds the next one: starting April 2027, iOS and iPadOS apps must be built with the iOS 27 and iPadOS 27 SDK or later. Apple gives the month, not a day.",{"question":1441,"answer":1442},"Do these deadlines apply to apps already published?","It depends on the rule. Google says existing apps must target API 35 or higher to stay available to new users on newer Android versions, and existing apps keep working on version 7 of Play Billing until you ship an update. Most upload-side rules, such as the Xcode SDK minimum, apply when you submit a new build.",{"question":1444,"answer":1445},"Which deadlines affect a Flutter app?","Nearly all of the Apple and Google Play rows do, because a Flutter app is a normal iOS and Android app underneath. The Firebase rows apply only if you use that Firebase product. The Supabase row applies only if you use Supabase.",{"question":1447,"answer":1448},"How will I know if a date changes?","Each row links to the page where the platform states the date, and I list the date I checked it. Dates can move, so check the linked page before you plan around one. I update this page when a platform changes a date.",{"readingTimeStats":1450},{"text":1451,"minutes":1452,"time":1453,"words":1454},"9 min read",8.92,535200,1784,"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027","app store deadlines 2026","6 min",[599,1459,1460],"itms-90725-sdk-version-issue-xcode-26-flutter-2026","firebase-deprecations-shutdown-dates-2026",{"title":656,"description":1432},[1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491],{"title":1464,"url":917},"Google for Developers, Google Health API (Fitbit Web API dates)",{"title":1466,"url":719},"Apple Developer, Upcoming requirements",{"title":1468,"url":866},"Apple Developer, Releases",{"title":1470,"url":861},"Flutter docs, Migrate to UIScene life cycle",{"title":1472,"url":768},"Play Console Help, Target API level requirements for Google Play apps",{"title":1474,"url":791},"Android Developers, Play Billing Library deprecation FAQ",{"title":1476,"url":1087},"Android Developers, Support 16 KB page sizes",{"title":1478,"url":891},"Android Developers, Android developer verification",{"title":1480,"url":993},"Android Developers, Migrate from the Google Fit APIs",{"title":1482,"url":1016},"Firebase, FCM troubleshooting (InstanceId and device groups deprecation)",{"title":1484,"url":1132},"Firebase, Migrate from Firebase Studio",{"title":1486,"url":1156},"Firebase, Extensions FAQ and troubleshooting",{"title":1488,"url":1253},"Firebase, Migrate Firebase ML model hosting to Cloud Storage",{"title":1490,"url":1321},"Firebase, Test Lab",{"title":1492,"url":942},"Supabase changelog, Tables not exposed to the Data API automatically","blog\u002Fapp-store-google-play-deadlines-2026-2027","app store deadlines 2026, google play deadlines 2026, app store requirements 2027, google play requirements 2027, target api 36 deadline, play billing library 8 deadline, 16 kb page size deadline, xcode 26 requirement, firebase shutdown dates, mobile app compliance calendar",[1496,1497,1498,1499,1500],"Most 2026 deadlines have already hit. Since April 28, 2026 iOS uploads need Xcode 26 or later, and since August 31, 2026 Google Play needs new apps and updates to target API 36 and use Play Billing Library 8.","Google lets you request an extension for both Play deadlines until November 1, 2026. That is the last date to ship an update if you are still behind.","The next hard date for Android is February 1, 2027. Google says updates that don't support 16 KB memory page sizes can't be released after that.","On iOS, apps built with Xcode 27 must use the UIScene life cycle or they fail to launch. Xcode 27 was released on September 14, 2026.","Firebase has five shutdowns between March 22 and September 30, 2027. Core services such as Firestore and Authentication are not on the list.","2026-10-19T09:00:00.000Z","https:\u002F\u002Fapp369.com\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","7iLEy6X2NFre6xDWHiYbB0u9V57CZXRUPhPb7TWJM4w",{"id":1505,"title":1506,"author":1507,"body":1509,"category":565,"createdAt":1907,"description":1908,"disclosure":568,"extension":569,"faq":1909,"howTo":568,"lastVerified":568,"location":586,"meta":1925,"navigation":593,"ogImage":568,"path":1931,"primaryKeyword":1932,"readingTime":1933,"related":1934,"seo":1938,"sources":1939,"stem":1956,"tags":1957,"takeaways":1958,"updatedAt":1907,"url":1964,"__hash__":1965},"blog\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026.md","Google Play Requires Target API 36: The Android 16 Update",{"name":7,"social":1508},{"twitter":9},{"type":11,"value":1510,"toc":1900},[1511,1521,1524,1529,1533,1573,1582,1585,1605,1609,1618,1691,1698,1702,1721,1765,1768,1771,1833,1850,1854,1857,1887,1891,1893],[14,1512,1513,1516,1517,1520],{},[17,1514,1515],{},"Since August 31, 2026, Google Play only accepts new apps and updates that target Android 16 (API level 36), and Google says you'll be able to request an extension to November 1, 2026."," Raising ",[236,1518,1519],{},"targetSdkVersion"," is one line, but it turns on Android 16 behavior: no edge-to-edge opt-out, predictive back by default, and no orientation lock on tablets. Test those three before you ship. In a Flutter app, the quickest path is usually Flutter 3.35 or later, which targets 36 by default.",[14,1522,1523],{},"The requirements below come from Google's target API page and its Android 16 behavior changes, and the Flutter defaults from Flutter's source code, as listed in the sources. I checked each one on October 18, 2026.",[14,1525,1526,1528],{},[17,1527,28],{}," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,1530,1532],{"id":1531},"the-requirement","The requirement",[36,1534,1535,1545],{},[39,1536,1537],{},[42,1538,1539,1542],{},[45,1540,1541],{},"App type",[45,1543,1544],{},"Must target, for new apps and updates from August 31, 2026",[61,1546,1547,1557,1565],{},[42,1548,1549,1552],{},[66,1550,1551],{},"Phone and tablet apps",[66,1553,1554],{},[17,1555,1556],{},"Android 16 (API level 36)",[42,1558,1559,1562],{},[66,1560,1561],{},"Wear OS and Android Automotive OS",[66,1563,1564],{},"Android 15 (API level 35)",[42,1566,1567,1570],{},[66,1568,1569],{},"Android TV and Android XR",[66,1571,1572],{},"Android 14 (API level 34)",[14,1574,1575,1576,1581],{},"Source: ",[83,1577,1580],{"href":1578,"rel":1579},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Frequirements\u002Ftarget-sdk",[87],"Google Play target API level requirement",", last updated October 16, 2026.",[14,1583,1584],{},"Google's page also says:",[184,1586,1587,1593,1599],{},[187,1588,1589,1592],{},[17,1590,1591],{},"Extension:"," if you need more time, you'll be able to request an extension to November 1, 2026. Google says the extension forms will be in Play Console \"later this year\", so check there for the form.",[187,1594,1595,1598],{},[17,1596,1597],{},"Existing apps:"," to stay available to new users on devices running a newer Android version than the app targets, an existing app must target API 35 or higher. An app that targets API 34 or lower is only available on devices running that Android version or lower.",[187,1600,1601,1604],{},[17,1602,1603],{},"Exception:"," permanently private apps for one organization's internal use.",[31,1606,1608],{"id":1607},"what-changes-when-you-target-api-36","What changes when you target API 36",[14,1610,1611,1612,1617],{},"Google's ",[83,1613,1616],{"href":1614,"rel":1615},"https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F16\u002Fbehavior-changes-16",[87],"Android 16 behavior changes"," apply to apps that target API 36 and run on Android 16 or higher. These are the three I'd test first:",[36,1619,1620,1632],{},[39,1621,1622],{},[42,1623,1624,1626,1629],{},[45,1625,47],{},[45,1627,1628],{},"What Google says",[45,1630,1631],{},"Temporary way out",[61,1633,1634,1651,1675],{},[42,1635,1636,1641,1648],{},[66,1637,1638],{},[17,1639,1640],{},"Edge-to-edge",[66,1642,1643,1644,1647],{},"Apps can no longer opt out of drawing behind the status and navigation bars. ",[236,1645,1646],{},"windowOptOutEdgeToEdgeEnforcement"," is deprecated and disabled",[66,1649,1650],{},"None for API 36",[42,1652,1653,1658,1669],{},[66,1654,1655],{},[17,1656,1657],{},"Predictive back",[66,1659,1660,1661,1664,1665,1668],{},"Predictive back animations are on by default. ",[236,1662,1663],{},"onBackPressed"," is not called and ",[236,1666,1667],{},"KEYCODE_BACK"," is not dispatched",[66,1670,1671,1674],{},[236,1672,1673],{},"android:enableOnBackInvokedCallback=\"false\""," in the manifest",[42,1676,1677,1682,1685],{},[66,1678,1679],{},[17,1680,1681],{},"Large screens",[66,1683,1684],{},"On displays at least 600dp wide, orientation, resizability and aspect ratio restrictions are ignored, so the app fills the window",[66,1686,1687,1690],{},[236,1688,1689],{},"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY",". Google says it won't apply once you target API 37",[14,1692,1693,1694,1697],{},"The large-screen rule doesn't apply to games (based on ",[236,1695,1696],{},"android:appCategory","), to screens smaller than 600dp, or when users opt in to the app's default behavior in the device's aspect ratio settings.",[31,1699,1701],{"id":1700},"flutter-apps","Flutter apps",[14,1703,1704,1705,1708,1709,1712,1713,1716,1717,1720],{},"Flutter's project template sets the target from the Flutter version: ",[236,1706,1707],{},"targetSdk = flutter.targetSdkVersion"," in ",[236,1710,1711],{},"android\u002Fapp\u002Fbuild.gradle.kts"," in Flutter 3.35's template, and ",[236,1714,1715],{},"targetSdkVersion flutter.targetSdkVersion"," in older Groovy templates such as Flutter 3.10's. Flutter's ",[236,1718,1719],{},"FlutterExtension"," source sets it to:",[36,1722,1723,1736],{},[39,1724,1725],{},[42,1726,1727,1730],{},[45,1728,1729],{},"Flutter version",[45,1731,1732,1733],{},"Default ",[236,1734,1735],{},"flutter.targetSdkVersion",[61,1737,1738,1746,1753],{},[42,1739,1740,1743],{},[66,1741,1742],{},"3.29 (February 12, 2025)",[66,1744,1745],{},"35",[42,1747,1748,1751],{},[66,1749,1750],{},"3.32 (May 20, 2025)",[66,1752,1745],{},[42,1754,1755,1760],{},[66,1756,1757],{},[17,1758,1759],{},"3.35 (August 14, 2025) and later",[66,1761,1762],{},[17,1763,1764],{},"36",[14,1766,1767],{},"Release dates from Flutter's release archive.",[14,1769,1770],{},"What that means for a Flutter app:",[475,1772,1773,1796,1810,1823],{},[187,1774,1775,1785,1786,1788,1789,1792,1793,1795],{},[17,1776,1777,1778,1781,1782,498],{},"Check ",[236,1779,1780],{},"android\u002Fapp\u002Fbuild.gradle"," or ",[236,1783,1784],{},"build.gradle.kts"," If it uses ",[236,1787,1735],{},", Flutter 3.35 or later gives you 36. If it has a hard-coded number, change it to 36 yourself (",[236,1790,1791],{},"targetSdk = 36"," in a ",[236,1794,1784],{}," file).",[187,1797,1798,1801,1802,1805,1806,1809],{},[17,1799,1800],{},"Edge-to-edge."," My advice: Flutter draws its own UI, so the visible risk is content under the status or navigation bar. Check every screen with ",[236,1803,1804],{},"SafeArea"," or padding from ",[236,1807,1808],{},"MediaQuery",", including bottom sheets and screens with a bottom bar.",[187,1811,1812,1815,1816,1818,1819,1822],{},[17,1813,1814],{},"Back navigation."," If the app or a plugin overrides ",[236,1817,1663],{}," in Android code, that override won't be called on Android 16. My advice: use ",[236,1820,1821],{},"PopScope"," on the Flutter side for back handling, and check plugins that intercept back.",[187,1824,1825,1828,1829,1832],{},[17,1826,1827],{},"Tablets."," If the app locks orientation with ",[236,1830,1831],{},"SystemChrome.setPreferredOrientations"," or the manifest, test it on a tablet or a large emulator, because Google says that lock is ignored on screens 600dp or wider.",[14,1834,1835,1836,1840,1841,1845,1846,1849],{},"If an older app can't move to Flutter 3.35 because the Android build breaks first, the ",[83,1837,1839],{"href":1838},"\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F","v1 embedding fix"," and the ",[83,1842,1844],{"href":1843},"\u002Fblog\u002Fflutter-gradle-plugin-applied-imperatively-fix-2026\u002F","Gradle plugin fix"," cover the two errors Flutter 3.29 introduced. If the app sells in-app purchases, the ",[83,1847,1848],{"href":798},"Billing Library 8 deadline"," is due at the same time.",[31,1851,1853],{"id":1852},"what-to-do-now","What to do now",[14,1855,1856],{},"This section is my advice, not Google's.",[475,1858,1859,1869,1875,1881],{},[187,1860,1861,1864,1865,1868],{},[17,1862,1863],{},"Check the target your last release used."," Look at ",[236,1866,1867],{},"targetSdk"," in the build file for that release, or the app bundle details in Play Console.",[187,1870,1871,1874],{},[17,1872,1873],{},"Request the extension if the change won't ship in time,"," once the form appears in Play Console. As of October 18, 2026, the November 1 extension date is two weeks away.",[187,1876,1877,1880],{},[17,1878,1879],{},"Raise the target, then test on an Android 16 device or emulator."," Go through every screen for edge-to-edge, try the back gesture everywhere, and rotate on a tablet-sized emulator.",[187,1882,1883,1886],{},[17,1884,1885],{},"Ship to a closed testing track first."," Catch layout and back-gesture issues before your users do.",[14,1888,529,1889,498],{},[83,1890,533],{"href":532},[31,1892,537],{"id":536},[14,1894,1895,1896,545,1898,498],{},"If an app can't ship an update because of the target API requirement, or something broke after raising it, the ",[83,1897,544],{"href":543},[83,1899,549],{"href":548},{"title":452,"searchDepth":551,"depth":551,"links":1901},[1902,1903,1904,1905,1906],{"id":1531,"depth":551,"text":1532},{"id":1607,"depth":551,"text":1608},{"id":1700,"depth":551,"text":1701},{"id":1852,"depth":551,"text":1853},{"id":536,"depth":551,"text":537},"2026-10-18T23:45:00.000Z","Since August 31, 2026, Google Play requires new apps and updates to target Android 16 (API level 36), with an extension to November 1, 2026. What changes when you target API 36 (edge-to-edge, predictive back, large-screen orientation), which Flutter versions target it by default, and what to test, from Google's docs checked October 18, 2026.",[1910,1913,1916,1919,1922],{"question":1911,"answer":1912},"What is the Google Play target API level requirement for 2026?","Google says that starting August 31, 2026, new apps and app updates must target Android 16 (API level 36) or higher. Wear OS and Android Automotive OS apps must target API 35, and Android TV and Android XR apps API 34. Google says you'll be able to request an extension to November 1, 2026.",{"question":1914,"answer":1915},"What happens to my app if it targets an older API level?","Google says existing apps must target API 35 or higher to stay available to new users on devices running a newer Android version than the app targets. An app that targets API 34 or lower is only available on devices running that Android version or lower. New apps and updates must target API 36 to be submitted.",{"question":1917,"answer":1918},"How do I set targetSdkVersion 36 in a Flutter app?","If android\u002Fapp\u002Fbuild.gradle uses targetSdkVersion flutter.targetSdkVersion, upgrading to Flutter 3.35 or later sets it to 36, per Flutter's FlutterExtension source. Otherwise set targetSdkVersion 36 (or targetSdk = 36 in build.gradle.kts) yourself, and check that compileSdk is at least 36.",{"question":1920,"answer":1921},"Why did the back button stop working after targeting Android 16?","Google says that for apps targeting API 36 on Android 16 devices, onBackPressed is not called and KeyEvent.KEYCODE_BACK is not dispatched. Move to the supported back navigation APIs, or opt out temporarily with android:enableOnBackInvokedCallback=\"false\" in the manifest.",{"question":1923,"answer":1924},"Can I still lock my app to portrait on tablets?","Not by default. Google says that for apps targeting API 36, orientation, resizability and aspect ratio restrictions don't apply on displays at least 600dp wide, except for games and when users opt in. A temporary manifest opt-out exists, but Google says it won't apply once you target API 37.",{"readingTimeStats":1926},{"text":1927,"minutes":1928,"time":1929,"words":1930},"5 min read",4.265,255900,853,"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36","7 min",[1935,1936,1937],"play-billing-library-7-deprecated-update-to-8-2026","flutter-gradle-plugin-applied-imperatively-fix-2026","flutter-deleted-android-v1-embedding-build-failed-2026",{"title":1506,"description":1908},[1940,1942,1944,1947,1950,1953],{"title":1941,"url":1578},"Android Developers, Meet Google Play's target API level requirement (last updated October 16, 2026)",{"title":1943,"url":1614},"Android Developers, Behavior changes: apps targeting Android 16 or higher (last updated October 16, 2026)",{"title":1945,"url":1946},"Flutter on GitHub, FlutterExtension.kt at 3.35.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.35.0\u002Fpackages\u002Fflutter_tools\u002Fgradle\u002Fsrc\u002Fmain\u002Fkotlin\u002FFlutterExtension.kt",{"title":1948,"url":1949},"Flutter on GitHub, app build.gradle.kts template at 3.35.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.35.0\u002Fpackages\u002Fflutter_tools\u002Ftemplates\u002Fapp\u002Fandroid-kotlin.tmpl\u002Fapp\u002Fbuild.gradle.kts.tmpl",{"title":1951,"url":1952},"Flutter on GitHub, app build.gradle template at 3.10.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.10.0\u002Fpackages\u002Fflutter_tools\u002Ftemplates\u002Fapp_shared\u002Fandroid-kotlin.tmpl\u002Fapp\u002Fbuild.gradle.tmpl",{"title":1954,"url":1955},"Flutter release archive (macOS)","https:\u002F\u002Fstorage.googleapis.com\u002Fflutter_infra_release\u002Freleases\u002Freleases_macos.json","blog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36, google play target sdk 36, android 16 target api requirement, targetSdkVersion 36 flutter, play console target api level warning, edge to edge opt out android 16, predictive back android 16, onBackPressed not called android 16, flutter targetSdkVersion default",[1959,1960,1961,1962,1963],"Since August 31, 2026, Google Play requires new apps and app updates to target Android 16 (API level 36). Wear OS and Android Automotive OS apps need API 35, and Android TV and Android XR apps need API 34.","Google says you'll be able to request an extension to November 1, 2026, and that the extension forms will be in Play Console.","Existing apps must target API 35 or higher to stay available to new users on devices running a newer Android version than the app targets.","Targeting API 36 changes behavior on Android 16 devices: apps can no longer opt out of edge-to-edge, predictive back is on by default and onBackPressed is no longer called, and orientation and resizability limits are ignored on screens at least 600dp wide.","Flutter 3.35 and later set flutter.targetSdkVersion to 36. Flutter 3.29 and 3.32 set it to 35, so an app on those versions has to upgrade Flutter or set 36 itself.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","iPwwnSRCcTQc6dpLjDfb2d5TZgBzVAXtncPECMXrVgI",{"id":1967,"title":1968,"author":1969,"body":1971,"category":565,"createdAt":2333,"description":2334,"disclosure":568,"extension":569,"faq":2335,"howTo":568,"lastVerified":568,"location":586,"meta":2351,"navigation":593,"ogImage":568,"path":2357,"primaryKeyword":2358,"readingTime":1933,"related":2359,"seo":2361,"sources":2362,"stem":2388,"tags":2389,"takeaways":2390,"updatedAt":2333,"url":2396,"__hash__":2397},"blog\u002Fblog\u002Fandroid-developer-verification-requirement-2026.md","Android Developer Verification: Dates and What to Do",{"name":7,"social":1970},{"twitter":9},{"type":11,"value":1972,"toc":2319},[1973,1979,1982,1986,1990,1993,1996,2000,2003,2086,2089,2093,2096,2107,2111,2160,2164,2167,2170,2173,2176,2180,2183,2200,2203,2206,2210,2213,2217,2220,2234,2238,2241,2258,2261,2265,2268,2283,2286,2299,2303,2306,2310,2312],[14,1974,1975,1978],{},[17,1976,1977],{},"Android developer verification means apps installed from participating stores on certified Android devices must be registered to a developer who has verified their identity, and Google's pages say the first protections began on September 30, 2026 in Brazil, Indonesia, Singapore and Thailand."," Google plans to expand verification globally to all apps on certified devices in 2027. If you publish on Google Play, most of the work is already done for you. If you distribute outside Play, you register in the Android Developer Console.",[14,1980,1981],{},"The facts below come from Google's developer verification pages and two Android Developers Blog posts, as shown in the sources. I checked each one on October 18, 2026.",[14,1983,1984,1528],{},[17,1985,28],{},[31,1987,1989],{"id":1988},"what-the-requirement-is","What the requirement is",[14,1991,1992],{},"Google's August 25, 2025 announcement says Android will require apps to be registered by verified developers. It says verification confirms who the developer is. It does not review app content or source code.",[14,1994,1995],{},"Google's overview page describes it as an extra security layer to deter bad actors. It applies to certified Android devices running Android 7 or higher, according to the FAQ.",[31,1997,1999],{"id":1998},"dates-then-and-now","Dates, then and now",[14,2001,2002],{},"Google's plan changed between the first announcement and the current pages. The newer pages win.",[36,2004,2005,2015],{},[39,2006,2007],{},[42,2008,2009,2011,2013],{},[45,2010,687],{},[45,2012,1628],{},[45,2014,59],{},[61,2016,2017,2032,2045,2059,2073],{},[42,2018,2019,2022,2025],{},[66,2020,2021],{},"August 25, 2025",[66,2023,2024],{},"Early access in October 2025, open to all developers in March 2026, requirements in Brazil, Indonesia, Singapore and Thailand in September 2026, global in 2027 and beyond",[66,2026,2027],{},[83,2028,2031],{"href":2029,"rel":2030},"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2025\u002F08\u002Felevating-android-security.html",[87],"Android Developers Blog",[42,2033,2034,2037,2040],{},[66,2035,2036],{},"April 21, 2026",[66,2038,2039],{},"Note on the blog post: early access is closed and verification is open to all developers",[66,2041,2042],{},[83,2043,2031],{"href":2029,"rel":2044},[87],[42,2046,2047,2050,2053],{},[66,2048,2049],{},"August 2026",[66,2051,2052],{},"Developer APIs, limited distribution accounts and the power user advanced flow launch",[66,2054,2055],{},[83,2056,2058],{"href":891,"rel":2057},[87],"Overview",[42,2060,2061,2065,2068],{},[66,2062,2063],{},[17,2064,878],{},[66,2066,2067],{},"Protections begin for users who install apps from participating stores in Brazil, Indonesia, Singapore and Thailand on certified devices running Android 7 or higher",[66,2069,2070],{},[83,2071,2058],{"href":891,"rel":2072},[87],[42,2074,2075,2078,2081],{},[66,2076,2077],{},"2027 and beyond",[66,2079,2080],{},"Verification capability expanded globally for all apps on certified Android devices",[66,2082,2083],{},[83,2084,2058],{"href":891,"rel":2085},[87],[14,2087,2088],{},"One change is worth noting. The 2025 post speaks of requirements for installing apps on certified devices. The FAQ now says the September 30 deadline applies only to the specific participating stores, and that sideloaded apps and other stores are not subject to the requirements yet. The FAQ also says that after the deadline, unregistered apps cannot be installed from participating stores in the selected regions.",[31,2090,2092],{"id":2091},"what-gets-registered","What gets registered",[14,2094,2095],{},"Google's guides list three steps for every developer:",[475,2097,2098,2101,2104],{},[187,2099,2100],{},"Sign up. Play developers are registered through their existing account. Everyone else creates an Android Developer Console account.",[187,2102,2103],{},"Verify your identity as an individual or an organization. Organizations must also provide a website, which is verified through Google Search Console. The FAQ adds that an organization needs a D-U-N-S number, and that getting one can take up to 28 days.",[187,2105,2106],{},"Register your package names. You prove ownership by providing an APK signed with your private key.",[31,2108,2110],{"id":2109},"which-path-you-take","Which path you take",[36,2112,2113,2125],{},[39,2114,2115],{},[42,2116,2117,2120,2123],{},[45,2118,2119],{},"Where you distribute",[45,2121,2122],{},"Where you register",[45,2124,1628],{},[61,2126,2127,2138,2149],{},[42,2128,2129,2132,2135],{},[66,2130,2131],{},"Only on Google Play",[66,2133,2134],{},"Your existing Play Console account",[66,2136,2137],{},"99% of apps on Play were registered automatically. Check your Play Console Home page",[42,2139,2140,2143,2146],{},[66,2141,2142],{},"On and off Google Play",[66,2144,2145],{},"Play Console can be the single place to manage all verification requirements, including for apps outside Play",[66,2147,2148],{},"Register package names for apps you ship outside Play too",[42,2150,2151,2154,2157],{},[66,2152,2153],{},"Only outside Google Play",[66,2155,2156],{},"A new Android Developer Console account",[66,2158,2159],{},"Complete identity verification, then register package names and keys",[31,2161,2163],{"id":2162},"if-you-publish-on-google-play","If you publish on Google Play",[14,2165,2166],{},"Google's Play Console guide says 99% of apps on Play were registered automatically using information you already provided. It still tells you to check your Play Console Home page. If you use Play App Signing, the FAQ says Google has the information it needs to identify your ownership, and eligible apps are part of the automatic registration.",[14,2168,2169],{},"New apps are registered when you create them in Play Console. If another developer already uses the package name, Play Console asks you to pick a different one.",[14,2171,2172],{},"The FAQ also says that if you distribute on Play, your apps across all form factors must be registered. Enforcement outside Play applies to mobile and tablet form factors in the selected regions.",[14,2174,2175],{},"My advice: open the Play Console Home page this week and confirm every app shows as registered. Also confirm that apps you ship outside Play, such as a direct APK download, are registered too.",[31,2177,2179],{"id":2178},"if-you-distribute-outside-google-play","If you distribute outside Google Play",[14,2181,2182],{},"The Android Developer Console guide gives these steps for registering a package name:",[475,2184,2185,2188,2191,2194,2197],{},[187,2186,2187],{},"Create an account with your Google Account and complete identity verification.",[187,2189,2190],{},"Open the Packages page and enter the package name.",[187,2192,2193],{},"Add the SHA-256 certificate fingerprint of your app's signing key. The status becomes In review.",[187,2195,2196],{},"For an existing package name, sign an APK with your private key and upload it. Google says the console gives you a snippet to add to the APK's asset folder.",[187,2198,2199],{},"When it is registered, you get an email and the status changes to Registered.",[14,2201,2202],{},"The FAQ says the console lets you add and verify multiple signing keys for one package. It also says that if you lose your signing key, you won't be able to register your packages. If a package name is already claimed, Google may tell you your key is not eligible to claim it, and you should consider a different package name.",[14,2204,2205],{},"My advice: find your release keystore backup before you start. Everything else depends on that key.",[31,2207,2209],{"id":2208},"fees","Fees",[14,2211,2212],{},"The FAQ says the $25 fee for the Full Distribution account in the Android Developer Console helps cover administrative costs, similar to Play's $25 registration fee. It says Google is waiving the fee for developers who qualify for a Limited Distribution account. The Play Console guide mentions no fee.",[31,2214,2216],{"id":2215},"students-and-hobbyists","Students and hobbyists",[14,2218,2219],{},"Google's limited distribution guide describes an account for students, hobbyists and learners who share apps with a small number of people.",[184,2221,2222,2225,2228,2231],{},[187,2223,2224],{},"You can share apps with up to 20 devices that users have explicitly authorized.",[187,2226,2227],{},"The account is free and needs no government ID.",[187,2229,2230],{},"You need a Google Account with 2-Step verification, a linked Google payments profile for your legal name and address, and a contact email that isn't shown publicly.",[187,2232,2233],{},"The FAQ says Google supports migrating a limited account to a full account, but not the other way around.",[31,2235,2237],{"id":2236},"what-changes-for-users-who-sideload","What changes for users who sideload",[14,2239,2240],{},"Google's March 19, 2026 post says it added an advanced flow after hearing from power users who want to install software from unverified developers. According to the FAQ, it is a one-time setup:",[475,2242,2243,2246,2249,2252,2255],{},[187,2244,2245],{},"Turn on developer mode.",[187,2247,2248],{},"Confirm you aren't being coached by someone pressuring you.",[187,2250,2251],{},"Restart the phone and sign in again.",[187,2253,2254],{},"Wait one day, then verify with biometrics or your device PIN.",[187,2256,2257],{},"Choose to allow installs for 7 days or indefinitely.",[14,2259,2260],{},"Unverified apps still show a warning, and the user taps Install Anyway. The FAQ also says developers are free to install apps without verification using ADB, and that unregistered apps can be installed or updated only with the advanced flow or ADB. If the advanced flow is off, updates to unregistered apps fail.",[31,2262,2264],{"id":2263},"what-it-means-for-a-flutter-app","What it means for a Flutter app",[14,2266,2267],{},"Nothing on Google's pages is specific to Flutter. Google registers an app by its package name and the key that signs it. In a Flutter project, that means two things to look up:",[184,2269,2270,2280],{},[187,2271,2272,2273,1708,2276,1781,2278,498],{},"The package name, set as the ",[236,2274,2275],{},"applicationId",[236,2277,1780],{},[236,2279,1784],{},[187,2281,2282],{},"The key that signs your release build, which is your upload key if you use Play App Signing, or your own app signing key if you ship a direct APK.",[14,2284,2285],{},"If you use Play App Signing, your Play-distributed apps are covered by the automatic registration described above. If you also ship a direct APK, make sure that APK is signed with a key you have registered. My advice: keep one package name per app across Play and your own downloads, so there is one record to check.",[14,2287,2288,2289,2292,2293,1840,2296,498],{},"This is a separate track from the Play Store policy changes. If you are also working through those, see the ",[83,2290,2291],{"href":513},"target API 36 guide",", the ",[83,2294,2295],{"href":1093},"16 KB page size guide",[83,2297,2298],{"href":798},"Play Billing Library guide",[31,2300,2302],{"id":2301},"developer-apis","Developer APIs",[14,2304,2305],{},"The FAQ describes two APIs. The Status API checks package name eligibility and registration status. The Console API registers package names and manages keys programmatically, and Google says both are designed for bulk registration or CI\u002FCD pipelines. The FAQ also says you can check status in Play Console, the Android Developer Console and Android Studio Panda 4 and higher.",[14,2307,529,2308,498],{},[83,2309,533],{"href":532},[31,2311,537],{"id":536},[14,2313,2314,2315,545,2317,498],{},"If you're not sure what your Android app needs to register, or an install starts failing on verified devices, the ",[83,2316,544],{"href":543},[83,2318,549],{"href":548},{"title":452,"searchDepth":551,"depth":551,"links":2320},[2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332],{"id":1988,"depth":551,"text":1989},{"id":1998,"depth":551,"text":1999},{"id":2091,"depth":551,"text":2092},{"id":2109,"depth":551,"text":2110},{"id":2162,"depth":551,"text":2163},{"id":2178,"depth":551,"text":2179},{"id":2208,"depth":551,"text":2209},{"id":2215,"depth":551,"text":2216},{"id":2236,"depth":551,"text":2237},{"id":2263,"depth":551,"text":2264},{"id":2301,"depth":551,"text":2302},{"id":536,"depth":551,"text":537},"2026-10-18T20:30:00.000Z","Android developer verification means apps on certified Android devices must come from registered developers. The dates, the first four countries, what Play Console and non-Play developers do, and what it means for Flutter apps, from Google's pages checked October 18, 2026.",[2336,2339,2342,2345,2348],{"question":2337,"answer":2338},"What is Android developer verification?","It is a Google requirement that apps installed from participating stores on certified Android devices come from registered developers, with global expansion planned for 2027. Google's August 25, 2025 announcement says it confirms who the developer is and does not review app content. Developers verify their identity and register their package names and signing keys.",{"question":2340,"answer":2341},"Does it apply to apps I distribute outside Google Play?","Yes, eventually. Google's overview page says verification capability will expand globally for all apps on certified Android devices in 2027. For now, the FAQ says the September 30, 2026 deadline applies only to specific participating stores in select regions, and that sideloaded apps and other stores are not subject to it yet.",{"question":2343,"answer":2344},"How much does it cost?","The FAQ says the Full Distribution account in the Android Developer Console costs $25. It says Google is waiving the fee for developers who qualify for a Limited Distribution account. Google Play developers use their existing Play Console account, and the Play Console guide mentions no fee for registration.",{"question":2346,"answer":2347},"Do I need to do anything special for a Flutter app?","No Flutter-specific step appears on Google's pages. Registration is by package name and signing key. In a Flutter project the package name is the applicationId in the Android Gradle config, and the key is the one that signs your release build. If you use Play App Signing, Google says it already has the information to identify your ownership.",{"question":2349,"answer":2350},"What can students and hobbyists do?","They can create a Limited Distribution account. Google's guide says it is free, needs no government ID, and lets you share apps with up to 20 devices that users have explicitly authorized. You still need a Google Account with 2-Step verification and a linked Google payments profile.",{"readingTimeStats":2352},{"text":2353,"minutes":2354,"time":2355,"words":2356},"8 min read",7.23,433800,1446,"\u002Fblog\u002Fandroid-developer-verification-requirement-2026","android developer verification",[599,2360,1935],"google-play-16kb-page-size-flutter-android-2026",{"title":1968,"description":2334},[2363,2366,2368,2371,2374,2377,2380,2383,2385],{"title":2364,"url":2365},"Flutter docs, Build and release an Android app","https:\u002F\u002Fdocs.flutter.dev\u002Fdeployment\u002Fandroid",{"title":2367,"url":891},"Android Developers, Android developer verification (overview)",{"title":2369,"url":2370},"Android Developers, Developer verification guides (steps and dates, page last updated 2026-08-18)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides",{"title":2372,"url":2373},"Android Developers, Developer verification FAQ (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Ffaq",{"title":2375,"url":2376},"Android Developers, Verify with Google Play Console (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Fgoogle-play-console",{"title":2378,"url":2379},"Android Developers, Register on Android Developer Console (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Fandroid-developer-console",{"title":2381,"url":2382},"Android Developers, Limited distribution accounts (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Flimited-distribution",{"title":2384,"url":2029},"Android Developers Blog, Elevating Android security (August 25, 2025)",{"title":2386,"url":2387},"Android Developers Blog, Android developer verification (March 19, 2026)","https:\u002F\u002Fandroid-developers.googleblog.com\u002F2026\u002F03\u002Fandroid-developer-verification.html","blog\u002Fandroid-developer-verification-requirement-2026","android developer verification, android developer verification requirement, android developer console, android sideloading verification, register android package name, android developer verification flutter, limited distribution account android, android advanced flow sideload, play console package name registration",[2391,2392,2393,2394,2395],"Android developer verification means apps installed from participating stores on certified Android devices must be registered to a verified developer. Google's pages say protections began on September 30, 2026 in Brazil, Indonesia, Singapore and Thailand, with a global expansion planned for 2027.","If you publish on Google Play, you use your existing Play Console account. Google says 99% of apps on Play were registered automatically, and Play developers should check the Play Console Home page for their status.","If you distribute only outside Google Play, you create an Android Developer Console account. The FAQ says the Full Distribution account costs $25, and Limited Distribution accounts for students and hobbyists are free and need no government ID.","What gets registered is your identity, your package names and the signing keys behind them. Nothing about this is Flutter-specific. A Flutter app is registered by its package name and signing key like any other Android app.","Google's pages say sideloaded apps and other stores are not subject to the September 30 deadline yet. Unregistered apps can still be installed with ADB or through the advanced flow.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F","rBz0ZF-oZSg0UTroe3QwUHdchi89u9TDvjF1OAdnS8U",[2399,2401,2405,2407,2409,2412],{"keyword":5,"url":651,"title":5,"relevance":2400},80,{"keyword":2402,"url":2403,"title":2402,"relevance":2404},"Google Play 16 KB Page Size: Fixing Flutter and Android Apps","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F",12,{"keyword":1968,"url":2396,"title":1968,"relevance":2406},10,{"keyword":1506,"url":1964,"title":1506,"relevance":2408},9,{"keyword":2410,"url":2411,"title":2410,"relevance":2408},"Flutter \"Deleted Android v1 Embedding\" Build Error: The Fix","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F",{"keyword":2413,"url":2414,"title":2413,"relevance":2408},"Google Sign-In for Android Is Deprecated: Moving to Credential Manager","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026\u002F",1792391278336]