[{"data":1,"prerenderedAt":2067},["ShallowReactive",2],{"\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives\u002F":3,"\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives\u002F-related":511,"\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives\u002F-resources":2048},{"id":4,"title":5,"author":6,"body":10,"category":430,"createdAt":431,"description":432,"disclosure":433,"extension":434,"faq":435,"howTo":433,"lastVerified":433,"location":454,"meta":455,"navigation":461,"ogImage":433,"path":462,"primaryKeyword":463,"readingTime":464,"related":465,"seo":469,"sources":470,"stem":501,"tags":502,"takeaways":503,"updatedAt":431,"url":509,"__hash__":510},"blog\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives.md","Google Awareness API Deprecated: Alternatives for 2027",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":419},"minimark",[13,21,24,30,35,38,51,54,57,60,64,67,231,235,261,291,303,307,310,318,322,325,329,392,395,403,407],[14,15,16,20],"p",{},[17,18,19],"strong",{},"Google's Awareness API overview says Google Play services will stop supporting the API \"in a future release, as early as January 2027,\" and that \"There is no direct replacement.\""," That is not a fixed date. The Fence and Snapshot APIs cover time, location, activity, headphones and beacons, plus place and weather snapshots that were already deprecated. In my mapping, location fences, location snapshots and walking, running, cycling, still and in-vehicle activity each have a candidate alternative documented on Android's own pages. Time, headphones, beacons, places and weather do not on the pages I fetched.",[14,22,23],{},"I checked Google's pages on October 19, 2026. The Awareness overview page showed a last-updated date of 2026-10-16 UTC. Google can change the wording, so open the linked pages before you plan around them.",[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},"what-google-actually-says","What Google actually says",[14,36,37],{},"The overview page carries three lines that matter:",[39,40,41,45,48],"ul",{},[42,43,44],"li",{},"\"Deprecation notice: Awareness API is deprecated.\"",[42,46,47],{},"\"Google Play services will stop supporting the Awareness API in a future release, as early as January 2027.\"",[42,49,50],{},"\"There is no direct replacement.\"",[14,52,53],{},"\"As early as\" sets the earliest point, not the end date. I found no page that gives a later or final date. Plan to be off it by January 2027, because that is the earliest it can stop.",[14,55,56],{},"The page names five context types: Time, Location, Activity, Beacons and Headphones. It describes fences as conditions that react to combined signals, such as a user walking with headphones plugged in, and says callbacks arrive through a PendingIntent. Snapshots return the current state, such as location or headphone status.",[14,58,59],{},"The permissions page lists what each signal asks for today: ACCESS_FINE_LOCATION for Location and Beacon, an activity recognition permission for Activity, and none for Headphone and Time.",[31,61,63],{"id":62},"where-each-awareness-signal-can-go","Where each Awareness signal can go",[14,65,66],{},"This table uses only alternatives that Android's own pages describe. The mapping is my reading. Google does not say any of these is equivalent to an Awareness signal.",[68,69,70,89],"table",{},[71,72,73],"thead",{},[74,75,76,80,83,86],"tr",{},[77,78,79],"th",{},"Awareness signal",[77,81,82],{},"Documented alternative",[77,84,85],{},"What I could confirm",[77,87,88],{},"What to check",[90,91,92,117,146,164,178,192,206,219],"tbody",{},[74,93,94,98,107,114],{},[95,96,97],"td",{},"LocationFence (enter, exit an area)",[95,99,100],{},[101,102,106],"a",{"href":103,"rel":104},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fsensors-and-location\u002Flocation\u002Fgeofencing",[105],"nofollow","Geofencing API",[95,108,109,113],{},[110,111,112],"code",{},"GeofencingClient",", enter, exit and dwell transitions, 100 geofences per app per device user",[95,115,116],{},"Latency, re-registration and permissions below",[74,118,119,126,133,143],{},[95,120,121,122,125],{},"Location snapshot (",[110,123,124],{},"getLocation()",")",[95,127,128],{},[101,129,132],{"href":130,"rel":131},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fsensors-and-location\u002Flocation\u002Fretrieve-current",[105],"Fused Location Provider",[95,134,135,138,139,142],{},[110,136,137],{},"getLastLocation()"," can be out of date or null. ",[110,140,141],{},"getCurrentLocation()"," is the page's recommended way to get a fresh location",[95,144,145],{},"Precision follows the permission in your manifest",[74,147,148,151,158,161],{},[95,149,150],{},"DetectedActivityFence and detected activity snapshot",[95,152,153],{},[101,154,157],{"href":155,"rel":156},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fsensors-and-location\u002Flocation\u002Ftransitions",[105],"Activity Recognition Transition API",[95,159,160],{},"Supports IN_VEHICLE, ON_BICYCLE, RUNNING, STILL and WALKING, with enter and exit transitions",[95,162,163],{},"It sends transition events. I did not see a current-state snapshot call, so a snapshot use needs a different design",[74,165,166,169,172,175],{},[95,167,168],{},"TimeFence",[95,170,171],{},"No documented alternative on the pages I fetched",[95,173,174],{},"The permissions page lists no permission for it",[95,176,177],{},"You will have to rebuild the schedule logic with a scheduler you choose",[74,179,180,183,186,189],{},[95,181,182],{},"HeadphoneFence and headphone state",[95,184,185],{},"No documented alternative confirmed",[95,187,188],{},"None named on the pages I fetched",[95,190,191],{},"Test on real devices",[74,193,194,197,200,203],{},[95,195,196],{},"BeaconFence and beacon state",[95,198,199],{},"No documented alternative",[95,201,202],{},"The snapshot page ties beacons to the Nearby Messages API",[95,204,205],{},"Treat beacon features as a rebuild",[74,207,208,211,213,216],{},[95,209,210],{},"Place snapshot",[95,212,199],{},[95,214,215],{},"The Snapshot page says \"The Places and Weather contextual signals have been deprecated and are no longer available for new implementations.\"",[95,217,218],{},"Decide whether you still need it",[74,220,221,224,226,229],{},[95,222,223],{},"Weather snapshot",[95,225,199],{},[95,227,228],{},"Same deprecation note as Places",[95,230,218],{},[31,232,234],{"id":233},"what-the-replacements-actually-do","What the replacements actually do",[14,236,237,240,241,244,245,248,249,252,253,256,257,260],{},[17,238,239],{},"Geofencing."," Android's guide says you create the client with ",[110,242,243],{},"LocationServices.getGeofencingClient(this)"," and add geofences with ",[110,246,247],{},"addGeofences()",". It requires ",[110,250,251],{},"ACCESS_FINE_LOCATION",", and ",[110,254,255],{},"ACCESS_BACKGROUND_LOCATION"," if your app targets Android 10 (API level 29) or higher. Expect latency: the page says it is usually under 2 minutes, about 2 to 3 minutes under background location limits, and up to 6 minutes if the device has been stationary for a long time. It also says the app must re-register geofences after a device reboot, reinstall, app data clear, Play services data clear, or a ",[110,258,259],{},"GEOFENCE_NOT_AVAILABLE"," alert. It recommends a minimum radius of 100 to 150 meters. If your Awareness location fences used small areas or needed fast reaction, test this before you promise the same behavior.",[14,262,263,266,267,270,271,274,275,278,279,282,283,286,287,290],{},[17,264,265],{},"Activity Recognition Transition API."," You pass an ",[110,268,269],{},"ActivityTransitionRequest"," and a ",[110,272,273],{},"PendingIntent"," to ",[110,276,277],{},"requestActivityTransitionUpdates()",". It needs the ",[110,280,281],{},"com.google.android.gms.permission.ACTIVITY_RECOGNITION"," permission and ",[110,284,285],{},"play-services-location"," 12.0.0 or higher. Events arrive in a ",[110,288,289],{},"BroadcastReceiver",". Check the current Android permission rules for activity recognition on your target API level.",[14,292,293,296,297,299,300,302],{},[17,294,295],{},"Fused Location Provider."," The page says ",[110,298,137],{}," is quick but \"might be out of date,\" and calls ",[110,301,141],{}," \"the recommended way to get a fresh location, whenever possible.\"",[31,304,306],{"id":305},"the-google-play-interaction","The Google Play interaction",[14,308,309],{},"Moving location fences to geofencing leads straight into Play policy. Google's preview article says: \"We're removing geofencing as an approved foreground services use case,\" and \"Developers can instead use the Geofence API for this use case.\" The date is January 27, 2027. So the Geofence API is the supported route, and a location foreground service built only to watch geofences is the thing to avoid.",[14,311,312,313,317],{},"Both geofencing permissions, fine location and background location, are also sensitive, so they fall under Play's location rules. I cover the dates, the location button and the declarations in ",[101,314,316],{"href":315},"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027\u002F","my guide to Google Play's contacts and location permission changes"," and do not repeat them here.",[31,319,321],{"id":320},"the-flutter-angle","The Flutter angle",[14,323,324],{},"I did not find an official Flutter plugin for the Awareness API. I did not find an official Flutter plugin for the Awareness API; a pub.dev search for \"awareness api\" showed nothing from Google or the Flutter team on its first page, which is not proof, so confirm it yourself. If your app uses a third-party Awareness plugin, it may stop working when Play services drops the API, and the plugin author may not ship a fix. Check the plugin's repository and decide whether to replace it with direct Android code.",[31,326,328],{"id":327},"migration-steps","Migration steps",[330,331,332,353,359,365,371,380,386],"ol",{},[42,333,334,337,338,341,342,341,345,348,349,352],{},[17,335,336],{},"Find every Awareness call."," Search your Android code and your Flutter plugins for ",[110,339,340],{},"awareness",", ",[110,343,344],{},"FenceClient",[110,346,347],{},"SnapshotClient"," and ",[110,350,351],{},"AwarenessFence",". A plugin may use it without your code showing it.",[42,354,355,358],{},[17,356,357],{},"List the signals in use."," Write down which of time, location, activity, headphone and beacon each feature depends on, and whether it uses a fence, a snapshot or both.",[42,360,361,364],{},[17,362,363],{},"Map each signal."," Use the table above. Mark the ones with no documented alternative and decide for each: rebuild, simplify, or drop the feature.",[42,366,367,370],{},[17,368,369],{},"Replace location first."," It has the most documented path, and it is the part that touches Play policy. Move fences to geofencing and snapshots to the Fused Location Provider.",[42,372,373,376,377,379],{},[17,374,375],{},"Check the permissions you now need."," ",[110,378,255],{}," falls under Play's location rules. Keep only the permissions the feature needs, and be ready to explain them in Play Console.",[42,381,382,385],{},[17,383,384],{},"Test on real devices."," Geofence latency and activity events behave differently from Awareness fences. Test with a clean install and a release build, on a device that has been sitting still.",[42,387,388,391],{},[17,389,390],{},"Ship before January 2027."," Because the date is \"as early as,\" do not leave the cutover to the last week.",[14,393,394],{},"My advice: do not wait for Google to name an exact end date. Replace the location and activity pieces now, and decide early which of the signals with no documented alternative you will keep.",[14,396,397,398,402],{},"For every other dated Apple, Google Play and Firebase requirement in 2026 and 2027, see ",[101,399,401],{"href":400},"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","App Store and Google Play deadlines for 2026 and 2027",".",[31,404,406],{"id":405},"need-a-hand","Need a hand?",[14,408,409,410,414,415,402],{},"If your Flutter app relies on the Awareness API and you want it sorted before Google Play services drops it, the ",[101,411,413],{"href":412},"\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 ",[101,416,418],{"href":417},"\u002Fcontact\u002F","send me a short description",{"title":420,"searchDepth":421,"depth":421,"links":422},"",2,[423,424,425,426,427,428,429],{"id":33,"depth":421,"text":34},{"id":62,"depth":421,"text":63},{"id":233,"depth":421,"text":234},{"id":305,"depth":421,"text":306},{"id":320,"depth":421,"text":321},{"id":327,"depth":421,"text":328},{"id":405,"depth":421,"text":406},"AI & Technology","2026-10-19T21:00:00.000Z","Google says Play services will stop supporting the Awareness API as early as January 2027, with no direct replacement. Which Fence and Snapshot types have a documented alternative and which do not, checked October 19, 2026.",null,"md",[436,439,442,445,448,451],{"question":437,"answer":438},"When does the Awareness API stop working?","Google does not give a date. Its overview page says Google Play services will stop supporting the Awareness API \"in a future release, as early as January 2027.\" Treat January 2027 as the earliest date to plan around, not a guarantee that it works until then.",{"question":440,"answer":441},"Is there a direct replacement for the Awareness API?","No. The overview page says \"There is no direct replacement.\" You replace each signal with a separate API, and for time, headphones and beacons I could not find an alternative that Google documents.",{"question":443,"answer":444},"What replaces a LocationFence?","The closest documented option is the Geofencing API, created through GeofencingClient. Android's guide says it needs ACCESS_FINE_LOCATION, plus ACCESS_BACKGROUND_LOCATION if you target Android 10 (API level 29) or higher, and allows up to 100 geofences per app per device user. This is my mapping. Google does not say the two are equivalent.",{"question":446,"answer":447},"Can I still use the Places and Weather signals?","The Snapshot page says they \"have been deprecated and are no longer available for new implementations.\" I found no replacement for either on the pages I fetched.",{"question":449,"answer":450},"Is there an official Flutter plugin for the Awareness API?","I did not find one. A pub.dev search for \"awareness api\" showed nothing from Google or the Flutter team on its first page, which is not proof, so confirm it yourself before relying on that.",{"question":452,"answer":453},"Does moving to geofencing run into the Google Play foreground service change?","It can. Google Play is removing geofencing as an approved foreground services use case effective January 27, 2027, and says developers can use the Geofence API instead. That means the Geofence API is the supported route, and a foreground service built only to watch geofences is the part going away.","Boynton Beach, FL",{"readingTimeStats":456},{"text":457,"minutes":458,"time":459,"words":460},"7 min read",6.135,368100,1227,true,"\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives","google awareness api deprecated","8 min",[466,467,468],"google-play-contacts-permissions-policy-2027","google-fit-api-deprecated-health-connect-2026","google-play-target-api-36-android-16-requirement-2026",{"title":5,"description":432},[471,474,477,480,483,486,489,491,493,495,498],{"title":472,"url":473},"Google for Developers, Awareness API overview","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Foverview",{"title":475,"url":476},"Google for Developers, Awareness API required permissions","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Fandroid-api\u002Frequired-permissions",{"title":478,"url":479},"Google for Developers, Awareness Fence API overview","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Fandroid-api\u002Ffence-api-overview",{"title":481,"url":482},"Google for Developers, Create a fence","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Fandroid-api\u002Ffence-create",{"title":484,"url":485},"Google for Developers, Register a fence","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Fandroid-api\u002Ffence-register",{"title":487,"url":488},"Google for Developers, Get snapshot data","https:\u002F\u002Fdevelopers.google.com\u002Fawareness\u002Fandroid-api\u002Fsnapshot-get-data",{"title":490,"url":103},"Android Developers, Create and monitor geofences",{"title":492,"url":155},"Android Developers, Activity Recognition Transition API",{"title":494,"url":130},"Android Developers, Get the last known location (Fused Location Provider)",{"title":496,"url":497},"Play Console Help, Preview: foreground service and full-screen intent requirements","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16965181",{"title":499,"url":500},"pub.dev, search for awareness api","https:\u002F\u002Fpub.dev\u002Fpackages?q=awareness+api","blog\u002Fgoogle-awareness-api-deprecated-2027-alternatives","google awareness api deprecated, awareness api alternatives, android fence api replacement, android snapshot api replacement, geofencing api android, activity recognition transition api, fused location provider, awareness api flutter, google play services awareness 2027",[504,505,506,507,508],"Google's Awareness API overview says: \"Google Play services will stop supporting the Awareness API in a future release, as early as January 2027.\" That is not a fixed date. It is the earliest Google names, and the page gives no latest date.","The same page says \"There is no direct replacement.\" Each signal has to be rebuilt on a separate Android API, and for some signals I found no documented alternative.","Android documents three candidate alternatives (my mapping, Google does not call them equivalents): location fences to the Geofencing API, location snapshots to the Fused Location Provider, and walking, running, cycling, still and in-vehicle activity to the Activity Recognition Transition API.","Time, headphone, beacon, places and weather have no alternative named on the Google pages I fetched. Places and weather were already deprecated for new implementations.","If you move location fences to geofencing, read my guide on the Google Play rule that removes geofencing as a foreground service use case on January 27, 2027. The Geofence API itself is the path Google points to.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-awareness-api-deprecated-2027-alternatives\u002F","zBE1iNLlfYO8A8HFKykYnojcbQhr2zqGQDxU2Gl7oi0",[512,1111,1583],{"id":513,"title":514,"author":515,"body":517,"category":430,"createdAt":1032,"description":1033,"disclosure":433,"extension":434,"faq":1034,"howTo":433,"lastVerified":433,"location":454,"meta":1050,"navigation":461,"ogImage":433,"path":1056,"primaryKeyword":1057,"readingTime":1058,"related":1059,"seo":1062,"sources":1063,"stem":1101,"tags":1102,"takeaways":1103,"updatedAt":1032,"url":1109,"__hash__":1110},"blog\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027.md","Google Play Contacts and Location Permission Changes 2027",{"name":7,"social":516},{"twitter":9},{"type":11,"value":518,"toc":1018},[519,525,528,532,536,655,658,662,665,668,671,674,690,693,696,700,706,712,718,728,732,741,746,752,755,759,764,769,775,779,784,789,807,809,816,894,897,902,917,924,933,944,947,950,954,1005,1009,1011],[14,520,521,524],{},[17,522,523],{},"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,526,527],{},"I checked each one on October 19, 2026. Google can change a date, so open the linked page before you plan around it.",[14,529,530,29],{},[17,531,28],{},[31,533,535],{"id":534},"the-dated-table","The dated table",[68,537,538,557],{},[71,539,540],{},[74,541,542,545,548,551,554],{},[77,543,544],{},"Change",[77,546,547],{},"Announced",[77,549,550],{},"Declaration",[77,552,553],{},"Compliance date",[77,555,556],{},"Source",[90,558,559,587,610,634],{},[74,560,561,564,567,570,575],{},[95,562,563],{},"Contacts Permissions policy",[95,565,566],{},"April 15, 2026",[95,568,569],{},"Play Console prompts start September 2026",[95,571,572],{},[17,573,574],{},"January 27, 2027",[95,576,577,341,582],{},[101,578,581],{"href":579,"rel":580},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Ftable\u002F12921780",[105],"Deadlines table",[101,583,586],{"href":584,"rel":585},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16935362",[105],"Help Center",[74,588,589,592,594,597,601],{},[95,590,591],{},"Location button (precise location)",[95,593,566],{},[95,595,596],{},"Precise-location declaration available November 2026",[95,598,599],{},[17,600,574],{},[95,602,603,341,606],{},[101,604,581],{"href":579,"rel":605},[105],[101,607,586],{"href":608,"rel":609},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F17033915",[105],[74,611,612,615,618,621,625],{},[95,613,614],{},"READ_CALL_LOG for phone verification",[95,616,617],{},"July 15, 2026 (per the table)",[95,619,620],{},"None listed",[95,622,623],{},[17,624,574],{},[95,626,627,341,630],{},[101,628,581],{"href":579,"rel":629},[105],[101,631,586],{"href":632,"rel":633},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F10208820",[105],[74,635,636,639,641,643,647],{},[95,637,638],{},"Geofencing as a foreground service use case",[95,640,566],{},[95,642,620],{},[95,644,645],{},[17,646,574],{},[95,648,649,341,652],{},[101,650,581],{"href":579,"rel":651},[105],[101,653,586],{"href":497,"rel":654},[105],[14,656,657],{},"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,659,661],{"id":660},"the-date-conflict","The date conflict",[14,663,664],{},"Two Google sources give two different dates, and I want to show both.",[14,666,667],{},"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,669,670],{},"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,672,673],{},"What I could verify for each reading:",[39,675,676,681,687],{},[42,677,678,680],{},[17,679,574],{}," appears on the deadlines table and in four Help Center articles as the effective or mandatory date.",[42,682,683,686],{},[17,684,685],{},"October 28, 2026"," appears on the newsletter page. It does not appear in the Help Center articles I read.",[42,688,689],{},"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,691,692],{},"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,694,695],{},"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,697,699],{"id":698},"_1-contacts-permissions-policy","1. Contacts Permissions policy",[14,701,702,705],{},[17,703,704],{},"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,707,708,711],{},[17,709,710],{},"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,713,714,717],{},[17,715,716],{},"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,719,720,723,724,727],{},[17,721,722],{},"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 ",[110,725,726],{},"Intent.ACTION_PICK_CONTACTS"," intent. If your app supports older Android versions, you need to decide what those users get.",[31,729,731],{"id":730},"_2-the-location-button","2. The location button",[14,733,734,736,737,740],{},[17,735,704],{}," 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 ",[110,738,739],{},"onlyForLocationButton"," flag.",[14,742,743,745],{},[17,744,710],{}," 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,747,748,751],{},[17,749,750],{},"Dates."," Announced April 15, 2026. The precise-location declaration becomes available in November 2026. Compliance is mandatory January 27, 2027.",[14,753,754],{},"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,756,758],{"id":757},"_3-read_call_log-and-phone-verification","3. READ_CALL_LOG and phone verification",[14,760,761,763],{},[17,762,704],{}," 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,765,766,768],{},[17,767,710],{}," Apps that read the call log to confirm a user's phone number, for example by matching an incoming verification call.",[14,770,771,774],{},[17,772,773],{},"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,776,778],{"id":777},"_4-geofencing-as-a-foreground-service","4. Geofencing as a foreground service",[14,780,781,783],{},[17,782,704],{}," 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,785,786,788],{},[17,787,710],{}," 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,790,791,794,795,252,797,799,800,802,803,806],{},[17,792,793],{},"What the Geofence API needs."," Android's geofencing guide says your app must request ",[110,796,251],{},[110,798,255],{}," if it targets Android 10 (API level 29) or higher. You create a ",[110,801,112],{}," through ",[110,804,805],{},"LocationServices",". Note that the geofencing guide's permissions are themselves sensitive and fall under Play's location rules above.",[31,808,321],{"id":320},[14,810,811,812,815],{},"Flutter apps get these permissions from three places: your own ",[110,813,814],{},"AndroidManifest.xml",", plugin manifests, and the Play policy checks on the final build. Here is what I could verify on pub.dev.",[39,817,818,836,864,875],{},[42,819,820,823,824,827,828,831,832,835],{},[17,821,822],{},"permission_handler"," (13.0.2 when I read it) has ",[110,825,826],{},"Permission.contacts"," and a rationale check, ",[110,829,830],{},"Permission.contacts.shouldShowRequestRationale",", on Android. Its page also says that on Android 10 and later you request foreground location first, then call ",[110,833,834],{},"Permission.locationAlways.request()",". The page does not mention Android 17, the Contact Picker or the location button.",[42,837,838,841,842,348,845,848,849,852,853,856,857,859,860,863],{},[17,839,840],{},"flutter_contacts"," (2.6.0) tells you to add ",[110,843,844],{},"READ_CONTACTS",[110,846,847],{},"WRITE_CONTACTS"," to your manifest. Its ",[110,850,851],{},"FlutterContacts.native.showPicker()"," needs no contacts permission on either platform. The page says calling it with ",[110,854,855],{},"properties"," on Android requires ",[110,858,844],{},". The page does not mention Android 17, so I can't say whether ",[110,861,862],{},"showPicker()"," uses the new system picker on API 37.",[42,865,866,869,870,348,872,874],{},[17,867,868],{},"contacts_service"," (0.6.3) is listed as published 5 years ago. Its README says to add ",[110,871,844],{},[110,873,847],{}," and that it does not handle permission requests itself. I did not see a discontinued note on the page.",[42,876,877,880,881,252,884,886,887,889,890,893],{},[17,878,879],{},"geolocator"," (14.1.1) tells you to add ",[110,882,883],{},"ACCESS_COARSE_LOCATION",[110,885,251],{}," only if you need precise location. For ",[110,888,255],{}," it says apps targeting Android 10 and later need it for updates in the background. It states that ",[110,891,892],{},"FOREGROUND_SERVICE_LOCATION"," is required from Android 14 for a location foreground service and that the plugin's manifest declares it.",[14,895,896],{},"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.",[898,899,901],"h3",{"id":900},"removing-a-permission-from-the-merged-manifest","Removing a permission from the merged manifest",[14,903,904,905,908,909,912,913,916],{},"Android's manifest documentation describes the ",[110,906,907],{},"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 ",[110,910,911],{},"xmlns:tools=\"http:\u002F\u002Fschemas.android.com\u002Ftools\""," on the ",[110,914,915],{},"\u003Cmanifest>"," element.",[14,918,919,920,923],{},"For a permission, the pattern in ",[110,921,922],{},"android\u002Fapp\u002Fsrc\u002Fmain\u002FAndroidManifest.xml"," looks like this:",[925,926,931],"pre",{"className":927,"code":929,"language":930},[928],"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",[110,932,929],{"__ignoreMap":420},[14,934,935,936,939,940,943],{},"The Android page's own example removes a ",[110,937,938],{},"meta-data"," element, not a ",[110,941,942],{},"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,945,946],{},"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,948,949],{},"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,951,953],{"id":952},"a-short-plan","A short plan",[330,955,956,962,977,983,993,999],{},[42,957,958,961],{},[17,959,960],{},"Check Play Console."," Look for prompts about READ_CONTACTS and precise location on each app, and note the dates they show.",[42,963,964,967,968,341,970,341,972,348,975,402],{},[17,965,966],{},"Find the permissions."," Read the merged manifest for ",[110,969,844],{},[110,971,251],{},[110,973,974],{},"READ_CALL_LOG",[110,976,892],{},[42,978,979,982],{},[17,980,981],{},"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.",[42,984,985,988,989,402],{},[17,986,987],{},"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 ",[101,990,992],{"href":991},"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","my Android 16 target API guide",[42,994,995,998],{},[17,996,997],{},"File declarations"," only for permissions you truly keep, and write down the user-facing feature each one supports.",[42,1000,1001,1004],{},[17,1002,1003],{},"Test a release build"," on a real device, with a clean install, before you submit.",[14,1006,397,1007,402],{},[101,1008,401],{"href":400},[31,1010,406],{"id":405},[14,1012,1013,1014,414,1016,402],{},"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 ",[101,1015,413],{"href":412},[101,1017,418],{"href":417},{"title":420,"searchDepth":421,"depth":421,"links":1019},[1020,1021,1022,1023,1024,1025,1026,1030,1031],{"id":534,"depth":421,"text":535},{"id":660,"depth":421,"text":661},{"id":698,"depth":421,"text":699},{"id":730,"depth":421,"text":731},{"id":757,"depth":421,"text":758},{"id":777,"depth":421,"text":778},{"id":320,"depth":421,"text":321,"children":1027},[1028],{"id":900,"depth":1029,"text":901},3,{"id":952,"depth":421,"text":953},{"id":405,"depth":421,"text":406},"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.",[1035,1038,1041,1044,1047],{"question":1036,"answer":1037},"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":1039,"answer":1040},"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":1042,"answer":1043},"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":1045,"answer":1046},"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":1048,"answer":1049},"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.",{"readingTimeStats":1051},{"text":1052,"minutes":1053,"time":1054,"words":1055},"10 min read",9.115,546900,1823,"\u002Fblog\u002Fgoogle-play-contacts-permissions-policy-2027","google play contacts permissions policy","10 min",[1060,468,1061],"app-store-google-play-deadlines-2026-2027","android-developer-verification-requirement-2026",{"title":514,"description":1033},[1064,1066,1069,1072,1075,1078,1080,1082,1084,1085,1086,1089,1092,1095,1098],{"title":1065,"url":579},"Play Console Help, Policy Deadlines",{"title":1067,"url":1068},"Android Developers, Play Monthly newsletter, June 2026","https:\u002F\u002Fdeveloper.android.com\u002Fnewsletter\u002Fplay-monthly\u002F2026\u002Fcontent\u002Fjune",{"title":1070,"url":1071},"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":1073,"url":1074},"Play Console Help, Permissions and APIs that Access Sensitive Information","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16558241",{"title":1076,"url":1077},"Play Console Help, Preview: Permissions and APIs that Access Sensitive Information","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F16909972",{"title":1079,"url":584},"Play Console Help, Understanding Restricted Permissions with minimum scope alternatives",{"title":1081,"url":608},"Play Console Help, Minimum Scope: Foreground Location Access and the Location Button",{"title":1083,"url":632},"Play Console Help, Use of SMS or Call Log permission groups",{"title":496,"url":497},{"title":490,"url":103},{"title":1087,"url":1088},"Android Developers, Merge multiple manifest files","https:\u002F\u002Fdeveloper.android.com\u002Fbuild\u002Fmanage-manifests",{"title":1090,"url":1091},"pub.dev, permission_handler","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fpermission_handler",{"title":1093,"url":1094},"pub.dev, flutter_contacts","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_contacts",{"title":1096,"url":1097},"pub.dev, contacts_service","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fcontacts_service",{"title":1099,"url":1100},"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",[1104,1105,1106,1107,1108],"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",{"id":1112,"title":1113,"author":1114,"body":1116,"category":430,"createdAt":1523,"description":1524,"disclosure":433,"extension":434,"faq":1525,"howTo":433,"lastVerified":433,"location":454,"meta":1544,"navigation":461,"ogImage":433,"path":1550,"primaryKeyword":1551,"readingTime":1552,"related":1553,"seo":1557,"sources":1558,"stem":1573,"tags":1574,"takeaways":1575,"updatedAt":1523,"url":1581,"__hash__":1582},"blog\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026.md","Google Fit API Deprecated: Moving to Health Connect in 2026",{"name":7,"social":1115},{"twitter":9},{"type":11,"value":1117,"toc":1513},[1118,1124,1127,1132,1136,1218,1221,1225,1228,1262,1266,1269,1324,1327,1411,1418,1422,1425,1428,1432,1435,1494,1498,1500],[14,1119,1120,1123],{},[17,1121,1122],{},"The Google Fit APIs are on their way out: Google says they, including the REST API, will only be supported until the end of 2026, and no new developers have been able to sign up since May 1, 2024."," Google recommends Health Connect for step tracking and mobile-first Android apps, and the Google Health API for cloud-based integrations. Which one you need depends on which Fit APIs your app calls, and some features, such as Goals, have no replacement at all.",[14,1125,1126],{},"If you landed here from an old link to the Google Fit docs or a Fit tutorial, this is what changed and where each piece goes. The dates and mappings come from Google's Fit and Health documentation and the Android Fit migration guide, as listed in the sources. I checked each page on October 18, 2026.",[14,1128,1129,1131],{},[17,1130,28],{}," App369 is my studio. I build and fix mobile apps, including Flutter apps on Android and iOS, and the last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,1133,1135],{"id":1134},"what-happened-to-google-fit-and-when","What happened to Google Fit, and when",[68,1137,1138,1150],{},[71,1139,1140],{},[74,1141,1142,1145,1148],{},[77,1143,1144],{},"Date",[77,1146,1147],{},"What happened",[77,1149,556],{},[90,1151,1152,1167,1182,1199],{},[74,1153,1154,1157,1160],{},[95,1155,1156],{},"May 1, 2024",[95,1158,1159],{},"Developers can no longer sign up to use the Google Fit APIs",[95,1161,1162],{},[101,1163,1166],{"href":1164,"rel":1165},"https:\u002F\u002Fdevelopers.google.com\u002Ffit",[105],"Google Fit",[74,1168,1169,1172,1175],{},[95,1170,1171],{},"September 30, 2026",[95,1173,1174],{},"Google says support for the legacy Fitbit Web API ends. It keeps operating, without bug fixes or API support",[95,1176,1177],{},[101,1178,1181],{"href":1179,"rel":1180},"https:\u002F\u002Fdevelopers.google.com\u002Fhealth",[105],"Google Health API",[74,1183,1184,1189,1194],{},[95,1185,1186],{},[17,1187,1188],{},"October 30, 2026",[95,1190,1191],{},[17,1192,1193],{},"Google says the Fitbit Web API will be turned off and will no longer function or sync data",[95,1195,1196],{},[101,1197,1181],{"href":1179,"rel":1198},[105],[74,1200,1201,1206,1211],{},[95,1202,1203],{},[17,1204,1205],{},"End of 2026",[95,1207,1208],{},[17,1209,1210],{},"Google says the Google Fit APIs, including the REST API, are supported until then",[95,1212,1213],{},[101,1214,1217],{"href":1215,"rel":1216},"https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect\u002Fmigration\u002Ffit",[105],"Fit migration guide",[14,1219,1220],{},"Google hasn't published an exact turn-off date for the Fit APIs. The migration guide says Google will keep its section on existing Fit app integrations updated with when to deprecate them.",[898,1222,1224],{"id":1223},"what-the-old-addresses-do-today","What the old addresses do today",[14,1226,1227],{},"Checked on October 18, 2026:",[39,1229,1230,1236,1245,1251],{},[42,1231,1232,1235],{},[17,1233,1234],{},"developers.google.com\u002Ffit"," still loads, with a banner saying the Fit APIs will be deprecated in 2026 and new sign-ups closed on May 1, 2024. The Android and REST getting-started pages still load too.",[42,1237,1238,1241,1242,402],{},[17,1239,1240],{},"developers.google.com\u002Ffit\u002Fmigration"," returned ",[17,1243,1244],{},"404",[42,1246,1247,1248,1250],{},"The old Health Connect migration guide address redirects to the new ",[17,1249,1217],{}," on developer.android.com.",[42,1252,1253,1254,1257,1258,1261],{},"A request to the Fit REST API at ",[17,1255,1256],{},"googleapis.com\u002Ffitness\u002Fv1"," without sign-in returned ",[17,1259,1260],{},"401",", so the API still answers for now.",[31,1263,1265],{"id":1264},"which-replacement-fits-your-app","Which replacement fits your app",[14,1267,1268],{},"Google's migration guide picks the path by app type:",[68,1270,1271,1284],{},[71,1272,1273],{},[74,1274,1275,1278,1281],{},[77,1276,1277],{},"Your app",[77,1279,1280],{},"Google's recommended path",[77,1282,1283],{},"Why, per Google",[90,1285,1286,1299,1311],{},[74,1287,1288,1291,1296],{},[95,1289,1290],{},"Step tracking app",[95,1292,1293],{},[17,1294,1295],{},"Health Connect",[95,1297,1298],{},"Mobile-centric reading of aggregated step data from several sources",[74,1300,1301,1304,1308],{},[95,1302,1303],{},"Fitness tracker companion app",[95,1305,1306],{},[17,1307,1181],{},[95,1309,1310],{},"A web-centric platform with OAuth for user integration",[74,1312,1313,1316,1321],{},[95,1314,1315],{},"Health and fitness platform",[95,1317,1318],{},[17,1319,1320],{},"Both",[95,1322,1323],{},"The Google Health API for Fitbit and Google device data, Health Connect for on-device aggregated data",[14,1325,1326],{},"And by which Fit API you call today:",[68,1328,1329,1342],{},[71,1330,1331],{},[74,1332,1333,1336,1339],{},[77,1334,1335],{},"Fit API you use",[77,1337,1338],{},"Phone",[77,1340,1341],{},"Wear OS",[90,1343,1344,1354,1365,1376,1387,1401],{},[74,1345,1346,1349,1351],{},[95,1347,1348],{},"History API",[95,1350,1181],{},[95,1352,1353],{},"Not applicable: use Health Connect from the phone app, not the watch",[74,1355,1356,1359,1362],{},[95,1357,1358],{},"Recording API (steps)",[95,1360,1361],{},"Health Connect. The total includes mobile steps on Android 14 or higher",[95,1363,1364],{},"Health Services",[74,1366,1367,1370,1373],{},[95,1368,1369],{},"Sensor API (real-time data)",[95,1371,1372],{},"Android Sensors framework or the Fused Location Provider API",[95,1374,1375],{},"Health Services (PassiveMonitoringClient, MeasureClient, ExerciseClient), or SensorManager and the Fused Location Provider",[74,1377,1378,1381,1384],{},[95,1379,1380],{},"Session API",[95,1382,1383],{},"Read and write sessions through the Google Health API; track start and stop inside your app",[95,1385,1386],{},"Start and stop with Health Services (ExerciseClient); read and write through Health Connect in the phone app",[74,1388,1389,1392,1397],{},[95,1390,1391],{},"Goals API",[95,1393,1394],{},[17,1395,1396],{},"No replacement",[95,1398,1399],{},[17,1400,1396],{},[74,1402,1403,1406,1409],{},[95,1404,1405],{},"BLE API",[95,1407,1408],{},"Android Bluetooth APIs directly",[95,1410,1408],{},[14,1412,1413,1414,1417],{},"Source: ",[101,1415,1217],{"href":1215,"rel":1416},[105],", last updated September 10, 2026. For inserting a workout or sleep session, the guide says to use Health Connect from the phone app with an ExerciseSessionRecord or SleepSessionRecord.",[898,1419,1421],{"id":1420},"health-connect-is-not-a-drop-in-swap","Health Connect is not a drop-in swap",[14,1423,1424],{},"The migration guide compares the two. The Fit API for Android is registered in Google Cloud Console, is cloud-centric and uses OAuth 2.0 with OAuth scopes. Health Connect is registered through your Play Store project and a health apps declaration, stores data on the device, needs no OAuth, and uses Android manifest permissions. My read: that means changes to your sign-in flow, your permission screens and your Play Console declaration, not just the API calls.",[14,1426,1427],{},"The Google Health API is the other way round: Google describes it as the next generation of the Fitbit Web API, with OAuth 2.0 access to data from Fitbit, Pixel Watch and other devices and apps. If your backend pulled Fit history through the REST API, this is the closer fit.",[31,1429,1431],{"id":1430},"what-to-do-now","What to do now",[14,1433,1434],{},"This section is my advice, not Google's.",[330,1436,1437,1452,1464,1470,1476,1482,1488],{},[42,1438,1439,1442,1443,341,1446,341,1449,1451],{},[17,1440,1441],{},"List every Fit call."," Search the app and backend for ",[110,1444,1445],{},"com.google.android.gms.fitness",[110,1447,1448],{},"Fitness.get",[110,1450,1256],{}," and any Fit OAuth scopes. Note which of the APIs in the table above each one uses.",[42,1453,1454,1457,1458,1463],{},[17,1455,1456],{},"Check your Flutter package, and any other health library you use."," The Flutter ",[101,1459,1462],{"href":1460,"rel":1461},"https:\u002F\u002Fpub.dev\u002Fpackages\u002Fhealth",[105],"health package"," says it removed Google Fit support in version 11.0.0 and now uses Health Connect on Android. If your app pins an older version, the upgrade and the Health Connect move are the same job.",[42,1465,1466,1469],{},[17,1467,1468],{},"Pick the path per feature, not per app."," A step counter can move to Health Connect while a synced workout history moves to the Google Health API. Use the two tables above.",[42,1471,1472,1475],{},[17,1473,1474],{},"Plan the permission change."," Health Connect asks users for on-device permissions instead of a Google sign-in. Write the new permission screen copy, and fill in the health apps declaration in Play Console before you submit the update.",[42,1477,1478,1481],{},[17,1479,1480],{},"Rebuild goals yourself."," Google lists no replacement for the Goals API, so store goals in your own app or backend and compare them with the data you read.",[42,1483,1484,1487],{},[17,1485,1486],{},"Keep existing users working while you switch."," Google's guide says that if your app has a way for users to connect to Google Fit, or is on the Works with Google Fit list, you can keep that integration for current users, and that Google will update the guide with when to deprecate it. Google recommends offering Health Connect or the Google Health API as a new option, and not asking users to disconnect from Google Fit.",[42,1489,1490,1493],{},[17,1491,1492],{},"If you also use the Fitbit Web API, do that first."," Google's date for turning it off, October 30, 2026, comes before the end of 2026.",[14,1495,397,1496,402],{},[101,1497,401],{"href":400},[31,1499,406],{"id":405},[14,1501,1502,1503,1505,1506,1510,1511,402],{},"If your app reads steps, workouts or sleep through Google Fit and you need it moved to Health Connect or the Google Health API, the ",[101,1504,413],{"href":412}," 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. If the app was built with an AI tool and you're not sure what it calls, the ",[101,1507,1509],{"href":1508},"\u002Ffixed-price\u002Fai-app-rescue\u002F","AI-Built App Rescue"," starts with a $450 Launch Check in 3 business days. Or ",[101,1512,418],{"href":417},{"title":420,"searchDepth":421,"depth":421,"links":1514},[1515,1518,1521,1522],{"id":1134,"depth":421,"text":1135,"children":1516},[1517],{"id":1223,"depth":1029,"text":1224},{"id":1264,"depth":421,"text":1265,"children":1519},[1520],{"id":1420,"depth":1029,"text":1421},{"id":1430,"depth":421,"text":1431},{"id":405,"depth":421,"text":406},"2026-10-18T19:00:00.000Z","Google stopped new Google Fit API sign-ups on May 1, 2024 and says the Fit APIs, including the REST API, are supported only until the end of 2026. Which replacement fits your app (Health Connect, the Google Health API or Health Services), the Fitbit Web API dates, and what to do first, from Google's docs checked October 18, 2026.",[1526,1529,1532,1535,1538,1541],{"question":1527,"answer":1528},"Is the Google Fit API being shut down?","Google says the Google Fit APIs, including the REST API, will be deprecated in 2026 and will only be supported until the end of 2026. New developers have not been able to sign up since May 1, 2024. On October 18, 2026, an unauthenticated request to the Fit REST API returned 401, so it was still responding. My advice is to plan your move before the end of the year.",{"question":1530,"answer":1531},"What replaces the Google Fit API?","Google recommends Health Connect for step tracking and mobile-first Android apps, and the Google Health API for cloud-based integrations such as fitness tracker companion apps. For a health and fitness platform, Google says to use the Google Health API for Fitbit and Google device data and Health Connect for on-device aggregated data. Fit on Wear OS moves to Health Services.",{"question":1533,"answer":1534},"What is the Google Health API?","Google describes it as the next generation of the Fitbit Web API. It gives OAuth 2.0 access to health and fitness data from Fitbit, Pixel Watch and other third-party devices and apps, and Google's Fit migration guide names it as the replacement for the Fit History and Session APIs.",{"question":1536,"answer":1537},"Is there a replacement for the Google Fit Goals API?","No. Google's migration guide says no replacement API is available for the Goals API, on phone or Wear OS. If your app shows goals, my advice is to store and track them in your own app or backend.",{"question":1539,"answer":1540},"Does the Flutter health package still support Google Fit?","No. The health package on pub.dev says it removed Google Fit support in version 11.0.0. It reads and writes Apple Health on iOS and Health Connect on Android, so a Flutter app on an older version needs to upgrade and move its Android code to Health Connect.",{"question":1542,"answer":1543},"When does the Fitbit Web API stop working?","Google says support for the legacy Fitbit Web API ended on September 30, 2026, and that on October 30, 2026 it will be turned off and stop syncing data. Google says to migrate to the Google Health API to keep access.",{"readingTimeStats":1545},{"text":1546,"minutes":1547,"time":1548,"words":1549},"6 min read",5.435,326100,1087,"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026","google fit api deprecated","7 min",[1554,1555,1556],"google-sign-in-android-deprecated-credential-manager-2026","google-places-api-legacy-legacyapinotactivatedmaperror-2026","firebase-deprecations-shutdown-dates-2026",{"title":1113,"description":1524},[1559,1561,1563,1566,1568,1571],{"title":1560,"url":1164},"Google for Developers, Google Fit",{"title":1562,"url":1215},"Android Developers, Fit migration guide (last updated September 10, 2026)",{"title":1564,"url":1565},"Android Developers, Health Connect","https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect",{"title":1567,"url":1179},"Google for Developers, Google Health API",{"title":1569,"url":1570},"Android Developers, Health Services on Wear OS","https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fguides\u002Fhealth-services",{"title":1572,"url":1460},"pub.dev, health package","blog\u002Fgoogle-fit-api-deprecated-health-connect-2026","google fit api deprecated, google fit shutdown, google fit rest api deprecated, health connect migration, google health api, fitbit web api shutdown, google fit alternative, flutter health package google fit, health services wear os, google fit end of 2026",[1576,1577,1578,1579,1580],"Since May 1, 2024, developers cannot sign up to use the Google Fit APIs. Google's migration guide says the Fit APIs, including the REST API, will only be supported until the end of 2026.","Google recommends Health Connect for step tracking and mobile-first Android apps, and the Google Health API for cloud-based integrations. Fit on Wear OS moves to Health Services.","The Fit History and Session APIs map to the Google Health API, and the Recording API's step counts to Health Connect. Google lists no replacement for the Goals API, and BLE apps should use the Android Bluetooth APIs directly.","Health Connect works differently: no OAuth, on-device data, Android manifest permissions and a health apps declaration in Play Console. Google's comparison shows different registration, sign-in and permission models, so in my view expect code changes, not just a library swap.","Google says the legacy Fitbit Web API lost support on September 30, 2026 and will be turned off on October 30, 2026. Its replacement is also the Google Health API.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F","Yo8d8rPmlIwyECe8w4qO3el3YD_zPm9-bYr7hmRkfeU",{"id":1584,"title":1585,"author":1586,"body":1588,"category":430,"createdAt":1983,"description":1984,"disclosure":433,"extension":434,"faq":1985,"howTo":433,"lastVerified":433,"location":454,"meta":2001,"navigation":461,"ogImage":433,"path":2007,"primaryKeyword":2008,"readingTime":1552,"related":2009,"seo":2013,"sources":2014,"stem":2037,"tags":2038,"takeaways":2039,"updatedAt":2045,"url":2046,"__hash__":2047},"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":1587},{"twitter":9},{"type":11,"value":1589,"toc":1976},[1590,1600,1603,1608,1612,1652,1660,1663,1683,1687,1696,1769,1776,1780,1799,1843,1846,1849,1911,1929,1931,1933,1963,1967,1969],[14,1591,1592,1595,1596,1599],{},[17,1593,1594],{},"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 ",[110,1597,1598],{},"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,1601,1602],{},"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,1604,1605,1607],{},[17,1606,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,1609,1611],{"id":1610},"the-requirement","The requirement",[68,1613,1614,1624],{},[71,1615,1616],{},[74,1617,1618,1621],{},[77,1619,1620],{},"App type",[77,1622,1623],{},"Must target, for new apps and updates from August 31, 2026",[90,1625,1626,1636,1644],{},[74,1627,1628,1631],{},[95,1629,1630],{},"Phone and tablet apps",[95,1632,1633],{},[17,1634,1635],{},"Android 16 (API level 36)",[74,1637,1638,1641],{},[95,1639,1640],{},"Wear OS and Android Automotive OS",[95,1642,1643],{},"Android 15 (API level 35)",[74,1645,1646,1649],{},[95,1647,1648],{},"Android TV and Android XR",[95,1650,1651],{},"Android 14 (API level 34)",[14,1653,1413,1654,1659],{},[101,1655,1658],{"href":1656,"rel":1657},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Frequirements\u002Ftarget-sdk",[105],"Google Play target API level requirement",", last updated October 16, 2026.",[14,1661,1662],{},"Google's page also says:",[39,1664,1665,1671,1677],{},[42,1666,1667,1670],{},[17,1668,1669],{},"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.",[42,1672,1673,1676],{},[17,1674,1675],{},"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.",[42,1678,1679,1682],{},[17,1680,1681],{},"Exception:"," permanently private apps for one organization's internal use.",[31,1684,1686],{"id":1685},"what-changes-when-you-target-api-36","What changes when you target API 36",[14,1688,1689,1690,1695],{},"Google's ",[101,1691,1694],{"href":1692,"rel":1693},"https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F16\u002Fbehavior-changes-16",[105],"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:",[68,1697,1698,1710],{},[71,1699,1700],{},[74,1701,1702,1704,1707],{},[77,1703,544],{},[77,1705,1706],{},"What Google says",[77,1708,1709],{},"Temporary way out",[90,1711,1712,1729,1753],{},[74,1713,1714,1719,1726],{},[95,1715,1716],{},[17,1717,1718],{},"Edge-to-edge",[95,1720,1721,1722,1725],{},"Apps can no longer opt out of drawing behind the status and navigation bars. ",[110,1723,1724],{},"windowOptOutEdgeToEdgeEnforcement"," is deprecated and disabled",[95,1727,1728],{},"None for API 36",[74,1730,1731,1736,1747],{},[95,1732,1733],{},[17,1734,1735],{},"Predictive back",[95,1737,1738,1739,1742,1743,1746],{},"Predictive back animations are on by default. ",[110,1740,1741],{},"onBackPressed"," is not called and ",[110,1744,1745],{},"KEYCODE_BACK"," is not dispatched",[95,1748,1749,1752],{},[110,1750,1751],{},"android:enableOnBackInvokedCallback=\"false\""," in the manifest",[74,1754,1755,1760,1763],{},[95,1756,1757],{},[17,1758,1759],{},"Large screens",[95,1761,1762],{},"On displays at least 600dp wide, orientation, resizability and aspect ratio restrictions are ignored, so the app fills the window",[95,1764,1765,1768],{},[110,1766,1767],{},"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY",". Google says it won't apply once you target API 37, which Google Play will require for new apps and updates in August 2027",[14,1770,1771,1772,1775],{},"The large-screen rule doesn't apply to games (based on ",[110,1773,1774],{},"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,1777,1779],{"id":1778},"flutter-apps","Flutter apps",[14,1781,1782,1783,1786,1787,1790,1791,1794,1795,1798],{},"Flutter's project template sets the target from the Flutter version: ",[110,1784,1785],{},"targetSdk = flutter.targetSdkVersion"," in ",[110,1788,1789],{},"android\u002Fapp\u002Fbuild.gradle.kts"," in Flutter 3.35's template, and ",[110,1792,1793],{},"targetSdkVersion flutter.targetSdkVersion"," in older Groovy templates such as Flutter 3.10's. Flutter's ",[110,1796,1797],{},"FlutterExtension"," source sets it to:",[68,1800,1801,1814],{},[71,1802,1803],{},[74,1804,1805,1808],{},[77,1806,1807],{},"Flutter version",[77,1809,1810,1811],{},"Default ",[110,1812,1813],{},"flutter.targetSdkVersion",[90,1815,1816,1824,1831],{},[74,1817,1818,1821],{},[95,1819,1820],{},"3.29 (February 12, 2025)",[95,1822,1823],{},"35",[74,1825,1826,1829],{},[95,1827,1828],{},"3.32 (May 20, 2025)",[95,1830,1823],{},[74,1832,1833,1838],{},[95,1834,1835],{},[17,1836,1837],{},"3.35 (August 14, 2025) and later",[95,1839,1840],{},[17,1841,1842],{},"36",[14,1844,1845],{},"Release dates from Flutter's release archive.",[14,1847,1848],{},"What that means for a Flutter app:",[330,1850,1851,1874,1888,1901],{},[42,1852,1853,1863,1864,1866,1867,1870,1871,1873],{},[17,1854,1855,1856,1859,1860,402],{},"Check ",[110,1857,1858],{},"android\u002Fapp\u002Fbuild.gradle"," or ",[110,1861,1862],{},"build.gradle.kts"," If it uses ",[110,1865,1813],{},", Flutter 3.35 or later gives you 36. If it has a hard-coded number, change it to 36 yourself (",[110,1868,1869],{},"targetSdk = 36"," in a ",[110,1872,1862],{}," file).",[42,1875,1876,1879,1880,1883,1884,1887],{},[17,1877,1878],{},"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 ",[110,1881,1882],{},"SafeArea"," or padding from ",[110,1885,1886],{},"MediaQuery",", including bottom sheets and screens with a bottom bar.",[42,1889,1890,1893,1894,1896,1897,1900],{},[17,1891,1892],{},"Back navigation."," If the app or a plugin overrides ",[110,1895,1741],{}," in Android code, that override won't be called on Android 16. My advice: use ",[110,1898,1899],{},"PopScope"," on the Flutter side for back handling, and check plugins that intercept back.",[42,1902,1903,1906,1907,1910],{},[17,1904,1905],{},"Tablets."," If the app locks orientation with ",[110,1908,1909],{},"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,1912,1913,1914,1918,1919,1923,1924,1928],{},"If an older app can't move to Flutter 3.35 because the Android build breaks first, the ",[101,1915,1917],{"href":1916},"\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F","v1 embedding fix"," and the ",[101,1920,1922],{"href":1921},"\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 ",[101,1925,1927],{"href":1926},"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","Billing Library 8 deadline"," is due at the same time.",[31,1930,1431],{"id":1430},[14,1932,1434],{},[330,1934,1935,1945,1951,1957],{},[42,1936,1937,1940,1941,1944],{},[17,1938,1939],{},"Check the target your last release used."," Look at ",[110,1942,1943],{},"targetSdk"," in the build file for that release, or the app bundle details in Play Console.",[42,1946,1947,1950],{},[17,1948,1949],{},"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.",[42,1952,1953,1956],{},[17,1954,1955],{},"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.",[42,1958,1959,1962],{},[17,1960,1961],{},"Ship to a closed testing track first."," Catch layout and back-gesture issues before your users do.",[14,1964,397,1965,402],{},[101,1966,401],{"href":400},[31,1968,406],{"id":405},[14,1970,1971,1972,414,1974,402],{},"If an app can't ship an update because of the target API requirement, or something broke after raising it, the ",[101,1973,413],{"href":412},[101,1975,418],{"href":417},{"title":420,"searchDepth":421,"depth":421,"links":1977},[1978,1979,1980,1981,1982],{"id":1610,"depth":421,"text":1611},{"id":1685,"depth":421,"text":1686},{"id":1778,"depth":421,"text":1779},{"id":1430,"depth":421,"text":1431},{"id":405,"depth":421,"text":406},"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.",[1986,1989,1992,1995,1998],{"question":1987,"answer":1988},"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":1990,"answer":1991},"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":1993,"answer":1994},"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":1996,"answer":1997},"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":1999,"answer":2000},"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. Google's Android 17 post says Play will require new apps and updates to target API 37 in August 2027, with no option to opt out.",{"readingTimeStats":2002},{"text":2003,"minutes":2004,"time":2005,"words":2006},"5 min read",4.33,259800,866,"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36",[2010,2011,2012],"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":1585,"description":1984},[2015,2017,2019,2022,2025,2028,2031,2034],{"title":2016,"url":1656},"Android Developers, Meet Google Play's target API level requirement (last updated October 16, 2026)",{"title":2018,"url":1692},"Android Developers, Behavior changes: apps targeting Android 16 or higher (last updated October 16, 2026)",{"title":2020,"url":2021},"Android Developers Blog, Prepare your app for the resizability and orientation changes in Android 17","https:\u002F\u002Fdeveloper.android.com\u002Fblog\u002Fposts\u002Fprepare-your-app-for-the-resizability-and-orientation-changes-in-android-17",{"title":2023,"url":2024},"Android Developers, Ignore orientation, resizability and aspect ratio restrictions on Android 17 (last updated October 16, 2026)","https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F17\u002Fchanges\u002Fff-restrictions-ignored",{"title":2026,"url":2027},"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":2029,"url":2030},"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":2032,"url":2033},"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":2035,"url":2036},"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",[2040,2041,2042,2043,2044],"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.","2026-10-19T13:00:00.000Z","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","oirxL7D0zPACoWLkNYOnNA4wYHFnkQCHyTmn0VaV5qs",[2049,2051,2055,2059,2063,2065],{"keyword":5,"url":509,"title":5,"relevance":2050},67,{"keyword":2052,"url":2053,"title":2052,"relevance":2054},"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",14,{"keyword":2056,"url":2057,"title":2056,"relevance":2058},"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",13,{"keyword":2060,"url":2061,"title":2060,"relevance":2062},"Google Play Games Services v1 Shutdown 2027: Migrate to v2","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-games-services-v1-shutdown-migrate-to-v2-2027\u002F",12,{"keyword":1113,"url":1581,"title":1113,"relevance":2064},10,{"keyword":514,"url":1109,"title":514,"relevance":2066},9,1792447588370]