[{"data":1,"prerenderedAt":1913},["ShallowReactive",2],{"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F":3,"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F-related":508,"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F-resources":1893},{"id":4,"title":5,"author":6,"body":10,"category":443,"createdAt":444,"description":445,"disclosure":446,"extension":447,"faq":448,"howTo":446,"lastVerified":446,"location":467,"meta":468,"navigation":474,"ogImage":446,"path":475,"primaryKeyword":476,"readingTime":477,"related":478,"seo":482,"sources":483,"stem":498,"tags":499,"takeaways":500,"updatedAt":444,"url":506,"__hash__":507},"blog\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026.md","Google Fit API Deprecated: Moving to Health Connect in 2026",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":430},"minimark",[13,21,24,30,35,126,129,134,137,174,178,181,236,239,323,330,334,337,340,344,347,409,413],[14,15,16,20],"p",{},[17,18,19],"strong",{},"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,22,23],{},"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,25,26,29],{},[17,27,28],{},"Disclosure:"," 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,32,34],"h2",{"id":33},"what-happened-to-google-fit-and-when","What happened to Google Fit, and when",[36,37,38,54],"table",{},[39,40,41],"thead",{},[42,43,44,48,51],"tr",{},[45,46,47],"th",{},"Date",[45,49,50],{},"What happened",[45,52,53],{},"Source",[55,56,57,75,90,107],"tbody",{},[42,58,59,63,66],{},[60,61,62],"td",{},"May 1, 2024",[60,64,65],{},"Developers can no longer sign up to use the Google Fit APIs",[60,67,68],{},[69,70,74],"a",{"href":71,"rel":72},"https:\u002F\u002Fdevelopers.google.com\u002Ffit",[73],"nofollow","Google Fit",[42,76,77,80,83],{},[60,78,79],{},"September 30, 2026",[60,81,82],{},"Google says support for the legacy Fitbit Web API ends. It keeps operating, without bug fixes or API support",[60,84,85],{},[69,86,89],{"href":87,"rel":88},"https:\u002F\u002Fdevelopers.google.com\u002Fhealth",[73],"Google Health API",[42,91,92,97,102],{},[60,93,94],{},[17,95,96],{},"October 30, 2026",[60,98,99],{},[17,100,101],{},"Google says the Fitbit Web API will be turned off and will no longer function or sync data",[60,103,104],{},[69,105,89],{"href":87,"rel":106},[73],[42,108,109,114,119],{},[60,110,111],{},[17,112,113],{},"End of 2026",[60,115,116],{},[17,117,118],{},"Google says the Google Fit APIs, including the REST API, are supported until then",[60,120,121],{},[69,122,125],{"href":123,"rel":124},"https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect\u002Fmigration\u002Ffit",[73],"Fit migration guide",[14,127,128],{},"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.",[130,131,133],"h3",{"id":132},"what-the-old-addresses-do-today","What the old addresses do today",[14,135,136],{},"Checked on October 18, 2026:",[138,139,140,147,157,163],"ul",{},[141,142,143,146],"li",{},[17,144,145],{},"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.",[141,148,149,152,153,156],{},[17,150,151],{},"developers.google.com\u002Ffit\u002Fmigration"," returned ",[17,154,155],{},"404",".",[141,158,159,160,162],{},"The old Health Connect migration guide address redirects to the new ",[17,161,125],{}," on developer.android.com.",[141,164,165,166,169,170,173],{},"A request to the Fit REST API at ",[17,167,168],{},"googleapis.com\u002Ffitness\u002Fv1"," without sign-in returned ",[17,171,172],{},"401",", so the API still answers for now.",[31,175,177],{"id":176},"which-replacement-fits-your-app","Which replacement fits your app",[14,179,180],{},"Google's migration guide picks the path by app type:",[36,182,183,196],{},[39,184,185],{},[42,186,187,190,193],{},[45,188,189],{},"Your app",[45,191,192],{},"Google's recommended path",[45,194,195],{},"Why, per Google",[55,197,198,211,223],{},[42,199,200,203,208],{},[60,201,202],{},"Step tracking app",[60,204,205],{},[17,206,207],{},"Health Connect",[60,209,210],{},"Mobile-centric reading of aggregated step data from several sources",[42,212,213,216,220],{},[60,214,215],{},"Fitness tracker companion app",[60,217,218],{},[17,219,89],{},[60,221,222],{},"A web-centric platform with OAuth for user integration",[42,224,225,228,233],{},[60,226,227],{},"Health and fitness platform",[60,229,230],{},[17,231,232],{},"Both",[60,234,235],{},"The Google Health API for Fitbit and Google device data, Health Connect for on-device aggregated data",[14,237,238],{},"And by which Fit API you call today:",[36,240,241,254],{},[39,242,243],{},[42,244,245,248,251],{},[45,246,247],{},"Fit API you use",[45,249,250],{},"Phone",[45,252,253],{},"Wear OS",[55,255,256,266,277,288,299,313],{},[42,257,258,261,263],{},[60,259,260],{},"History API",[60,262,89],{},[60,264,265],{},"Not applicable: use Health Connect from the phone app, not the watch",[42,267,268,271,274],{},[60,269,270],{},"Recording API (steps)",[60,272,273],{},"Health Connect. The total includes mobile steps on Android 14 or higher",[60,275,276],{},"Health Services",[42,278,279,282,285],{},[60,280,281],{},"Sensor API (real-time data)",[60,283,284],{},"Android Sensors framework or the Fused Location Provider API",[60,286,287],{},"Health Services (PassiveMonitoringClient, MeasureClient, ExerciseClient), or SensorManager and the Fused Location Provider",[42,289,290,293,296],{},[60,291,292],{},"Session API",[60,294,295],{},"Read and write sessions through the Google Health API; track start and stop inside your app",[60,297,298],{},"Start and stop with Health Services (ExerciseClient); read and write through Health Connect in the phone app",[42,300,301,304,309],{},[60,302,303],{},"Goals API",[60,305,306],{},[17,307,308],{},"No replacement",[60,310,311],{},[17,312,308],{},[42,314,315,318,321],{},[60,316,317],{},"BLE API",[60,319,320],{},"Android Bluetooth APIs directly",[60,322,320],{},[14,324,325,326,329],{},"Source: ",[69,327,125],{"href":123,"rel":328},[73],", 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.",[130,331,333],{"id":332},"health-connect-is-not-a-drop-in-swap","Health Connect is not a drop-in swap",[14,335,336],{},"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,338,339],{},"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,341,343],{"id":342},"what-to-do-now","What to do now",[14,345,346],{},"This section is my advice, not Google's.",[348,349,350,367,379,385,391,397,403],"ol",{},[141,351,352,355,356,360,361,360,364,366],{},[17,353,354],{},"List every Fit call."," Search the app and backend for ",[357,358,359],"code",{},"com.google.android.gms.fitness",", ",[357,362,363],{},"Fitness.get",[357,365,168],{}," and any Fit OAuth scopes. Note which of the APIs in the table above each one uses.",[141,368,369,372,373,378],{},[17,370,371],{},"Check your Flutter package, and any other health library you use."," The Flutter ",[69,374,377],{"href":375,"rel":376},"https:\u002F\u002Fpub.dev\u002Fpackages\u002Fhealth",[73],"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.",[141,380,381,384],{},[17,382,383],{},"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.",[141,386,387,390],{},[17,388,389],{},"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.",[141,392,393,396],{},[17,394,395],{},"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.",[141,398,399,402],{},[17,400,401],{},"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.",[141,404,405,408],{},[17,406,407],{},"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.",[31,410,412],{"id":411},"need-a-hand","Need a hand?",[14,414,415,416,420,421,425,426,156],{},"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 ",[69,417,419],{"href":418},"\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. If the app was built with an AI tool and you're not sure what it calls, the ",[69,422,424],{"href":423},"\u002Ffixed-price\u002Fai-app-rescue\u002F","AI-Built App Rescue"," starts with a $450 Launch Check in 3 business days. Or ",[69,427,429],{"href":428},"\u002Fcontact\u002F","send me a short description",{"title":431,"searchDepth":432,"depth":432,"links":433},"",2,[434,438,441,442],{"id":33,"depth":432,"text":34,"children":435},[436],{"id":132,"depth":437,"text":133},3,{"id":176,"depth":432,"text":177,"children":439},[440],{"id":332,"depth":437,"text":333},{"id":342,"depth":432,"text":343},{"id":411,"depth":432,"text":412},"AI & Technology","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.",null,"md",[449,452,455,458,461,464],{"question":450,"answer":451},"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":453,"answer":454},"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":456,"answer":457},"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":459,"answer":460},"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":462,"answer":463},"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":465,"answer":466},"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.","Boynton Beach, FL",{"readingTimeStats":469},{"text":470,"minutes":471,"time":472,"words":473},"6 min read",5.315,318900,1063,true,"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026","google fit api deprecated","7 min",[479,480,481],"google-sign-in-android-deprecated-credential-manager-2026","google-places-api-legacy-legacyapinotactivatedmaperror-2026","firebase-deprecations-shutdown-dates-2026",{"title":5,"description":445},[484,486,488,491,493,496],{"title":485,"url":71},"Google for Developers, Google Fit",{"title":487,"url":123},"Android Developers, Fit migration guide (last updated September 10, 2026)",{"title":489,"url":490},"Android Developers, Health Connect","https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect",{"title":492,"url":87},"Google for Developers, Google Health API",{"title":494,"url":495},"Android Developers, Health Services on Wear OS","https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fguides\u002Fhealth-services",{"title":497,"url":375},"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",[501,502,503,504,505],"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","j3P5mg4jHDzigUajScOk2psR3Vegl9kKK8WjEbjIuPQ",[509,1083,1449],{"id":510,"title":511,"author":512,"body":514,"category":443,"createdAt":1009,"description":1010,"disclosure":446,"extension":447,"faq":1011,"howTo":446,"lastVerified":446,"location":467,"meta":1030,"navigation":474,"ogImage":446,"path":1036,"primaryKeyword":1037,"readingTime":1038,"related":1039,"seo":1042,"sources":1043,"stem":1073,"tags":1074,"takeaways":1075,"updatedAt":1009,"url":1081,"__hash__":1082},"blog\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026.md","Google Sign-In for Android Is Deprecated: Moving to Credential Manager",{"name":7,"social":513},{"twitter":9},{"type":11,"value":515,"toc":1000},[516,538,541,546,550,638,641,643,645,677,681,690,806,810,820,887,890,894,985,987],[14,517,518,521,522,525,526,529,530,533,534,537],{},[17,519,520],{},"Google Sign-In for Android is deprecated, and Sign in with Google now runs through Credential Manager."," If your app still uses ",[357,523,524],{},"GoogleSignInClient"," and ",[357,527,528],{},"GoogleSignInOptions"," from ",[357,531,532],{},"play-services-auth",", or One Tap, move it to Credential Manager before Google removes the old code from the SDK. In a Flutter app the move is an upgrade to ",[357,535,536],{},"google_sign_in"," 7, which is a breaking release. Much of the work is in the code, and some of the bugs afterwards are in the setup.",[14,539,540],{},"If you landed here from an old link to Google's Android sign-in guide, that address now redirects to the Credential Manager overview. The dates and behavior below come from Android Developers, the Android Developers Blog and the Flutter plugin pages, as listed in the sources. I checked each page on October 18, 2026.",[14,542,543,545],{},[17,544,28],{}," 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,547,549],{"id":548},"what-changed-and-when","What changed, and when",[36,551,552,563],{},[39,553,554],{},[42,555,556,559,561],{},[45,557,558],{},"When",[45,560,50],{},[45,562,53],{},[55,564,565,580,593,606,623],{},[42,566,567,570,573],{},[60,568,569],{},"September 11, 2024",[60,571,572],{},"Google announces that Credential Manager replaces its legacy Android sign-in APIs, and publishes a removal timeline",[60,574,575],{},[69,576,579],{"href":577,"rel":578},"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fstreamlining-android-authentication-credential-manager-replaces-legacy-apis.html",[73],"Android Developers Blog",[42,581,582,585,588],{},[60,583,584],{},"Q1 2025",[60,586,587],{},"Smart Lock for Passwords: listed as fully shut down",[60,589,590],{},[69,591,579],{"href":577,"rel":592},[73],[42,594,595,598,601],{},[60,596,597],{},"H1 2025",[60,599,600],{},"Credential Saving API and the Sign in with Google button API: listed for removal",[60,602,603],{},[69,604,579],{"href":577,"rel":605},[73],[42,607,608,613,618],{},[60,609,610],{},[17,611,612],{},"H2 2025",[60,614,615],{},[17,616,617],{},"One Tap and Google Sign-In for Android: listed for removal",[60,619,620],{},[69,621,579],{"href":577,"rel":622},[73],[42,624,625,628,631],{},[60,626,627],{},"Now",[60,629,630],{},"Google's migration page says legacy Google Sign-In is deprecated and will be removed from the Play services Auth SDK in a future release",[60,632,633],{},[69,634,637],{"href":635,"rel":636},"https:\u002F\u002Fdeveloper.android.com\u002Fidentity\u002Fsign-in\u002Flegacy-gsi-migration",[73],"Android Developers",[14,639,640],{},"The two sources don't give the same date. The 2024 post gave half-year targets; the migration page, last updated March 6, 2026, gives none. What both say is the same: the old APIs are on their way out, and new work belongs on Credential Manager.",[130,642,133],{"id":132},[14,644,136],{},[138,646,647,657,663,671],{},[141,648,649,652,653,656],{},[17,650,651],{},"developers.google.com\u002Fidentity\u002Fsign-in\u002Fandroid\u002Fstart-integrating",", the old setup guide, ",[17,654,655],{},"redirects"," to the Android Credential Manager overview.",[141,658,659,662],{},[17,660,661],{},"developers.google.com\u002Fidentity\u002Fsign-in\u002Fandroid\u002Fsign-in"," redirects there too.",[141,664,665,152,668,670],{},[17,666,667],{},"developers.google.com\u002Fidentity\u002Fsign-in\u002Fandroid\u002Flegacy-gsi-migration",[17,669,155],{},". The live migration page is on developer.android.com, linked in the sources.",[141,672,673,676],{},[17,674,675],{},"developers.google.com\u002Fidentity\u002Fone-tap\u002Fandroid\u002Foverview"," redirects to a page that says One Tap for Android is deprecated.",[31,678,680],{"id":679},"moving-a-native-android-app-to-credential-manager","Moving a native Android app to Credential Manager",[14,682,683,684,689],{},"The steps follow Google's ",[69,685,688],{"href":686,"rel":687},"https:\u002F\u002Fdeveloper.android.com\u002Fidentity\u002Fsign-in\u002Fcredential-manager-siwg-implementation",[73],"Sign in with Google implementation guide",":",[348,691,692,714,724,745,766,772,782,795],{},[141,693,694,697,698,360,701,525,704,707,708,713],{},[17,695,696],{},"Add the dependencies."," Add ",[357,699,700],{},"androidx.credentials:credentials",[357,702,703],{},"androidx.credentials:credentials-play-services-auth",[357,705,706],{},"com.google.android.libraries.identity.googleid:googleid",". Check the ",[69,709,712],{"href":710,"rel":711},"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcredentials",[73],"androidx.credentials release page"," for the current stable version: on October 18, 2026 the newest stable release listed was 1.6.0, while Google's sample used a 1.7.0 alpha.",[141,715,716,719,720,723],{},[17,717,718],{},"Use your web client ID."," Google's guide passes the ",[17,721,722],{},"Web"," client ID you set up for OAuth in your Google Cloud project as the server client ID, even in an Android app. The project also has to know your Android app: the Flutter plugin's docs list a wrong package name or a missing signing SHA as common causes of failed sign-in.",[141,725,726,729,730,733,734,737,738,741,742,156],{},[17,727,728],{},"Build the request."," For the bottom-sheet flow, use ",[357,731,732],{},"GetGoogleIdOption"," with your web client ID. Google's guide first sets ",[357,735,736],{},"setFilterByAuthorizedAccounts(true)"," to offer accounts that already signed in, with ",[357,739,740],{},"setAutoSelectEnabled(true)"," for returning users. For a \"Sign in with Google\" button, use ",[357,743,744],{},"GetSignInWithGoogleOption",[141,746,747,750,751,754,755,758,759,762,763,156],{},[17,748,749],{},"Call Credential Manager."," Create it with ",[357,752,753],{},"CredentialManager.create(context)"," and call ",[357,756,757],{},"getCredential"," with the request. When the result is a ",[357,760,761],{},"GoogleIdTokenCredential",", read it with ",[357,764,765],{},"GoogleIdTokenCredential.createFrom(credential.data)",[141,767,768,771],{},[17,769,770],{},"Verify the ID token on your server."," Send the ID token to your backend and verify it there. If you use Firebase Authentication, use the Google ID token with Firebase Auth.",[141,773,774,777,778,781],{},[17,775,776],{},"Move scopes to AuthorizationClient."," Google says sign-in and authorization are separate actions now. If your app reads Drive, Calendar or another Google API, request those scopes with the ",[357,779,780],{},"AuthorizationClient"," API when the user needs that feature, not at sign-in.",[141,783,784,787,788,791,792,156],{},[17,785,786],{},"Replace silent sign-in."," Google's migration page says to use a request with ",[357,789,790],{},"filterByAuthorizedAccounts"," set to true and auto-select on, in place of ",[357,793,794],{},"silentSignIn",[141,796,797,800,801,360,803,805],{},[17,798,799],{},"Remove the old code."," Once the new path works, remove ",[357,802,524],{},[357,804,528],{}," and any One Tap code, so an old error can't be mistaken for a new one.",[31,807,809],{"id":808},"moving-a-flutter-app-to-google_sign_in-7","Moving a Flutter app to google_sign_in 7",[14,811,812,813,816,817,819],{},"On Android, ",[357,814,815],{},"google_sign_in_android"," 7.0.0 switched to Credential Manager. Its changelog says it removed the deprecated Google Sign In for Android SDK. ",[357,818,536],{}," 7.0.0 is a breaking release, and its changelog lists the main changes:",[138,821,822,838,852,869],{},[141,823,824,830,831,834,835,156],{},[17,825,826,829],{},[357,827,828],{},"GoogleSignIn"," is a singleton."," Use ",[357,832,833],{},"GoogleSignIn.instance"," instead of creating your own ",[357,836,837],{},"GoogleSignIn(...)",[141,839,840,843,844,847,848,851],{},[17,841,842],{},"Initialize first."," Call and await ",[357,845,846],{},"initialize",", passing ",[357,849,850],{},"serverClientId"," where needed, before any other method.",[141,853,854,860,861,864,865,868],{},[17,855,856,857,156],{},"Sign-in is ",[357,858,859],{},"authenticate()"," Check ",[357,862,863],{},"supportsAuthenticate()"," first, because not every platform supports it. ",[357,866,867],{},"attemptLightweightAuthentication()"," covers returning users.",[141,870,871,874,875,878,879,882,883,886],{},[17,872,873],{},"Authentication and authorization are separate."," Access tokens and server auth codes come from separate calls through the account's ",[357,876,877],{},"authorizationClient",", with ",[357,880,881],{},"authorizationForScopes"," to check and ",[357,884,885],{},"authorizeScopes"," to ask, from a user interaction.",[14,888,889],{},"Plan for the upgrade to touch every place your app signs in, reads the current user or asks for scopes. It isn't a version bump you can make in one line.",[31,891,893],{"id":892},"when-sign-in-breaks-after-the-move","When sign-in breaks after the move",[36,895,896,909],{},[39,897,898],{},[42,899,900,903,906],{},[45,901,902],{},"What you see",[45,904,905],{},"What it usually means",[45,907,908],{},"What to check",[55,910,911,935,946,957,971],{},[42,912,913,916,919],{},[60,914,915],{},"\"serverClientId must be provided on Android\"",[60,917,918],{},"The plugin can't find your web OAuth client",[60,920,921,924,925,928,929,932,933],{},[357,922,923],{},"google-services.json"," needs an ",[357,926,927],{},"oauth_client"," entry with ",[357,930,931],{},"client_type: 3",". If it's missing, add a web app to the project and download the file again, or pass the web client ID to ",[357,934,846],{},[42,936,937,940,943],{},[60,938,939],{},"Sign-in reports \"canceled\" when the user didn't cancel",[60,941,942],{},"Sometimes a configuration error",[60,944,945],{},"The plugin's docs say some configuration errors come back from Credential Manager as \"canceled\", and the plugin can't tell them from a real cancel. Check the client IDs, package name and SHA fingerprints",[42,947,948,951,954],{},[60,949,950],{},"Works in debug, fails in release or from Play",[60,952,953],{},"The release signing key's SHA isn't registered",[60,955,956],{},"Register the signing SHA for each build configuration that fails, including the Play App Signing key shown in Play Console if you use it",[42,958,959,962,965],{},[60,960,961],{},"Sign-in works, but API calls fail with no token",[60,963,964],{},"Authentication and authorization are separate steps now",[60,966,967,968,970],{},"Request them with AuthorizationClient (",[357,969,885],{}," in Flutter)",[42,972,973,976,979],{},[60,974,975],{},"Package name mismatch",[60,977,978],{},"The Android client in Google Cloud has a different package name",[60,980,981,982],{},"Match the package name in Google Cloud or Firebase to ",[357,983,984],{},"applicationId",[31,986,412],{"id":411},[14,988,989,990,992,993,997,998,156],{},"If sign-in still fails after the move, or it works on your phone but not for your users, the ",[69,991,419],{"href":418}," 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. For a related Android change, see ",[69,994,996],{"href":995},"\u002Fblog\u002Fsafetynet-shut-down-play-integrity-app-check-2026\u002F","SafetyNet is gone: moving to Play Integrity and App Check",", or ",[69,999,429],{"href":428},{"title":431,"searchDepth":432,"depth":432,"links":1001},[1002,1005,1006,1007,1008],{"id":548,"depth":432,"text":549,"children":1003},[1004],{"id":132,"depth":437,"text":133},{"id":679,"depth":432,"text":680},{"id":808,"depth":432,"text":809},{"id":892,"depth":432,"text":893},{"id":411,"depth":432,"text":412},"2026-10-18T11:00:00.000Z","Google deprecated Google Sign-In for Android, One Tap and Smart Lock for Passwords, and moved Sign in with Google into Credential Manager. What changed and when, how to migrate a native Android app, and how to move a Flutter app to google_sign_in 7, from Google's docs checked October 18, 2026.",[1012,1015,1018,1021,1024,1027],{"question":1013,"answer":1014},"Is Google Sign-In for Android deprecated?","Yes. Google's migration page says legacy Google Sign-In for Android is deprecated and will be removed from the Google Play services Auth SDK (play-services-auth). Google recommends Sign in with Google through Credential Manager instead.",{"question":1016,"answer":1017},"When will GoogleSignInClient stop working?","Google's September 2024 timeline put the removal of Google Sign-In for Android in the second half of 2025. Its current migration page, last updated March 6, 2026, says the API will be removed in a future release, without a date. Google says removal comes in a future release, so migrate now.",{"question":1019,"answer":1020},"What replaced Google One Tap and Smart Lock on Android?","Credential Manager. Google's One Tap page now says One Tap for Android is deprecated and to migrate to Credential Manager, and the Smart Lock for Passwords page says the same.",{"question":1022,"answer":1023},"How do I get an access token for Google APIs after the migration?","Request them in a separate step from sign-in. Credential Manager returns an ID token that proves who the user is. To call Google APIs such as Drive, request the scopes with the AuthorizationClient API, which Google says apps should keep using for authorization.",{"question":1025,"answer":1026},"Why does Flutter say \"serverClientId must be provided on Android\"?","The google_sign_in Android plugin needs your web OAuth client ID. The plugin's documentation says google-services.json should contain a web OAuth client (an oauth_client entry with client_type 3). If it doesn't, add a web app to the project and download the file again, or pass the web client ID as serverClientId when you call initialize.",{"question":1028,"answer":1029},"Why does Google sign-in work in debug but not in release?","A common cause is that the release build's signing SHA isn't registered in your Firebase or Google Cloud project. The plugin's documentation lists a missing or wrong SHA as a common cause of sign-in working in one build configuration but not another.",{"readingTimeStats":1031},{"text":1032,"minutes":1033,"time":1034,"words":1035},"5 min read",5.005,300300,1001,"\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026","google sign-in android deprecated","8 min",[1040,481,1041],"safetynet-shut-down-play-integrity-app-check-2026","how-to-debug-a-flutter-firebase-bug-2026",{"title":511,"description":1010},[1044,1046,1048,1051,1053,1056,1059,1061,1064,1067,1070],{"title":1045,"url":577},"Android Developers Blog, \"Streamlining Android authentication: Credential Manager replaces legacy APIs\" (September 11, 2024)",{"title":1047,"url":635},"Android Developers, about the migration from legacy Google Sign-In",{"title":1049,"url":1050},"Android Developers, about Sign in with Google","https:\u002F\u002Fdeveloper.android.com\u002Fidentity\u002Fsign-in\u002Fcredential-manager-siwg",{"title":1052,"url":686},"Android Developers, implement Sign in with Google",{"title":1054,"url":1055},"Android Developers, about Credential Manager","https:\u002F\u002Fdeveloper.android.com\u002Fidentity\u002Fcredential-manager",{"title":1057,"url":1058},"Android Developers, One Tap for Android (deprecated)","https:\u002F\u002Fdeveloper.android.com\u002Fidentity\u002Flegacy\u002Fone-tap\u002F",{"title":1060,"url":710},"Android Developers, androidx.credentials releases",{"title":1062,"url":1063},"Firebase, authenticate with Google on Android","https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fauth\u002Fandroid\u002Fgoogle-signin",{"title":1065,"url":1066},"pub.dev, google_sign_in_android (Android setup and troubleshooting)","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgoogle_sign_in_android",{"title":1068,"url":1069},"pub.dev, google_sign_in changelog","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgoogle_sign_in\u002Fchangelog",{"title":1071,"url":1072},"pub.dev, google_sign_in_android changelog","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgoogle_sign_in_android\u002Fchangelog","blog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026","google sign-in android deprecated, googlesigninclient deprecated, credential manager migration, sign in with google android, one tap android deprecated, smart lock for passwords deprecated, play-services-auth migration, google_sign_in 7 migration, flutter google sign in android, serverClientId must be provided on Android",[1076,1077,1078,1079,1080],"Google deprecated the legacy Google Sign-In for Android API and says it will be removed from the Google Play services Auth SDK. Sign in with Google now runs through Credential Manager.","Google's September 11, 2024 timeline listed Smart Lock for Passwords as shut down in Q1 2025, and One Tap and Google Sign-In for Android for removal in the second half of 2025. Its current migration page still says the removal comes in a future release.","Sign-in and access to Google APIs are now separate steps. Credential Manager signs the user in; for scopes such as Google Drive, Google says to use the AuthorizationClient API.","In Flutter, google_sign_in 7.0.0 is a breaking release: GoogleSignIn is a singleton you must initialize first, and authentication and authorization are separate. On Android, google_sign_in_android 7.0.0 switched to Credential Manager.","Several failures after the move come from configuration, not code: a missing web OAuth client (serverClientId), or a missing SHA fingerprint for one build type. Some of these surface as a \"canceled\" error.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026\u002F","8pSzUx4K9oKqBaZtsSDzuiVeqr7Le04IouFOIJQw-M0",{"id":1084,"title":1085,"author":1086,"body":1088,"category":443,"createdAt":1393,"description":1394,"disclosure":446,"extension":447,"faq":1395,"howTo":446,"lastVerified":446,"location":467,"meta":1414,"navigation":474,"ogImage":446,"path":1420,"primaryKeyword":1097,"readingTime":477,"related":1421,"seo":1423,"sources":1424,"stem":1439,"tags":1440,"takeaways":1441,"updatedAt":1393,"url":1447,"__hash__":1448},"blog\u002Fblog\u002Fgoogle-places-api-legacy-legacyapinotactivatedmaperror-2026.md","Google Places API Is Legacy: Fixing LegacyApiNotActivatedMapError",{"name":7,"social":1087},{"twitter":9},{"type":11,"value":1089,"toc":1383},[1090,1100,1103,1108,1112,1200,1208,1212,1215,1241,1243,1245,1262,1266,1363,1367,1370,1372],[14,1091,1092,1099],{},[17,1093,1094,1095,1098],{},"If your app shows ",[357,1096,1097],{},"LegacyApiNotActivatedMapError",", it is calling a Google Maps API that went Legacy on March 1, 2025, from a Cloud project where that API isn't available."," The Places API, the Places SDKs, Directions and Distance Matrix are all Legacy now. Existing projects can keep using them for now, but new projects can't, and Google recommends keeping them off. The fix is to move the code to Places API (New) or the Routes API. That is a real code change, not a setting.",[14,1101,1102],{},"If you landed here from an old link to the Places SDK for Android docs, that page now returns 404. The dates and behavior below come from Google Maps Platform documentation, as listed in the sources. I checked each page on October 18, 2026.",[14,1104,1105,1107],{},[17,1106,28],{}," App369 is my studio. I build and fix apps, including maps and location features, and the last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,1109,1111],{"id":1110},"what-went-legacy-and-what-replaces-it","What went Legacy, and what replaces it",[36,1113,1114,1127],{},[39,1115,1116],{},[42,1117,1118,1121,1124],{},[45,1119,1120],{},"Legacy service",[45,1122,1123],{},"Legacy from (per Google)",[45,1125,1126],{},"New service",[55,1128,1129,1140,1150,1160,1170,1180,1190],{},[42,1130,1131,1134,1137],{},[60,1132,1133],{},"Places API",[60,1135,1136],{},"March 1, 2025",[60,1138,1139],{},"Places API (New)",[42,1141,1142,1145,1147],{},[60,1143,1144],{},"Maps JavaScript API Places Service",[60,1146,1136],{},[60,1148,1149],{},"Place class",[42,1151,1152,1155,1157],{},[60,1153,1154],{},"Places SDK for Android",[60,1156,1136],{},[60,1158,1159],{},"Places SDK for Android (New)",[42,1161,1162,1165,1167],{},[60,1163,1164],{},"Places SDK for iOS",[60,1166,1136],{},[60,1168,1169],{},"Places SDK for iOS (New)",[42,1171,1172,1175,1177],{},[60,1173,1174],{},"Directions API",[60,1176,1136],{},[60,1178,1179],{},"Routes API (computeRoutes)",[42,1181,1182,1185,1187],{},[60,1183,1184],{},"Distance Matrix API",[60,1186,1136],{},[60,1188,1189],{},"Routes API (computeRouteMatrix)",[42,1191,1192,1195,1197],{},[60,1193,1194],{},"Maps JavaScript Directions and Distance Matrix services",[60,1196,1136],{},[60,1198,1199],{},"Route and RouteMatrix classes",[14,1201,325,1202,1207],{},[69,1203,1206],{"href":1204,"rel":1205},"https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Flegacy",[73],"Google Maps Platform, Legacy products",", last updated October 16, 2026.",[130,1209,1211],{"id":1210},"what-legacy-means","What \"Legacy\" means",[14,1213,1214],{},"Google describes Legacy as an intermediate step between generally available and deprecated:",[138,1216,1217,1223,1229,1235],{},[141,1218,1219,1222],{},[17,1220,1221],{},"Not available in new Cloud projects."," This is what causes the error on a fresh project.",[141,1224,1225,1228],{},[17,1226,1227],{},"Fully supported for existing projects."," Existing projects can keep using it.",[141,1230,1231,1234],{},[17,1232,1233],{},"Feature frozen."," New features go only to the new services.",[141,1236,1237,1240],{},[17,1238,1239],{},"No turn-down date yet."," Google says it expects to turn Legacy services down in the coming years and will give at least 12 months of notice first.",[130,1242,133],{"id":132},[14,1244,136],{},[138,1246,1247,1255],{},[141,1248,1249,1252,1253,156],{},[17,1250,1251],{},"developers.google.com\u002Fplaces\u002Fandroid-sdk\u002Fintro",", the old Places SDK for Android start page, returned ",[17,1254,155],{},[141,1256,1257,1258,1261],{},"Older Places SDK and Places API migration links now redirect into Google's ",[17,1259,1260],{},"legacy"," documentation section.",[31,1263,1265],{"id":1264},"fixing-legacyapinotactivatedmaperror","Fixing LegacyApiNotActivatedMapError",[348,1267,1268,1297,1303,1326,1345,1351,1357],{},[141,1269,1270,355,1273,360,1276,360,1279,1282,1283,360,1286,525,1289,1292,1293,1296],{},[17,1271,1272],{},"Find which Legacy API is called.",[357,1274,1275],{},"maps.googleapis.com\u002Fmaps\u002Fapi\u002Fplace\u002F",[357,1277,1278],{},"maps\u002Fapi\u002Fdirections\u002F",[357,1280,1281],{},"maps\u002Fapi\u002Fdistancematrix\u002F",", the JavaScript ",[357,1284,1285],{},"PlacesService",[357,1287,1288],{},"DirectionsService",[357,1290,1291],{},"DistanceMatrixService",", and ",[357,1294,1295],{},"Places.initialize("," on Android. In a Flutter app, check which endpoints your places or directions package calls.",[141,1298,1299,1302],{},[17,1300,1301],{},"Enable the new API and add it to your key."," Google's Places migration guide says to enable Places API (New) in the Cloud project and add it to the API key your app uses. If you run both versions during the move, Google recommends a separate key for each.",[141,1304,1305,1308],{},[17,1306,1307],{},"Move Places calls to the new API.",[138,1309,1310,1316],{},[141,1311,1312,1315],{},[17,1313,1314],{},"Web service:"," Place Details (New), Nearby Search (New) and Text Search (New) require a field mask that lists the fields you want, return only JSON, and use a new response format.",[141,1317,1318,1321,1322,1325],{},[17,1319,1320],{},"Android:"," initialize with ",[357,1323,1324],{},"Places.initializeWithNewPlacesApiEnabled()",", and add field masks to the same three request types.",[141,1327,1328,1331,1332,1335,1336,1292,1339,1335,1341,1344],{},[17,1329,1330],{},"Move Directions and Distance Matrix to the Routes API."," Replace ",[357,1333,1334],{},"maps.googleapis.com\u002Fmaps\u002Fapi\u002Fdirections\u002F"," with ",[357,1337,1338],{},"routes.googleapis.com\u002Fdirections\u002Fv2:computeRoutes",[357,1340,1281],{},[357,1342,1343],{},"routes.googleapis.com\u002FdistanceMatrix\u002Fv2:computeRouteMatrix",". The parameters move from the URL into an HTTPS request body.",[141,1346,1347,1350],{},[17,1348,1349],{},"Request only the fields you show."," My advice: keep each field mask to what the screen actually uses. A wildcard is quicker to write, but you lose control of what each call returns and costs.",[141,1352,1353,1356],{},[17,1354,1355],{},"Check the price before you switch."," The new APIs use a new pricing model. Google's tip, for usage high enough to reach second-tier pricing: you're billed for a different SKU, so switch production close to the start of the month.",[141,1358,1359,1362],{},[17,1360,1361],{},"Keep the API key restricted."," My advice: restrict each key to the APIs it calls and to your app or domain, especially a key that ships inside a mobile app.",[130,1364,1366],{"id":1365},"if-an-ai-assistant-wrote-the-code","If an AI assistant wrote the code",[14,1368,1369],{},"Google's Legacy page warns that many AI coding assistants generate code for the Legacy APIs by default, and it publishes migration prompts for them. Code like that can work on an older project that still has the Legacy API enabled, then fail on a new one. Point the assistant at Google's migration guides, ask it to use the new API with field masks, and test on a brand-new Cloud project with no Legacy APIs enabled.",[31,1371,412],{"id":411},[14,1373,1374,1375,1377,1378,1380,1381,156],{},"If your app was built with Lovable, Bolt, Cursor or another AI tool and maps, places or routes stopped working, the ",[69,1376,424],{"href":423}," starts with a $450 Launch Check of the whole app in 3 business days. For one broken feature in an app you already maintain, the ",[69,1379,419],{"href":418}," 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. Or ",[69,1382,429],{"href":428},{"title":431,"searchDepth":432,"depth":432,"links":1384},[1385,1389,1392],{"id":1110,"depth":432,"text":1111,"children":1386},[1387,1388],{"id":1210,"depth":437,"text":1211},{"id":132,"depth":437,"text":133},{"id":1264,"depth":432,"text":1265,"children":1390},[1391],{"id":1365,"depth":437,"text":1366},{"id":411,"depth":432,"text":412},"2026-10-18T17:00:00.000Z","Google lists the Places API, Places SDKs, Directions API and Distance Matrix API as Legacy from March 1, 2025: not available in new Cloud projects, which is what triggers LegacyApiNotActivatedMapError. What Legacy means, how to fix the error, and how to move to Places API (New) and the Routes API, from Google's docs checked October 18, 2026.",[1396,1399,1402,1405,1408,1411],{"question":1397,"answer":1398},"What does LegacyApiNotActivatedMapError mean?","Google says it means your app is calling a Legacy API, such as the Places API (Legacy), the Directions API (Legacy) or the Distance Matrix API (Legacy), that isn't enabled on your Google Cloud project. Legacy APIs aren't available in new projects, so the fix is to call the new API instead: Places API (New) or the Routes API.",{"question":1400,"answer":1401},"Is the Google Places API deprecated?","It is Legacy, which Google describes as a step before deprecation. Since March 1, 2025 the Places API (Legacy) is feature frozen and not available in new Cloud projects. Existing projects can keep using it, and Google says it will give at least 12 months of notice before turning it down. It has not set a date yet.",{"question":1403,"answer":1404},"Can I still enable the legacy Places API?","Not in a new Cloud project. Google says Legacy services are not available in new projects and recommends keeping them disabled there. Existing projects can keep using Legacy services, according to Google. My advice: if an existing project can't, check that the Legacy API is still enabled and allowed on your key.",{"question":1406,"answer":1407},"What replaced the Directions API and Distance Matrix API?","The Routes API. Directions requests move to routes.googleapis.com\u002Fdirections\u002Fv2:computeRoutes and Distance Matrix requests to routes.googleapis.com\u002FdistanceMatrix\u002Fv2:computeRouteMatrix, with the parameters sent in an HTTPS request body instead of the URL.",{"question":1409,"answer":1410},"Why does my AI-built app get LegacyApiNotActivatedMapError?","Google says many AI coding assistants generate code for the Legacy APIs by default. If the app runs on a new Cloud project, those APIs aren't available, so the calls fail. Ask the assistant to migrate to Places API (New) or the Routes API, and check the result against Google's migration guides.",{"question":1412,"answer":1413},"Will the new Places API cost more?","It uses a new pricing model, so check the Google Maps Platform price list for the calls your app makes. Google also suggests that apps with usage high enough to reach second-tier pricing switch production traffic close to the start of a month, because the new API is billed under a different SKU.",{"readingTimeStats":1415},{"text":1416,"minutes":1417,"time":1418,"words":1419},"4 min read",3.88,232800,776,"\u002Fblog\u002Fgoogle-places-api-legacy-legacyapinotactivatedmaperror-2026",[479,481,1422],"google-url-shortener-goo-gl-shut-down-2026",{"title":1085,"description":1394},[1425,1427,1430,1433,1436],{"title":1426,"url":1204},"Google Maps Platform, Legacy products and features",{"title":1428,"url":1429},"Google Maps Platform, migrate to Places API (New)","https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Fplaces\u002Fweb-service\u002Flegacy\u002Fmigrate-overview",{"title":1431,"url":1432},"Google Maps Platform, migrate to Places SDK for Android (New)","https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Fplaces\u002Fandroid-sdk\u002Flegacy\u002Fmigrate-overview",{"title":1434,"url":1435},"Google Maps Platform, migrate from Directions API and Distance Matrix API to the Routes API","https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Froutes\u002Fmigrate-routes",{"title":1437,"url":1438},"Google Maps Platform, deprecations","https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdeprecations","blog\u002Fgoogle-places-api-legacy-legacyapinotactivatedmaperror-2026","LegacyApiNotActivatedMapError, places api legacy, places api new migration, places sdk for android new, directions api legacy, distance matrix api legacy, routes api migration, google maps legacy api, places api field mask",[1442,1443,1444,1445,1446],"On March 1, 2025, Google moved the Places API, the Places SDKs for Android and iOS, the Maps JavaScript Places Service, the Directions API and the Distance Matrix API to Legacy status.","Google says Legacy services are not available in new Cloud projects but remain fully supported for existing ones. They are feature frozen, and Google promises at least 12 months of notice before turning them down.","LegacyApiNotActivatedMapError means your app called a Legacy API that isn't enabled on your project. Google's advice is to keep Legacy APIs off on new projects and use the new API instead: Places API (New) or the Routes API.","Google warns that many AI coding assistants generate code for the Legacy APIs by default, so apps built with them can hit this error on a fresh project.","The move is a real code change: the new Places APIs require a field mask, return a different JSON format and use a new pricing model, and the Routes API uses new endpoints with a request body instead of URL parameters.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-places-api-legacy-legacyapinotactivatedmaperror-2026\u002F","2hL9z-p8xR68ul3LCOdZkRN_Y-5hVIZIdli9rJxF7_E",{"id":1450,"title":1451,"author":1452,"body":1454,"category":443,"createdAt":1833,"description":1834,"disclosure":446,"extension":447,"faq":1835,"howTo":446,"lastVerified":446,"location":467,"meta":1854,"navigation":474,"ogImage":446,"path":1859,"primaryKeyword":1860,"readingTime":1038,"related":1861,"seo":1865,"sources":1866,"stem":1883,"tags":1884,"takeaways":1885,"updatedAt":1833,"url":1891,"__hash__":1892},"blog\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026.md","Firebase Deprecations: Every Shutdown Date, 2024 to 2027",{"name":7,"social":1453},{"twitter":9},{"type":11,"value":1455,"toc":1821},[1456,1462,1465,1470,1474,1675,1679,1683,1686,1689,1693,1696,1699,1702,1734,1738,1741,1745,1754,1758,1761,1765,1810,1812],[14,1457,1458,1461],{},[17,1459,1460],{},"Firebase isn't shutting down, but seven of its products and APIs are being retired between 2024 and 2027, and five of the deadlines fall in 2027."," If your app uses Extensions, Firebase Studio, Firebase ML model hosting, Test Lab, device groups or the old FCM InstanceId APIs, you have a deadline. The table below lists each one with the date, what stops working and where Firebase says to move.",[14,1463,1464],{},"Every date here comes from Firebase's own documentation, linked in each row and in the sources. I checked each page on October 18, 2026. Google can change a deadline, so open the linked page before you plan around one.",[14,1466,1467,1469],{},[17,1468,28],{}," App369 is my studio. I build Flutter and Firebase apps, and I run my own product, Workspace369, on Firebase. The last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,1471,1473],{"id":1472},"every-firebase-shutdown-in-date-order","Every Firebase shutdown, in date order",[36,1475,1476,1494],{},[39,1477,1478],{},[42,1479,1480,1483,1486,1489,1492],{},[45,1481,1482],{},"Deadline",[45,1484,1485],{},"What is retired",[45,1487,1488],{},"What stops working",[45,1490,1491],{},"Move to",[45,1493,53],{},[55,1495,1496,1529,1555,1577,1599,1621,1653],{},[42,1497,1498,1505,1508,1515,1522],{},[60,1499,1500,1501,1504],{},"From ",[17,1502,1503],{},"July 22, 2024"," (done)",[60,1506,1507],{},"Legacy FCM HTTP and XMPP send APIs",[60,1509,1510,1511,1514],{},"Sending with a server key to ",[357,1512,1513],{},"fcm\u002Fsend",". Deprecated June 20, 2023",[60,1516,1517,1518],{},"FCM HTTP v1 API or the Admin SDK. ",[69,1519,1521],{"href":1520},"\u002Fblog\u002Ffcm-legacy-api-shutdown-http-v1-migration-2026\u002F","My guide",[60,1523,1524],{},[69,1525,1528],{"href":1526,"rel":1527},"https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20260108211426\u002Fhttps:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Fmigrate-v1",[73],"Firebase (archived)",[42,1530,1531,1536,1539,1542,1548],{},[60,1532,1533,1504],{},[17,1534,1535],{},"August 25, 2025",[60,1537,1538],{},"Firebase Dynamic Links",[60,1540,1541],{},"Dynamic Links, and email link sign-in that relied on them",[60,1543,1544,1545],{},"Your own deep links. For email link sign-in, Firebase Authentication Android SDK 23.2.0 or later (BoM 33.9.0 or later). ",[69,1546,1521],{"href":1547},"\u002Fblog\u002Ffirebase-dynamic-links-shutdown-deep-linking-2026\u002F",[60,1549,1550],{},[69,1551,1554],{"href":1552,"rel":1553},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fauth\u002Fandroid\u002Femail-link-migration",[73],"Firebase",[42,1556,1557,1562,1565,1568,1571],{},[60,1558,1559],{},[17,1560,1561],{},"March 22, 2027",[60,1563,1564],{},"Firebase Studio",[60,1566,1567],{},"Existing workspaces. New workspaces and signups already stopped on June 22, 2026",[60,1569,1570],{},"Google AI Studio, Google Antigravity, or an export of your source to another platform",[60,1572,1573],{},[69,1574,1554],{"href":1575,"rel":1576},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fstudio\u002Fmigrating-project",[73],[42,1578,1579,1584,1587,1590,1593],{},[60,1580,1581],{},[17,1582,1583],{},"March 31, 2027",[60,1585,1586],{},"Firebase Extensions",[60,1588,1589],{},"Updating, reconfiguring or uninstalling extensions, or downloading their configuration, through the console or CLI. Installed extensions keep running",[60,1591,1592],{},"Function kits on npm where the publisher offers one, or your own Cloud Functions (2nd gen)",[60,1594,1595],{},[69,1596,1554],{"href":1597,"rel":1598},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Ffaq-and-troubleshooting",[73],[42,1600,1601,1606,1609,1612,1615],{},[60,1602,1603],{},[17,1604,1605],{},"June 15, 2027",[60,1607,1608],{},"Firebase ML custom model hosting",[60,1610,1611],{},"Hosting and serving custom models through Firebase ML",[60,1613,1614],{},"Cloud Storage for Firebase, per Firebase's guide",[60,1616,1617],{},[69,1618,1554],{"href":1619,"rel":1620},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fml\u002Fmigrate-to-cloud-storage",[73],[42,1622,1623,1628,1631,1638,1647],{},[60,1624,1625],{},[17,1626,1627],{},"September 29, 2027",[60,1629,1630],{},"FCM InstanceId server APIs and device groups",[60,1632,1633,1634,1637],{},"Requests to ",[357,1635,1636],{},"iid.googleapis.com"," and device group management start failing. New users are blocked after January 1, 2027",[60,1639,1640,1641,1644,1645],{},"The FCM topic subscription API, HTTP v1 with ",[357,1642,1643],{},"validate_only",", and sends to individual tokens. ",[69,1646,1521],{"href":1520},[60,1648,1649],{},[69,1650,1554],{"href":1651,"rel":1652},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Ftroubleshooting#fcm-26-deprecation",[73],[42,1654,1655,1660,1663,1666,1669],{},[60,1656,1657],{},[17,1658,1659],{},"September 30, 2027",[60,1661,1662],{},"Firebase Test Lab",[60,1664,1665],{},"All of Test Lab",[60,1667,1668],{},"The Developer Device Platform on Google Cloud",[60,1670,1671],{},[69,1672,1554],{"href":1673,"rel":1674},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Ftest-lab",[73],[31,1676,1678],{"id":1677},"what-each-2027-deadline-means-in-practice","What each 2027 deadline means in practice",[130,1680,1682],{"id":1681},"firebase-studio-march-22-2027","Firebase Studio: March 22, 2027",[14,1684,1685],{},"Firebase Studio launched as a preview to explore AI-driven, full-stack app development. Firebase's migration page points to Google AI Studio, for rapid browser-based prototyping, and Google Antigravity, for code-first agentic work. You can keep working in an existing workspace until March 22, 2027. Any project you want to keep must be migrated before then, and Firebase's page has steps for both destinations and for exporting the source to anywhere else.",[14,1687,1688],{},"Your Firebase backend isn't affected. Firebase says Firestore, Authentication, App Hosting and your data keep working outside Firebase Studio. One thing to test after a move: Firebase's own FAQ has an entry about Google Sign-In not working after migrating to Google AI Studio, so check sign-in first.",[130,1690,1692],{"id":1691},"firebase-extensions-march-31-2027","Firebase Extensions: March 31, 2027",[14,1694,1695],{},"This one is easy to miss, because nothing breaks on the day. Firebase says installed extensions run on standard Google Cloud services (Cloud Functions, Eventarc, Cloud Run, Cloud Tasks) and keep executing. What you lose after March 31, 2027 is control: you can't change parameters or environment variables, apply fixes or security patches, uninstall through the console or CLI, or download the configuration to set up a replacement.",[14,1697,1698],{},"There's a second risk. Firebase notes that most extensions are built on the legacy Cloud Functions v1 SDK and older Node.js runtimes, and that functions may stop running or be disabled when Google Cloud retires those runtimes. So an extension you can't update may stop working once those runtimes are retired, and you won't be able to patch it.",[14,1700,1701],{},"Before March 31, 2027:",[348,1703,1704,1710,1716,1722],{},[141,1705,1706,1709],{},[17,1707,1708],{},"List what's installed."," In the Firebase console, open Extensions for each project, including staging and old projects.",[141,1711,1712,1715],{},[17,1713,1714],{},"Uninstall what you no longer use."," After the deadline the Uninstall button goes away, and you'd have to delete the underlying resources by hand.",[141,1717,1718,1721],{},[17,1719,1720],{},"Export the configuration of the rest."," You need the parameters to set up a replacement.",[141,1723,1724,1727,1728,1733],{},[17,1725,1726],{},"Replace each one."," Use the publisher's function kit on npm if there is one. If not, the extensions are open source, so a developer can rebuild one as Cloud Functions (2nd gen). Firebase's ",[69,1729,1732],{"href":1730,"rel":1731},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Fusers\u002Fmigrate",[73],"guide for users"," covers both.",[130,1735,1737],{"id":1736},"firebase-ml-model-hosting-june-15-2027","Firebase ML model hosting: June 15, 2027",[14,1739,1740],{},"This only matters if you host custom TensorFlow Lite models through Firebase ML. On-device ML Kit features are a separate product. Firebase's suggested route is to download your models and host them in Cloud Storage for Firebase, and its guide covers Android, Apple platforms and Flutter, plus an optional move to the LiteRT CompiledModel API.",[130,1742,1744],{"id":1743},"fcm-instanceid-apis-and-device-groups-september-29-2027","FCM InstanceId APIs and device groups: September 29, 2027",[14,1746,1747,1748,1750,1751,156],{},"If your server checks tokens with ",[357,1749,1636],{},", manages topic subscriptions through the old InstanceId endpoints, imports APNs tokens in bulk, or uses device groups, those calls start failing after September 29, 2027. If you manage topics through an older Firebase Admin SDK, you're affected too. I cover each case and the replacement in the ",[69,1752,1753],{"href":1520},"FCM guide",[130,1755,1757],{"id":1756},"test-lab-september-30-2027","Test Lab: September 30, 2027",[14,1759,1760],{},"Test Lab runs your Android and iOS tests on devices in Google's data centers. Firebase says it will be fully shut down on September 30, 2027, and points to the Developer Device Platform on Google Cloud, with a migration guide and FAQ linked from the Test Lab page. If Test Lab runs in your CI pipeline, budget time to move it and to compare device coverage and pricing before the deadline.",[31,1762,1764],{"id":1763},"a-one-hour-check-for-your-project","A one-hour check for your project",[348,1766,1767,1792,1798,1804],{},[141,1768,1769,1772,1773,360,1775,360,1778,360,1781,1784,1785,1788,1789,156],{},[17,1770,1771],{},"Search your code"," for ",[357,1774,1636],{},[357,1776,1777],{},"fcm.googleapis.com\u002Ffcm\u002F",[357,1779,1780],{},"page.link",[357,1782,1783],{},"firebase-ml-modeldownloader"," (or ",[357,1786,1787],{},"firebase_ml_model_downloader"," in Flutter), and ",[357,1790,1791],{},"gcloud firebase test",[141,1793,1794,1797],{},[17,1795,1796],{},"Open the Firebase console"," for every project you own and look at Extensions, Machine Learning, Test Lab and Studio.",[141,1799,1800,1803],{},[17,1801,1802],{},"Write down each deadline"," that applies, with the owner of the fix and a target date at least a month early.",[141,1805,1806,1809],{},[17,1807,1808],{},"Start with the earliest deadlines."," Of the 2027 ones, Studio and Extensions come first, in March.",[31,1811,412],{"id":411},[14,1813,1814,1815,1817,1818,1820],{},"If one of these migrations breaks something, such as pushes that stop arriving, a sign-in flow that fails after a move, or a Cloud Function that won't deploy, the ",[69,1816,419],{"href":418}," 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 you want help planning several migrations at once, ",[69,1819,429],{"href":428}," of your project.",{"title":431,"searchDepth":432,"depth":432,"links":1822},[1823,1824,1831,1832],{"id":1472,"depth":432,"text":1473},{"id":1677,"depth":432,"text":1678,"children":1825},[1826,1827,1828,1829,1830],{"id":1681,"depth":437,"text":1682},{"id":1691,"depth":437,"text":1692},{"id":1736,"depth":437,"text":1737},{"id":1743,"depth":437,"text":1744},{"id":1756,"depth":437,"text":1757},{"id":1763,"depth":432,"text":1764},{"id":411,"depth":432,"text":412},"2026-10-18T23:00:00.000Z","Every Firebase shutdown from 2024 to 2027 in one dated table: FCM legacy APIs, Dynamic Links, Firebase Studio, Extensions, Firebase ML model hosting, the FCM InstanceId APIs and Test Lab. What stops working, the deadline, and what to move to, from Firebase's own docs checked October 18, 2026.",[1836,1839,1842,1845,1848,1851],{"question":1837,"answer":1838},"Is Firebase shutting down?","No. Firebase is retiring some products and APIs, but core services such as Firestore, Authentication, Cloud Functions and Hosting are not on any shutdown list I found. Firebase says the Firebase Studio sunset doesn't affect Firestore, Authentication or App Hosting.",{"question":1840,"answer":1841},"What Firebase products are being deprecated in 2027?","Firebase Studio sunsets on March 22, 2027, Firebase Extensions shuts down on March 31, 2027, Firebase ML custom model hosting on June 15, 2027, the FCM InstanceId server APIs and device groups on September 29, 2027, and Test Lab on September 30, 2027.",{"question":1843,"answer":1844},"Will my Firebase Extensions stop working on March 31, 2027?","Not immediately. Firebase says already-deployed extensions keep running on Google Cloud infrastructure, but after March 31, 2027 you can't update, reconfigure or uninstall them through the Firebase console or CLI, or download their configuration. Firebase also warns that most extensions use the legacy Cloud Functions v1 SDK, which may stop running when older runtimes are decommissioned.",{"question":1846,"answer":1847},"What replaces Firebase Test Lab?","Firebase points Test Lab users to the Developer Device Platform on Google Cloud, with a migration guide and FAQ. Test Lab will be fully shut down on September 30, 2027.",{"question":1849,"answer":1850},"What happens to apps I built in Firebase Studio?","New workspaces and signups were disabled on June 22, 2026. You can keep working in existing workspaces until March 22, 2027, but you must migrate any project you want to keep before then. Firebase offers migration paths to Google AI Studio, Google Antigravity, or exporting the source to another platform.",{"question":1852,"answer":1853},"Where can I host custom ML models after Firebase ML?","Firebase suggests Cloud Storage for Firebase and has a guide for downloading your TensorFlow Lite models and uploading them there, with steps for Android, Apple platforms and Flutter. Firebase ML model hosting shuts down on June 15, 2027.",{"readingTimeStats":1855},{"text":470,"minutes":1856,"time":1857,"words":1858},5.255,315300,1051,"\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026","firebase deprecations",[1862,1863,1864],"fcm-legacy-api-shutdown-http-v1-migration-2026","firebase-dynamic-links-shutdown-deep-linking-2026","how-to-cut-your-firebase-bill-2026",{"title":1451,"description":1834},[1867,1869,1871,1873,1875,1877,1879,1881],{"title":1868,"url":1526},"Firebase, migrate from legacy FCM APIs to HTTP v1 (Wayback Machine copy, January 8, 2026)",{"title":1870,"url":1552},"Firebase, migrating email link sign-in off Dynamic Links (Android)",{"title":1872,"url":1575},"Firebase, Firebase Studio sunset and project migration",{"title":1874,"url":1597},"Firebase, Firebase Extensions deprecation FAQ",{"title":1876,"url":1730},"Firebase, migrate an extension to Cloud Functions as a user",{"title":1878,"url":1619},"Firebase, migrate custom models from Firebase ML to Cloud Storage",{"title":1880,"url":1651},"Firebase, FCM InstanceId API and device group deprecation (FAQ, announced September 2026)",{"title":1882,"url":1673},"Firebase, Test Lab (deprecation notice)","blog\u002Ffirebase-deprecations-shutdown-dates-2026","firebase deprecations, firebase shutdown dates, firebase extensions deprecated, firebase test lab shut down, firebase studio sunset, firebase ml model hosting shut down, firebase dynamic links shutdown, fcm legacy api shutdown, firebase deprecation 2027, firebase migration checklist",[1886,1887,1888,1889,1890],"Five Firebase deadlines fall between March and September 2027: Firebase Studio (March 22), Extensions (March 31), Firebase ML model hosting (June 15), the FCM InstanceId APIs and device groups (September 29) and Test Lab (September 30).","Two shutdowns have already happened: sending through the legacy FCM APIs, from July 22, 2024, and Firebase Dynamic Links, on August 25, 2025.","Core services such as Firestore, Authentication, Cloud Functions and Hosting are not on the list, and Firebase says the Studio sunset doesn't affect Firestore, Authentication or App Hosting.","Installed Firebase Extensions keep running after March 31, 2027, but you can no longer update, reconfigure or uninstall them through Firebase, so migrate or uninstall them before then.","Every date here comes from Firebase's own documentation, checked on October 18, 2026. Deadlines can move, so check the linked page before you plan around one.","https:\u002F\u002Fapp369.com\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026\u002F","BpHAcwqYVytb8j5WzV2iLR9VQxaMgK0HS82seK6p2zU",[1894,1896,1898,1902,1906,1910],{"keyword":5,"url":506,"title":5,"relevance":1895},75,{"keyword":511,"url":1081,"title":511,"relevance":1897},13,{"keyword":1899,"url":1900,"title":1899,"relevance":1901},"Flutter vs Native in 2026: An Honest Decision Guide","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-vs-native-app-development-2026\u002F",9,{"keyword":1903,"url":1904,"title":1903,"relevance":1905},"Flutter vs React Native: Which Is Best?","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-vs-react-native-app369-choice\u002F",8,{"keyword":1907,"url":1908,"title":1907,"relevance":1909},"SafetyNet Is Gone: Moving to Play Integrity and App Check","https:\u002F\u002Fapp369.com\u002Fblog\u002Fsafetynet-shut-down-play-integrity-app-check-2026\u002F",7,{"keyword":1911,"url":1912,"title":1911,"relevance":1909},"goo.gl Shut Down: Which Google Short Links Still Work in 2026","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-url-shortener-goo-gl-shut-down-2026\u002F",1792337835356]