[{"data":1,"prerenderedAt":2058},["ShallowReactive",2],{"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F":3,"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F-related":732,"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F-resources":2039},{"id":4,"title":5,"author":6,"body":10,"category":654,"createdAt":655,"description":656,"disclosure":657,"extension":658,"faq":659,"howTo":657,"lastVerified":657,"location":675,"meta":676,"navigation":682,"ogImage":657,"path":683,"primaryKeyword":684,"readingTime":685,"related":686,"seo":690,"sources":691,"stem":722,"tags":723,"takeaways":724,"updatedAt":655,"url":730,"__hash__":731},"blog\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027.md","App Store and Google Play Deadlines for 2026 and 2027",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":644},"minimark",[13,21,24,30,35,542,554,557,570,573,577,594,597,601,615,618,622,629,633],[14,15,16,20],"p",{},[17,18,19],"strong",{},"The App Store and Google Play requirements that affect mobile app owners in 2026 and 2027 fit in one table: Xcode 26 uploads since April 28, 2026, target API 36 and Play Billing Library 8 since August 31, 2026, 16 KB page size support from February 1, 2027, and five Firebase shutdowns between March 22 and September 30, 2027."," The table below is sorted by date, and every row links to the page where the platform states it.",[14,22,23],{},"I checked each one on October 18, 2026. Rows whose date has passed are marked \"In effect\".",[14,25,26,29],{},[17,27,28],{},"Disclosure:"," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Apple and Google don't pay me for anything on this page.",[31,32,34],"h2",{"id":33},"all-dates-in-order","All dates, in order",[36,37,38,60],"table",{},[39,40,41],"thead",{},[42,43,44,48,51,54,57],"tr",{},[45,46,47],"th",{},"Date",[45,49,50],{},"What changes",[45,52,53],{},"Status",[45,55,56],{},"Source",[45,58,59],{},"My guide",[61,62,63,90,113,139,163,182,212,237,264,289,315,337,363,387,408,432,454,476,499,520],"tbody",{},[42,64,65,69,75,78,87],{},[66,67,68],"td",{},"January 31, 2026",[66,70,71,74],{},[17,72,73],{},"Apple."," Apple asked developers to answer the updated age rating questions in App Store Connect by this date, to avoid an interruption when submitting app updates. Affects: every app on the App Store.",[66,76,77],{},"In effect",[66,79,80],{},[81,82,86],"a",{"href":83,"rel":84},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Fupcoming-requirements\u002F",[85],"nofollow","Apple",[66,88,89],{},"None",[42,91,92,95,100,102,107],{},[66,93,94],{},"April 28, 2026",[66,96,97,99],{},[17,98,73],{}," Uploads to App Store Connect must be built with Xcode 26 or later, using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. Affects: anyone uploading a build, including Flutter apps.",[66,101,77],{},[66,103,104],{},[81,105,86],{"href":83,"rel":106},[85],[66,108,109],{},[81,110,112],{"href":111},"\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026\u002F","ITMS-90725 and Xcode 26",[42,114,115,118,124,126,133],{},[66,116,117],{},"August 31, 2026",[66,119,120,123],{},[17,121,122],{},"Google Play."," New apps and app updates must target Android 16 (API level 36) or higher. Wear OS and Android Automotive OS apps need API 35, and Android XR apps need API 34. Affects: anyone publishing a new app or an update.",[66,125,77],{},[66,127,128],{},[81,129,132],{"href":130,"rel":131},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F11926878",[85],"Play Console Help",[66,134,135],{},[81,136,138],{"href":137},"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","Target API 36",[42,140,141,143,148,150,157],{},[66,142,117],{},[66,144,145,147],{},[17,146,122],{}," New apps and updates must use Play Billing Library 8 or later. Version 7 is no longer accepted by default. Affects: apps with in-app purchases or subscriptions.",[66,149,77],{},[66,151,152],{},[81,153,156],{"href":154,"rel":155},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Fdeprecation-faq",[85],"Android Developers",[66,158,159],{},[81,160,162],{"href":161},"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","Billing Library 8",[42,164,165,168,173,175,180],{},[66,166,167],{},"September 9, 2026",[66,169,170,172],{},[17,171,73],{}," iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later. Affects: anyone uploading an iOS or iPadOS build.",[66,174,77],{},[66,176,177],{},[81,178,86],{"href":83,"rel":179},[85],[66,181,89],{},[42,183,184,187,192,194,206],{},[66,185,186],{},"September 14, 2026",[66,188,189,191],{},[17,190,73],{}," Xcode 27 was released. Flutter's docs say Apple mandates the UIScene life cycle for UIKit apps built with the iOS 27 SDK, and that Flutter apps built with Xcode 27 without it fail to launch. Affects: anyone building with Xcode 27, including Flutter apps with a custom AppDelegate.",[66,193,77],{},[66,195,196,201,202],{},[81,197,200],{"href":198,"rel":199},"https:\u002F\u002Fdocs.flutter.dev\u002Frelease\u002Fbreaking-changes\u002Fuiscenedelegate",[85],"Flutter docs",", ",[81,203,86],{"href":204,"rel":205},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Freleases\u002F",[85],[66,207,208],{},[81,209,211],{"href":210},"\u002Fblog\u002Fflutter-uiscene-migration-xcode-27-app-wont-launch-2026\u002F","UIScene migration",[42,213,214,217,223,225,231],{},[66,215,216],{},"September 30, 2026",[66,218,219,222],{},[17,220,221],{},"Google Play \u002F Android."," Developer verification protections begin for apps installed from participating stores in Brazil, Indonesia, Singapore and Thailand on certified devices running Android 7 or higher. Affects: anyone distributing Android apps.",[66,224,77],{},[66,226,227],{},[81,228,156],{"href":229,"rel":230},"https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification",[85],[66,232,233],{},[81,234,236],{"href":235},"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F","Developer verification",[42,238,239,242,248,251,258],{},[66,240,241],{},"October 30, 2026",[66,243,244,247],{},[17,245,246],{},"Google APIs."," Google says the legacy Fitbit Web API will be turned off and will no longer function or sync data. Support already ended on September 30, 2026. Affects: apps that read Fitbit data through the Fitbit Web API.",[66,249,250],{},"Upcoming",[66,252,253],{},[81,254,257],{"href":255,"rel":256},"https:\u002F\u002Fdevelopers.google.com\u002Fhealth",[85],"Google Health API",[66,259,260],{},[81,261,263],{"href":262},"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F","Google Fit to Health Connect",[42,265,266,268,274,276,283],{},[66,267,241],{},[66,269,270,273],{},[17,271,272],{},"Supabase."," New tables in the public schema stop getting automatic Data API access in existing projects, so they need an explicit grant. Affects: apps with a Supabase backend.",[66,275,250],{},[66,277,278],{},[81,279,282],{"href":280,"rel":281},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F45329-breaking-change-tables-not-exposed-to-data-and-graphql-api-automatically",[85],"Supabase",[66,284,285],{},[81,286,288],{"href":287},"\u002Fblog\u002Fsupabase-permission-denied-new-tables-october-30-2026\u002F","Supabase permission denied",[42,290,291,294,299,301,309],{},[66,292,293],{},"November 1, 2026",[66,295,296,298],{},[17,297,122],{}," End of the extension Google offers for the target API 36 and Billing Library 7 deadlines. Affects: anyone who requested an extension.",[66,300,250],{},[66,302,303,201,306],{},[81,304,132],{"href":130,"rel":305},[85],[81,307,156],{"href":154,"rel":308},[85],[66,310,311,201,313],{},[81,312,138],{"href":137},[81,314,162],{"href":161},[42,316,317,320,325,327,333],{},[66,318,319],{},"End of 2026",[66,321,322,324],{},[17,323,246],{}," The Google Fit APIs, including the REST API, are supported only until the end of 2026. Affects: apps that read fitness data through Google Fit.",[66,326,250],{},[66,328,329],{},[81,330,156],{"href":331,"rel":332},"https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect\u002Fmigration\u002Ffit",[85],[66,334,335],{},[81,336,263],{"href":262},[42,338,339,342,348,350,357],{},[66,340,341],{},"January 1, 2027",[66,343,344,347],{},[17,345,346],{},"Firebase."," New users can no longer start using the FCM InstanceId server APIs and device groups. Firebase says new users can onboard before this date. Affects: new integrations that use those APIs.",[66,349,250],{},[66,351,352],{},[81,353,356],{"href":354,"rel":355},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Ftroubleshooting",[85],"Firebase",[66,358,359],{},[81,360,362],{"href":361},"\u002Fblog\u002Ffcm-legacy-api-shutdown-http-v1-migration-2026\u002F","FCM migration",[42,364,365,368,373,375,381],{},[66,366,367],{},"February 1, 2027",[66,369,370,372],{},[17,371,122],{}," Updates that don't support 16 KB memory page sizes can't be released, for apps targeting Android 15 (API level 35) and higher. Affects: apps with native code, which includes Flutter apps.",[66,374,250],{},[66,376,377],{},[81,378,156],{"href":379,"rel":380},"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fpractices\u002Fpage-sizes",[85],[66,382,383],{},[81,384,386],{"href":385},"\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F","16 KB page size",[42,388,389,392,397,399,404],{},[66,390,391],{},"2027 (no month stated)",[66,393,394,396],{},[17,395,221],{}," Developer verification capability expands globally for all apps on certified Android devices. Affects: anyone distributing Android apps.",[66,398,250],{},[66,400,401],{},[81,402,156],{"href":229,"rel":403},[85],[66,405,406],{},[81,407,236],{"href":235},[42,409,410,413,418,420,426],{},[66,411,412],{},"March 22, 2027",[66,414,415,417],{},[17,416,346],{}," Firebase Studio shuts down and remaining data is permanently deleted. Affects: anyone with a Firebase Studio workspace.",[66,419,250],{},[66,421,422],{},[81,423,356],{"href":424,"rel":425},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fstudio\u002Fmigrating-project",[85],[66,427,428],{},[81,429,431],{"href":430},"\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026\u002F","Firebase shutdown dates",[42,433,434,437,442,444,450],{},[66,435,436],{},"March 31, 2027",[66,438,439,441],{},[17,440,346],{}," Firebase Extensions service shuts down. Installed extensions keep running, but you lose the ability to update, reconfigure or uninstall them through the console or CLI. Affects: apps with installed extensions.",[66,443,250],{},[66,445,446],{},[81,447,356],{"href":448,"rel":449},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Ffaq-and-troubleshooting",[85],[66,451,452],{},[81,453,431],{"href":430},[42,455,456,459,464,466,472],{},[66,457,458],{},"June 15, 2027",[66,460,461,463],{},[17,462,346],{}," Firebase ML custom model hosting shuts down. Affects: apps that host custom models in Firebase ML.",[66,465,250],{},[66,467,468],{},[81,469,356],{"href":470,"rel":471},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fml\u002Fmigrate-to-cloud-storage",[85],[66,473,474],{},[81,475,431],{"href":430},[42,477,478,481,486,488,493],{},[66,479,480],{},"August 31, 2027",[66,482,483,485],{},[17,484,122],{}," Billing Library 8 reaches its own deadline. New apps and updates must use Billing Library 9 or later. Extension available until November 1, 2027. Affects: apps with in-app purchases or subscriptions.",[66,487,250],{},[66,489,490],{},[81,491,156],{"href":154,"rel":492},[85],[66,494,495],{},[81,496,498],{"href":497},"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F","Billing Library 9",[42,500,501,504,509,511,516],{},[66,502,503],{},"September 29, 2027",[66,505,506,508],{},[17,507,346],{}," The FCM InstanceId server APIs and device groups are decommissioned. Affects: servers that manage topics or tokens through the old APIs.",[66,510,250],{},[66,512,513],{},[81,514,356],{"href":354,"rel":515},[85],[66,517,518],{},[81,519,362],{"href":361},[42,521,522,525,530,532,538],{},[66,523,524],{},"September 30, 2027",[66,526,527,529],{},[17,528,346],{}," Firebase Test Lab is fully shut down. Affects: CI pipelines that run tests on Test Lab.",[66,531,250],{},[66,533,534],{},[81,535,356],{"href":536,"rel":537},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Ftest-lab",[85],[66,539,540],{},[81,541,431],{"href":430},[14,543,544,545,549,550,553],{},"Two more notes. Apple's privacy manifest rules (May 1, 2024 for required reason APIs and February 12, 2025 for common SDKs, see the ",[81,546,548],{"href":547},"\u002Fblog\u002Fapple-privacy-manifest-itms-91053-itms-91061-flutter-fix-2026\u002F","privacy manifest guide",") and the FCM legacy send shutdown (July 22, 2024, see the ",[81,551,552],{"href":361},"FCM migration guide",") already passed before 2026. I keep them in their own guides because they still cause upload and delivery errors.",[31,555,86],{"id":556},"apple",[14,558,559,560,201,562,565,566,569],{},"Apple's page names one build rule that matters most: Xcode 26 or later since April 28, 2026. As of October 18, 2026, it lists no Xcode 27 upload requirement. The bigger change with Xcode 27 is the UIScene life cycle, which a Flutter app on 3.41 or later with an unmodified AppDelegate gets automatically. A custom AppDelegate needs manual changes. The guides are ",[81,561,112],{"href":111},[81,563,564],{"href":210},"UIScene and Xcode 27"," and ",[81,567,568],{"href":547},"privacy manifest errors",".",[14,571,572],{},"My advice: check which Xcode your build machine uses before your next upload, and test a build with Xcode 27 before you need one.",[31,574,576],{"id":575},"google-play-and-android","Google Play and Android",[14,578,579,580,583,584,201,587,201,589,565,591,569],{},"The Play rules come in pairs. Target API 36 and Billing Library 8 both took effect on August 31, 2026 with an extension to November 1, 2026. After that, February 1, 2027 brings the 16 KB page size rule, and on August 31, 2027 Google requires Billing Library 9 or later for new apps and updates. The ",[81,581,582],{"href":497},"Billing Library 9 guide"," covers that move. Separately, Android developer verification started on September 30, 2026 in four countries, with a global expansion in 2027. The guides are ",[81,585,586],{"href":137},"target API 36",[81,588,386],{"href":385},[81,590,162],{"href":161},[81,592,593],{"href":235},"developer verification",[14,595,596],{},"My advice: if you are still behind on API 36 or Billing 8, ship that update before November 1, 2026. Then do the 16 KB check before February 1, 2027, since it is the next date that can block a release.",[31,598,600],{"id":599},"firebase-and-google-apis","Firebase and Google APIs",[14,602,603,604,201,606,201,609,611,612,569],{},"Firebase has five shutdown dates in 2027, plus the January 1 cutoff for new users of the InstanceId APIs. Firestore, Authentication, Cloud Functions and Hosting are not on the list. Google Fit APIs are supported only until the end of 2026, and Google points to Health Connect and the Google Health API. The legacy Fitbit Web API goes first: Google says it will be turned off on October 30, 2026. The guides are ",[81,605,431],{"href":430},[81,607,608],{"href":361},"FCM HTTP v1 migration",[81,610,263],{"href":262}," and, if you use it, ",[81,613,614],{"href":287},"Supabase new table permissions",[14,616,617],{},"My advice: open the Firebase console for every project you own and look at Extensions, Machine Learning, Test Lab and Studio. Those are the products with a date attached.",[31,619,621],{"id":620},"how-i-keep-this-page-current","How I keep this page current",[14,623,624,625,569],{},"Every row links to the page where the platform states the date. If a source says only a month or \"later this year\", I write exactly that. When a platform moves a date, I change the row and the updated date at the top of this page. If you spot a date that looks wrong, ",[81,626,628],{"href":627},"\u002Fcontact\u002F","tell me",[31,630,632],{"id":631},"need-a-hand","Need a hand?",[14,634,635,636,640,641,569],{},"If one of these deadlines lands on an app you can't update yourself, the ",[81,637,639],{"href":638},"\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 ",[81,642,643],{"href":627},"send me a short description",{"title":645,"searchDepth":646,"depth":646,"links":647},"",2,[648,649,650,651,652,653],{"id":33,"depth":646,"text":34},{"id":556,"depth":646,"text":86},{"id":575,"depth":646,"text":576},{"id":599,"depth":646,"text":600},{"id":620,"depth":646,"text":621},{"id":631,"depth":646,"text":632},"AI & Technology","2026-10-18T22:00:00.000Z","One dated table of the App Store, Google Play, Firebase and Google API requirements that affect mobile app owners in 2026 and 2027, with the primary source for each date, checked October 18, 2026.",null,"md",[660,663,666,669,672],{"question":661,"answer":662},"What is the next Google Play deadline?","The deadline of November 1, 2026 is the end of the extension window for the target API 36 and Billing Library 7 deadlines. After that, the next one is February 1, 2027, when Google says app updates that don't support 16 KB memory page sizes can't be released.",{"question":664,"answer":665},"What Xcode version does the App Store require?","Apple's upcoming requirements page says that since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. As of October 18, 2026, the page lists no Xcode 27 requirement.",{"question":667,"answer":668},"Do these deadlines apply to apps already published?","It depends on the rule. Google says existing apps must target API 35 or higher to stay available to new users on newer Android versions, and existing apps keep working on version 7 of Play Billing until you ship an update. Most upload-side rules, such as the Xcode SDK minimum, apply when you submit a new build.",{"question":670,"answer":671},"Which deadlines affect a Flutter app?","Nearly all of the Apple and Google Play rows do, because a Flutter app is a normal iOS and Android app underneath. The Firebase rows apply only if you use that Firebase product. The Supabase row applies only if you use Supabase.",{"question":673,"answer":674},"How will I know if a date changes?","Each row links to the page where the platform states the date, and I list the date I checked it. Dates can move, so check the linked page before you plan around one. I update this page when a platform changes a date.","Boynton Beach, FL",{"readingTimeStats":677},{"text":678,"minutes":679,"time":680,"words":681},"7 min read",6.78,406800,1356,true,"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027","app store deadlines 2026","6 min",[687,688,689],"google-play-target-api-36-android-16-requirement-2026","itms-90725-sdk-version-issue-xcode-26-flutter-2026","firebase-deprecations-shutdown-dates-2026",{"title":5,"description":656},[692,694,696,698,700,702,704,706,708,710,712,714,716,718,720],{"title":693,"url":255},"Google for Developers, Google Health API (Fitbit Web API dates)",{"title":695,"url":83},"Apple Developer, Upcoming requirements",{"title":697,"url":204},"Apple Developer, Releases",{"title":699,"url":198},"Flutter docs, Migrate to UIScene life cycle",{"title":701,"url":130},"Play Console Help, Target API level requirements for Google Play apps",{"title":703,"url":154},"Android Developers, Play Billing Library deprecation FAQ",{"title":705,"url":379},"Android Developers, Support 16 KB page sizes",{"title":707,"url":229},"Android Developers, Android developer verification",{"title":709,"url":331},"Android Developers, Migrate from the Google Fit APIs",{"title":711,"url":354},"Firebase, FCM troubleshooting (InstanceId and device groups deprecation)",{"title":713,"url":424},"Firebase, Migrate from Firebase Studio",{"title":715,"url":448},"Firebase, Extensions FAQ and troubleshooting",{"title":717,"url":470},"Firebase, Migrate Firebase ML model hosting to Cloud Storage",{"title":719,"url":536},"Firebase, Test Lab",{"title":721,"url":280},"Supabase changelog, Tables not exposed to the Data API automatically","blog\u002Fapp-store-google-play-deadlines-2026-2027","app store deadlines 2026, google play deadlines 2026, app store requirements 2027, google play requirements 2027, target api 36 deadline, play billing library 8 deadline, 16 kb page size deadline, xcode 26 requirement, firebase shutdown dates, mobile app compliance calendar",[725,726,727,728,729],"Most 2026 deadlines have already hit. Since April 28, 2026 iOS uploads need Xcode 26 or later, and since August 31, 2026 Google Play needs new apps and updates to target API 36 and use Play Billing Library 8.","Google lets you request an extension for both Play deadlines until November 1, 2026. That is the last date to ship an update if you are still behind.","The next hard date for Android is February 1, 2027. Google says updates that don't support 16 KB memory page sizes can't be released after that.","On iOS, apps built with Xcode 27 must use the UIScene life cycle or they fail to launch. Xcode 27 was released on September 14, 2026.","Firebase has five shutdowns between March 22 and September 30, 2027. Core services such as Firestore and Authentication are not on the list.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","MYeTO5m40wBRGJyTgC2wryLvKtJYvopYTF8bLvA-JEo",[733,1203,1600],{"id":734,"title":735,"author":736,"body":738,"category":654,"createdAt":1144,"description":1145,"disclosure":657,"extension":658,"faq":1146,"howTo":657,"lastVerified":657,"location":675,"meta":1162,"navigation":682,"ogImage":657,"path":1168,"primaryKeyword":1169,"readingTime":1170,"related":1171,"seo":1175,"sources":1176,"stem":1193,"tags":1194,"takeaways":1195,"updatedAt":1144,"url":1201,"__hash__":1202},"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":737},{"twitter":9},{"type":11,"value":739,"toc":1137},[740,751,754,759,763,803,812,815,837,841,850,924,931,935,954,998,1001,1004,1067,1084,1088,1091,1121,1128,1130],[14,741,742,745,746,750],{},[17,743,744],{},"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 ",[747,748,749],"code",{},"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,752,753],{},"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,755,756,758],{},[17,757,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,760,762],{"id":761},"the-requirement","The requirement",[36,764,765,775],{},[39,766,767],{},[42,768,769,772],{},[45,770,771],{},"App type",[45,773,774],{},"Must target, for new apps and updates from August 31, 2026",[61,776,777,787,795],{},[42,778,779,782],{},[66,780,781],{},"Phone and tablet apps",[66,783,784],{},[17,785,786],{},"Android 16 (API level 36)",[42,788,789,792],{},[66,790,791],{},"Wear OS and Android Automotive OS",[66,793,794],{},"Android 15 (API level 35)",[42,796,797,800],{},[66,798,799],{},"Android TV and Android XR",[66,801,802],{},"Android 14 (API level 34)",[14,804,805,806,811],{},"Source: ",[81,807,810],{"href":808,"rel":809},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Frequirements\u002Ftarget-sdk",[85],"Google Play target API level requirement",", last updated October 16, 2026.",[14,813,814],{},"Google's page also says:",[816,817,818,825,831],"ul",{},[819,820,821,824],"li",{},[17,822,823],{},"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.",[819,826,827,830],{},[17,828,829],{},"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.",[819,832,833,836],{},[17,834,835],{},"Exception:"," permanently private apps for one organization's internal use.",[31,838,840],{"id":839},"what-changes-when-you-target-api-36","What changes when you target API 36",[14,842,843,844,849],{},"Google's ",[81,845,848],{"href":846,"rel":847},"https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F16\u002Fbehavior-changes-16",[85],"Android 16 behavior changes"," apply to apps that target API 36 and run on Android 16 or higher. These are the three I'd test first:",[36,851,852,865],{},[39,853,854],{},[42,855,856,859,862],{},[45,857,858],{},"Change",[45,860,861],{},"What Google says",[45,863,864],{},"Temporary way out",[61,866,867,884,908],{},[42,868,869,874,881],{},[66,870,871],{},[17,872,873],{},"Edge-to-edge",[66,875,876,877,880],{},"Apps can no longer opt out of drawing behind the status and navigation bars. ",[747,878,879],{},"windowOptOutEdgeToEdgeEnforcement"," is deprecated and disabled",[66,882,883],{},"None for API 36",[42,885,886,891,902],{},[66,887,888],{},[17,889,890],{},"Predictive back",[66,892,893,894,897,898,901],{},"Predictive back animations are on by default. ",[747,895,896],{},"onBackPressed"," is not called and ",[747,899,900],{},"KEYCODE_BACK"," is not dispatched",[66,903,904,907],{},[747,905,906],{},"android:enableOnBackInvokedCallback=\"false\""," in the manifest",[42,909,910,915,918],{},[66,911,912],{},[17,913,914],{},"Large screens",[66,916,917],{},"On displays at least 600dp wide, orientation, resizability and aspect ratio restrictions are ignored, so the app fills the window",[66,919,920,923],{},[747,921,922],{},"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY",". Google says it won't apply once you target API 37",[14,925,926,927,930],{},"The large-screen rule doesn't apply to games (based on ",[747,928,929],{},"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,932,934],{"id":933},"flutter-apps","Flutter apps",[14,936,937,938,941,942,945,946,949,950,953],{},"Flutter's project template sets the target from the Flutter version: ",[747,939,940],{},"targetSdk = flutter.targetSdkVersion"," in ",[747,943,944],{},"android\u002Fapp\u002Fbuild.gradle.kts"," in Flutter 3.35's template, and ",[747,947,948],{},"targetSdkVersion flutter.targetSdkVersion"," in older Groovy templates such as Flutter 3.10's. Flutter's ",[747,951,952],{},"FlutterExtension"," source sets it to:",[36,955,956,969],{},[39,957,958],{},[42,959,960,963],{},[45,961,962],{},"Flutter version",[45,964,965,966],{},"Default ",[747,967,968],{},"flutter.targetSdkVersion",[61,970,971,979,986],{},[42,972,973,976],{},[66,974,975],{},"3.29 (February 12, 2025)",[66,977,978],{},"35",[42,980,981,984],{},[66,982,983],{},"3.32 (May 20, 2025)",[66,985,978],{},[42,987,988,993],{},[66,989,990],{},[17,991,992],{},"3.35 (August 14, 2025) and later",[66,994,995],{},[17,996,997],{},"36",[14,999,1000],{},"Release dates from Flutter's release archive.",[14,1002,1003],{},"What that means for a Flutter app:",[1005,1006,1007,1030,1044,1057],"ol",{},[819,1008,1009,1019,1020,1022,1023,1026,1027,1029],{},[17,1010,1011,1012,1015,1016,569],{},"Check ",[747,1013,1014],{},"android\u002Fapp\u002Fbuild.gradle"," or ",[747,1017,1018],{},"build.gradle.kts"," If it uses ",[747,1021,968],{},", Flutter 3.35 or later gives you 36. If it has a hard-coded number, change it to 36 yourself (",[747,1024,1025],{},"targetSdk = 36"," in a ",[747,1028,1018],{}," file).",[819,1031,1032,1035,1036,1039,1040,1043],{},[17,1033,1034],{},"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 ",[747,1037,1038],{},"SafeArea"," or padding from ",[747,1041,1042],{},"MediaQuery",", including bottom sheets and screens with a bottom bar.",[819,1045,1046,1049,1050,1052,1053,1056],{},[17,1047,1048],{},"Back navigation."," If the app or a plugin overrides ",[747,1051,896],{}," in Android code, that override won't be called on Android 16. My advice: use ",[747,1054,1055],{},"PopScope"," on the Flutter side for back handling, and check plugins that intercept back.",[819,1058,1059,1062,1063,1066],{},[17,1060,1061],{},"Tablets."," If the app locks orientation with ",[747,1064,1065],{},"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,1068,1069,1070,1074,1075,1079,1080,1083],{},"If an older app can't move to Flutter 3.35 because the Android build breaks first, the ",[81,1071,1073],{"href":1072},"\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F","v1 embedding fix"," and the ",[81,1076,1078],{"href":1077},"\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 ",[81,1081,1082],{"href":161},"Billing Library 8 deadline"," is due at the same time.",[31,1085,1087],{"id":1086},"what-to-do-now","What to do now",[14,1089,1090],{},"This section is my advice, not Google's.",[1005,1092,1093,1103,1109,1115],{},[819,1094,1095,1098,1099,1102],{},[17,1096,1097],{},"Check the target your last release used."," Look at ",[747,1100,1101],{},"targetSdk"," in the build file for that release, or the app bundle details in Play Console.",[819,1104,1105,1108],{},[17,1106,1107],{},"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.",[819,1110,1111,1114],{},[17,1112,1113],{},"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.",[819,1116,1117,1120],{},[17,1118,1119],{},"Ship to a closed testing track first."," Catch layout and back-gesture issues before your users do.",[14,1122,1123,1124,569],{},"For every other dated Apple, Google Play and Firebase requirement in 2026 and 2027, see ",[81,1125,1127],{"href":1126},"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","App Store and Google Play deadlines for 2026 and 2027",[31,1129,632],{"id":631},[14,1131,1132,1133,640,1135,569],{},"If an app can't ship an update because of the target API requirement, or something broke after raising it, the ",[81,1134,639],{"href":638},[81,1136,643],{"href":627},{"title":645,"searchDepth":646,"depth":646,"links":1138},[1139,1140,1141,1142,1143],{"id":761,"depth":646,"text":762},{"id":839,"depth":646,"text":840},{"id":933,"depth":646,"text":934},{"id":1086,"depth":646,"text":1087},{"id":631,"depth":646,"text":632},"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.",[1147,1150,1153,1156,1159],{"question":1148,"answer":1149},"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":1151,"answer":1152},"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":1154,"answer":1155},"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":1157,"answer":1158},"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":1160,"answer":1161},"Can I still lock my app to portrait on tablets?","Not by default. Google says that for apps targeting API 36, orientation, resizability and aspect ratio restrictions don't apply on displays at least 600dp wide, except for games and when users opt in. A temporary manifest opt-out exists, but Google says it won't apply once you target API 37.",{"readingTimeStats":1163},{"text":1164,"minutes":1165,"time":1166,"words":1167},"5 min read",4.265,255900,853,"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36","7 min",[1172,1173,1174],"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":735,"description":1145},[1177,1179,1181,1184,1187,1190],{"title":1178,"url":808},"Android Developers, Meet Google Play's target API level requirement (last updated October 16, 2026)",{"title":1180,"url":846},"Android Developers, Behavior changes: apps targeting Android 16 or higher (last updated October 16, 2026)",{"title":1182,"url":1183},"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":1185,"url":1186},"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":1188,"url":1189},"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":1191,"url":1192},"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",[1196,1197,1198,1199,1200],"Since August 31, 2026, Google Play requires new apps and app updates to target Android 16 (API level 36). Wear OS and Android Automotive OS apps need API 35, and Android TV and Android XR apps need API 34.","Google says you'll be able to request an extension to November 1, 2026, and that the extension forms will be in Play Console.","Existing apps must target API 35 or higher to stay available to new users on devices running a newer Android version than the app targets.","Targeting API 36 changes behavior on Android 16 devices: apps can no longer opt out of edge-to-edge, predictive back is on by default and onBackPressed is no longer called, and orientation and resizability limits are ignored on screens at least 600dp wide.","Flutter 3.35 and later set flutter.targetSdkVersion to 36. Flutter 3.29 and 3.32 set it to 35, so an app on those versions has to upgrade Flutter or set 36 itself.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","iPwwnSRCcTQc6dpLjDfb2d5TZgBzVAXtncPECMXrVgI",{"id":1204,"title":1205,"author":1206,"body":1208,"category":654,"createdAt":1524,"description":1525,"disclosure":657,"extension":658,"faq":1526,"howTo":657,"lastVerified":657,"location":675,"meta":1542,"navigation":682,"ogImage":657,"path":1548,"primaryKeyword":1549,"readingTime":685,"related":1550,"seo":1554,"sources":1555,"stem":1590,"tags":1591,"takeaways":1592,"updatedAt":1524,"url":1598,"__hash__":1599},"blog\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026.md","ITMS-90725 SDK Version Issue: Fix in Flutter (Xcode 26)",{"name":7,"social":1207},{"twitter":9},{"type":11,"value":1209,"toc":1512},[1210,1216,1219,1224,1228,1231,1237,1240,1244,1301,1308,1311,1315,1323,1327,1330,1358,1377,1381,1398,1405,1409,1416,1454,1461,1465,1472,1475,1478,1482,1485,1489,1495,1499,1501,1508],[14,1211,1212,1215],{},[17,1213,1214],{},"If App Store Connect shows ITMS-90725 \"SDK version issue,\" the build you uploaded was made with an older SDK than Apple now accepts, and the fix is to rebuild it with Xcode 26 or later."," Apple's upcoming requirements page says that since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. In a Flutter app, that often means the Mac or CI machine that builds the IPA is still running Xcode 16.",[14,1217,1218],{},"The facts below come from Apple's requirements and release pages, Flutter's docs and source, and GitHub's runner image lists, as shown in the sources. I checked each one on October 18, 2026.",[14,1220,1221,1223],{},[17,1222,28],{}," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Apple doesn't pay me for anything on this page.",[31,1225,1227],{"id":1226},"what-the-error-says","What the error says",[14,1229,1230],{},"The wording below is a developer's copy of the email, posted in an Apple Developer Forums thread in January 2026. It is not Apple's own documentation:",[1232,1233,1234],"blockquote",{},[14,1235,1236],{},"This app was built with the iOS 18.2 SDK. Starting April 2026, all iOS and iPadOS apps must be built with the iOS 26 SDK or later, included in Xcode 26 or later, in order to be uploaded to App Store Connect or submitted for distribution.",[14,1238,1239],{},"The same thread shows the message arrived months before the date it names. A GitHub issue in a project named pot-g-flutter, dated February 2026, describes the same warning on a build made with the iOS 18.5 SDK. Your email will name the SDK your build used. That number tells you how far behind your build machine is.",[31,1241,1243],{"id":1242},"what-apple-requires-today","What Apple requires today",[36,1245,1246,1257],{},[39,1247,1248],{},[42,1249,1250,1252,1255],{},[45,1251,47],{},[45,1253,1254],{},"What Apple says",[45,1256,56],{},[61,1258,1259,1275,1288],{},[42,1260,1261,1266,1269],{},[66,1262,1263],{},[17,1264,1265],{},"Since April 28, 2026",[66,1267,1268],{},"\"Apps uploaded to App Store Connect must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26, or watchOS 26.\"",[66,1270,1271],{},[81,1272,1274],{"href":83,"rel":1273},[85],"Apple, upcoming requirements",[42,1276,1277,1280,1283],{},[66,1278,1279],{},"Since September 9, 2026",[66,1281,1282],{},"iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later. This is a minimum deployment target, not an SDK rule",[66,1284,1285],{},[81,1286,1274],{"href":83,"rel":1287},[85],[42,1289,1290,1292,1295],{},[66,1291,186],{},[66,1293,1294],{},"Xcode 27 released. Apple's releases page lists Xcode 27.1 as the newest release, dated October 15, 2026",[66,1296,1297],{},[81,1298,1300],{"href":204,"rel":1299},[85],"Apple, releases",[14,1302,1303,1304,1307],{},"On October 18, 2026, the upcoming requirements page had no entry for Xcode 27 or the iOS 27 SDK. So Apple hasn't published an Xcode 27 upload requirement that I can find. Xcode 26 or later is the stated minimum. My advice: build with Xcode 26.6, or Xcode 27 once the app has migrated to UIScene. Read the ",[81,1305,1306],{"href":210},"UIScene guide"," before you move a Flutter app to Xcode 27.",[14,1309,1310],{},"Apple doesn't say whether this is a warning or a rejection. Its page says apps \"must be built\" this way, so plan on fixing it, not waiting to see.",[31,1312,1314],{"id":1313},"step-1-install-the-required-xcode","Step 1: Install the required Xcode",[1005,1316,1317,1320],{},[819,1318,1319],{},"Install Xcode 26 or later from the Mac App Store or Apple's developer downloads. Apple's releases page lists Xcode 26.6 (June 25, 2026) as the newest Xcode 26 release.",[819,1321,1322],{},"Open it once and let it install its components.",[31,1324,1326],{"id":1325},"step-2-make-the-command-line-use-it","Step 2: Make the command line use it",[14,1328,1329],{},"A Flutter build runs through the command-line tools, so the selected Xcode matters, not the one you last opened. Flutter's iOS setup page gives this command for pointing the tools at an Xcode install:",[1331,1332,1336],"pre",{"className":1333,"code":1334,"language":1335,"meta":645,"style":645},"language-bash shiki shiki-themes github-light github-dark","sudo sh -c 'xcode-select -s \u002FApplications\u002FXcode.app\u002FContents\u002FDeveloper && xcodebuild -runFirstLaunch'\n","bash",[747,1337,1338],{"__ignoreMap":645},[1339,1340,1343,1347,1351,1355],"span",{"class":1341,"line":1342},"line",1,[1339,1344,1346],{"class":1345},"sScJk","sudo",[1339,1348,1350],{"class":1349},"sZZnC"," sh",[1339,1352,1354],{"class":1353},"sj4cs"," -c",[1339,1356,1357],{"class":1349}," 'xcode-select -s \u002FApplications\u002FXcode.app\u002FContents\u002FDeveloper && xcodebuild -runFirstLaunch'\n",[14,1359,1360,1361,1364,1365,1368,1369,1372,1373,1376],{},"Replace ",[747,1362,1363],{},"\u002FApplications\u002FXcode.app"," if you installed it somewhere else. Apple's TN2339 documents ",[747,1366,1367],{},"xcode-select --print-path"," to see the current selection, and ",[747,1370,1371],{},"xcode-select -switch"," to change it. Then run ",[747,1374,1375],{},"xcodebuild -version"," to see the version in use. My advice: do this on every Mac that builds the app, including old laptops and CI machines you forgot about.",[31,1378,1380],{"id":1379},"step-3-dont-trust-flutter-doctor-for-this","Step 3: Don't trust flutter doctor for this",[14,1382,1383,1386,1387,1390,1391,1394,1395,1397],{},[747,1384,1385],{},"flutter doctor"," checks Xcode, but not against Apple's upload rule. In the Flutter source on the master branch, ",[747,1388,1389],{},"xcodeRequiredVersion"," is 15 and ",[747,1392,1393],{},"xcodeRecommendedVersion"," is 16. The doctor warns below the recommended version. Xcode 16 passes that check but would still trigger ITMS-90725. So a clean doctor result doesn't mean Apple will accept the build. Check ",[747,1396,1375],{}," yourself.",[14,1399,1400,1401,569],{},"If your Flutter is old and the build breaks under Xcode 26, upgrade Flutter and see ",[81,1402,1404],{"href":1403},"\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026\u002F","the iOS build-failed-after-upgrade guide",[31,1406,1408],{"id":1407},"step-4-rebuild-pods-and-the-archive","Step 4: Rebuild pods and the archive",[14,1410,1411,1412,1415],{},"After switching Xcode, old build output can linger. Work from least to most destructive, from the ",[747,1413,1414],{},"ios"," folder:",[1005,1417,1418,1423,1443],{},[819,1419,1420,569],{},[747,1421,1422],{},"pod install --repo-update",[819,1424,1425,1426,565,1429,1432,1433,201,1436,1439,1440,1442],{},"If pods still build against the old toolchain, delete ",[747,1427,1428],{},"Pods",[747,1430,1431],{},"Podfile.lock",", run ",[747,1434,1435],{},"flutter clean",[747,1437,1438],{},"flutter pub get",", then ",[747,1441,1422],{}," again.",[819,1444,1445,1446,1449,1450,1453],{},"Build the archive with ",[747,1447,1448],{},"flutter build ipa",", or archive in Xcode from ",[747,1451,1452],{},"ios\u002FRunner.xcworkspace",", and upload again.",[14,1455,1456,1457,1460],{},"The ",[81,1458,1459],{"href":1403},"build-failed guide"," covers the deployment target, CocoaPods and plugin mismatches in more detail. Keep the two targets apart: the SDK is what you build with, and the deployment target is the oldest iOS you support. Apple's September 9, 2026 entry only requires iOS 13 or later. Your plugins may ask for more.",[31,1462,1464],{"id":1463},"fix-it-on-ci","Fix it on CI",[14,1466,1467,1468,1471],{},"If the upload comes from a build server, the server's Xcode decides the SDK. For GitHub Actions, the macOS 26 arm64 image readme I read lists Xcode 26.6 as the default, along with 26.5, 26.4.1, 26.3, 26.2, 26.1.1 and 26.0.1. It also lists CocoaPods 1.17.0. GitHub announced a separate ",[747,1469,1470],{},"xcode-27"," image label in July 2026, marked preview, and its readme lists Xcode 27.0 as that image's default.",[14,1473,1474],{},"If your workflow pins an older image or selects an old Xcode, change it. Older images list different Xcode versions, so check the readme for the image your workflow uses.",[14,1476,1477],{},"On other CI services, such as Codemagic, check the provider's own page for the Xcode versions it offers.",[31,1479,1481],{"id":1480},"other-services-that-build-for-you","Other services that build for you",[14,1483,1484],{},"The warning can also reach people who don't run the build themselves. If a hosted or no-code builder makes your iOS build, the Xcode it uses is the vendor's choice. Check its documentation for the Xcode version, and if it is older than 26, export the project and build it locally with Xcode 26 or later, or wait for the vendor to upgrade.",[31,1486,1488],{"id":1487},"related-errors","Related errors",[14,1490,1491,1492,569],{},"If the next email is about privacy manifests, see ",[81,1493,1494],{"href":547},"ITMS-91053 and ITMS-91061",[14,1496,1123,1497,569],{},[81,1498,1127],{"href":1126},[31,1500,632],{"id":631},[14,1502,1503,1504,640,1506,569],{},"If App Store Connect keeps rejecting your build with ITMS-90725, or the app breaks after the Xcode upgrade, the ",[81,1505,639],{"href":638},[81,1507,643],{"href":627},[1509,1510,1511],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":645,"searchDepth":646,"depth":646,"links":1513},[1514,1515,1516,1517,1518,1519,1520,1521,1522,1523],{"id":1226,"depth":646,"text":1227},{"id":1242,"depth":646,"text":1243},{"id":1313,"depth":646,"text":1314},{"id":1325,"depth":646,"text":1326},{"id":1379,"depth":646,"text":1380},{"id":1407,"depth":646,"text":1408},{"id":1463,"depth":646,"text":1464},{"id":1480,"depth":646,"text":1481},{"id":1487,"depth":646,"text":1488},{"id":631,"depth":646,"text":632},"2026-10-18T20:00:00.000Z","ITMS-90725 SDK version issue means App Store Connect saw an app built with an older SDK than it now accepts. What Apple's upcoming requirements page says about Xcode 26 today, and how to fix it in a Flutter app, from Apple's, Flutter's and GitHub's sources checked October 18, 2026.",[1527,1530,1533,1536,1539],{"question":1528,"answer":1529},"What does ITMS-90725 SDK version issue mean?","It means App Store Connect found that the app was built with an older SDK than Apple now requires. A forum post from January 2026 quotes the message as: \"This app was built with the iOS 18.2 SDK. Starting April 2026, all iOS and iPadOS apps must be built with the iOS 26 SDK or later, included in Xcode 26 or later.\" The fix is to rebuild with Xcode 26 or later.",{"question":1531,"answer":1532},"What Xcode version does Apple require right now?","Apple's upcoming requirements page says that since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26. On October 18, 2026, that page had no entry for Xcode 27.",{"question":1534,"answer":1535},"Do I need Xcode 27 to upload?","Not according to Apple's upcoming requirements page as of October 18, 2026. It names Xcode 26 or later and gives no Xcode 27 date. Xcode 27 does change Flutter apps in one way: see the UIScene guide before you switch.",{"question":1537,"answer":1538},"Does this raise my minimum iOS version?","No. The SDK you build with is separate from the iOS version you support. Apple's page has a separate entry saying that since September 9, 2026, iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later. Your plugins may require a higher target than that.",{"question":1540,"answer":1541},"Does the version already in the App Store stop working?","I found no Apple statement on that. A reply in a 2024 Apple forum thread, from a user who isn't identified as Apple staff, said the version already in the store is unaffected. Treat that as a forum opinion. The rule applies to new uploads.",{"readingTimeStats":1543},{"text":1544,"minutes":1545,"time":1546,"words":1547},"6 min read",5.38,322800,1076,"\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026","itms-90725",[1551,1552,1553],"apple-privacy-manifest-itms-91053-itms-91061-flutter-fix-2026","flutter-uiscene-migration-xcode-27-app-wont-launch-2026","flutter-ios-build-failed-after-upgrade-2026",{"title":1205,"description":1525},[1556,1558,1560,1563,1566,1569,1572,1575,1578,1581,1584,1587],{"title":1557,"url":83},"Apple Developer, Upcoming requirements (SDK minimum requirements since April 28, 2026)",{"title":1559,"url":204},"Apple Developer, Releases (Xcode 27 on September 14, 2026; Xcode 26.6)",{"title":1561,"url":1562},"Apple Developer Forums, 90725: SDK version issue - iOS SDK 26 support (January 2026)","https:\u002F\u002Fdeveloper.apple.com\u002Fforums\u002Fthread\u002F813123",{"title":1564,"url":1565},"Apple Developer Forums, ITMS-90725: SDK version issue (April 2024)","https:\u002F\u002Fdeveloper.apple.com\u002Fforums\u002Fthread\u002F750346",{"title":1567,"url":1568},"Apple Developer, Technical Note TN2339 (xcode-select)","https:\u002F\u002Fdeveloper.apple.com\u002Flibrary\u002Farchive\u002Ftechnotes\u002Ftn2339\u002F_index.html",{"title":1570,"url":1571},"Flutter docs, Set up iOS development (page last updated 2026-09-14)","https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fios\u002Fsetup",{"title":1573,"url":1574},"Flutter on GitHub, xcode_validator.dart (Xcode messages for flutter doctor)","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002Fmaster\u002Fpackages\u002Fflutter_tools\u002Flib\u002Fsrc\u002Fmacos\u002Fxcode_validator.dart",{"title":1576,"url":1577},"Flutter on GitHub, xcode.dart (required and recommended Xcode versions)","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002Fmaster\u002Fpackages\u002Fflutter_tools\u002Flib\u002Fsrc\u002Fmacos\u002Fxcode.dart",{"title":1579,"url":1580},"gsainfoteam\u002Fpot-g-flutter on GitHub, issue 437 (a Flutter team hitting ITMS-90725, February 2026)","https:\u002F\u002Fgithub.com\u002Fgsainfoteam\u002Fpot-g-flutter\u002Fissues\u002F437",{"title":1582,"url":1583},"GitHub Actions runner images, macOS 26 (arm64) readme","https:\u002F\u002Fgithub.com\u002Factions\u002Frunner-images\u002Fblob\u002Fmain\u002Fimages\u002Fmacos\u002Fmacos-26-arm64-Readme.md",{"title":1585,"url":1586},"GitHub Actions runner images, macOS 27 \u002F Xcode 27 (arm64) readme","https:\u002F\u002Fgithub.com\u002Factions\u002Frunner-images\u002Fblob\u002Fmain\u002Fimages\u002Fmacos\u002Fxcode-27-arm64-Readme.md",{"title":1588,"url":1589},"GitHub Actions runner images, issue 14404 (Xcode 27 preview and the xcode-27 label)","https:\u002F\u002Fgithub.com\u002Factions\u002Frunner-images\u002Fissues\u002F14404","blog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026","itms-90725, sdk version issue, itms-90725 sdk version issue, app store connect xcode 26 required, built with ios 18 sdk, ios 26 sdk required, flutter xcode 26, xcode-select flutter, flutter doctor xcode, github actions xcode 26",[1593,1594,1595,1596,1597],"ITMS-90725 means the build you uploaded was made with an older SDK than App Store Connect accepts. Apple's upcoming requirements page says that since April 28, 2026, uploads must be built with Xcode 26 or later using an SDK for iOS 26, iPadOS 26, tvOS 26, visionOS 26 or watchOS 26.","As of October 18, 2026, that page names no Xcode 27 or iOS 27 SDK requirement. Xcode 27 was released on September 14, 2026, but Xcode 26 or later is still the stated minimum.","In a Flutter app the fix is to build the upload with Xcode 26 or later. Check which Xcode the command line uses with xcode-select -p, because Flutter builds with the selected one.","flutter doctor will not warn you. In the Flutter source I read, the required Xcode version is 15 and the recommended one is 16, far below Apple's minimum.","On CI, the build machine decides the SDK. GitHub's macOS 26 runner image lists Xcode 26.0.1 to 26.6, with 26.6 as the default, and a separate xcode-27 image exists.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026\u002F","blb6tX8dMgApxA0OL3iPgFmPbCHy8TWRSblSQYxx-Gs",{"id":1601,"title":1602,"author":1603,"body":1605,"category":654,"createdAt":1978,"description":1979,"disclosure":657,"extension":658,"faq":1980,"howTo":657,"lastVerified":657,"location":675,"meta":1999,"navigation":682,"ogImage":657,"path":2004,"primaryKeyword":2005,"readingTime":2006,"related":2007,"seo":2011,"sources":2012,"stem":2029,"tags":2030,"takeaways":2031,"updatedAt":1978,"url":2037,"__hash__":2038},"blog\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026.md","Firebase Deprecations: Every Shutdown Date, 2024 to 2027",{"name":7,"social":1604},{"twitter":9},{"type":11,"value":1606,"toc":1965},[1607,1613,1616,1621,1625,1814,1818,1823,1826,1829,1833,1836,1839,1842,1874,1878,1881,1885,1894,1898,1901,1905,1950,1954,1956],[14,1608,1609,1612],{},[17,1610,1611],{},"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,1614,1615],{},"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,1617,1618,1620],{},[17,1619,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,1622,1624],{"id":1623},"every-firebase-shutdown-in-date-order","Every Firebase shutdown, in date order",[36,1626,1627,1645],{},[39,1628,1629],{},[42,1630,1631,1634,1637,1640,1643],{},[45,1632,1633],{},"Deadline",[45,1635,1636],{},"What is retired",[45,1638,1639],{},"What stops working",[45,1641,1642],{},"Move to",[45,1644,56],{},[61,1646,1647,1678,1703,1723,1743,1763,1794],{},[42,1648,1649,1656,1659,1666,1671],{},[66,1650,1651,1652,1655],{},"From ",[17,1653,1654],{},"July 22, 2024"," (done)",[66,1657,1658],{},"Legacy FCM HTTP and XMPP send APIs",[66,1660,1661,1662,1665],{},"Sending with a server key to ",[747,1663,1664],{},"fcm\u002Fsend",". Deprecated June 20, 2023",[66,1667,1668,1669],{},"FCM HTTP v1 API or the Admin SDK. ",[81,1670,59],{"href":361},[66,1672,1673],{},[81,1674,1677],{"href":1675,"rel":1676},"https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20260108211426\u002Fhttps:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Fmigrate-v1",[85],"Firebase (archived)",[42,1679,1680,1685,1688,1691,1697],{},[66,1681,1682,1655],{},[17,1683,1684],{},"August 25, 2025",[66,1686,1687],{},"Firebase Dynamic Links",[66,1689,1690],{},"Dynamic Links, and email link sign-in that relied on them",[66,1692,1693,1694],{},"Your own deep links. For email link sign-in, Firebase Authentication Android SDK 23.2.0 or later (BoM 33.9.0 or later). ",[81,1695,59],{"href":1696},"\u002Fblog\u002Ffirebase-dynamic-links-shutdown-deep-linking-2026\u002F",[66,1698,1699],{},[81,1700,356],{"href":1701,"rel":1702},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fauth\u002Fandroid\u002Femail-link-migration",[85],[42,1704,1705,1709,1712,1715,1718],{},[66,1706,1707],{},[17,1708,412],{},[66,1710,1711],{},"Firebase Studio",[66,1713,1714],{},"Existing workspaces. New workspaces and signups already stopped on June 22, 2026",[66,1716,1717],{},"Google AI Studio, Google Antigravity, or an export of your source to another platform",[66,1719,1720],{},[81,1721,356],{"href":424,"rel":1722},[85],[42,1724,1725,1729,1732,1735,1738],{},[66,1726,1727],{},[17,1728,436],{},[66,1730,1731],{},"Firebase Extensions",[66,1733,1734],{},"Updating, reconfiguring or uninstalling extensions, or downloading their configuration, through the console or CLI. Installed extensions keep running",[66,1736,1737],{},"Function kits on npm where the publisher offers one, or your own Cloud Functions (2nd gen)",[66,1739,1740],{},[81,1741,356],{"href":448,"rel":1742},[85],[42,1744,1745,1749,1752,1755,1758],{},[66,1746,1747],{},[17,1748,458],{},[66,1750,1751],{},"Firebase ML custom model hosting",[66,1753,1754],{},"Hosting and serving custom models through Firebase ML",[66,1756,1757],{},"Cloud Storage for Firebase, per Firebase's guide",[66,1759,1760],{},[81,1761,356],{"href":470,"rel":1762},[85],[42,1764,1765,1769,1772,1779,1788],{},[66,1766,1767],{},[17,1768,503],{},[66,1770,1771],{},"FCM InstanceId server APIs and device groups",[66,1773,1774,1775,1778],{},"Requests to ",[747,1776,1777],{},"iid.googleapis.com"," and device group management start failing. New users are blocked after January 1, 2027",[66,1780,1781,1782,1785,1786],{},"The FCM topic subscription API, HTTP v1 with ",[747,1783,1784],{},"validate_only",", and sends to individual tokens. ",[81,1787,59],{"href":361},[66,1789,1790],{},[81,1791,356],{"href":1792,"rel":1793},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Ftroubleshooting#fcm-26-deprecation",[85],[42,1795,1796,1800,1803,1806,1809],{},[66,1797,1798],{},[17,1799,524],{},[66,1801,1802],{},"Firebase Test Lab",[66,1804,1805],{},"All of Test Lab",[66,1807,1808],{},"The Developer Device Platform on Google Cloud",[66,1810,1811],{},[81,1812,356],{"href":536,"rel":1813},[85],[31,1815,1817],{"id":1816},"what-each-2027-deadline-means-in-practice","What each 2027 deadline means in practice",[1819,1820,1822],"h3",{"id":1821},"firebase-studio-march-22-2027","Firebase Studio: March 22, 2027",[14,1824,1825],{},"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,1827,1828],{},"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.",[1819,1830,1832],{"id":1831},"firebase-extensions-march-31-2027","Firebase Extensions: March 31, 2027",[14,1834,1835],{},"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,1837,1838],{},"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,1840,1841],{},"Before March 31, 2027:",[1005,1843,1844,1850,1856,1862],{},[819,1845,1846,1849],{},[17,1847,1848],{},"List what's installed."," In the Firebase console, open Extensions for each project, including staging and old projects.",[819,1851,1852,1855],{},[17,1853,1854],{},"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.",[819,1857,1858,1861],{},[17,1859,1860],{},"Export the configuration of the rest."," You need the parameters to set up a replacement.",[819,1863,1864,1867,1868,1873],{},[17,1865,1866],{},"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 ",[81,1869,1872],{"href":1870,"rel":1871},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Fusers\u002Fmigrate",[85],"guide for users"," covers both.",[1819,1875,1877],{"id":1876},"firebase-ml-model-hosting-june-15-2027","Firebase ML model hosting: June 15, 2027",[14,1879,1880],{},"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.",[1819,1882,1884],{"id":1883},"fcm-instanceid-apis-and-device-groups-september-29-2027","FCM InstanceId APIs and device groups: September 29, 2027",[14,1886,1887,1888,1890,1891,569],{},"If your server checks tokens with ",[747,1889,1777],{},", 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 ",[81,1892,1893],{"href":361},"FCM guide",[1819,1895,1897],{"id":1896},"test-lab-september-30-2027","Test Lab: September 30, 2027",[14,1899,1900],{},"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,1902,1904],{"id":1903},"a-one-hour-check-for-your-project","A one-hour check for your project",[1005,1906,1907,1932,1938,1944],{},[819,1908,1909,1912,1913,201,1915,201,1918,201,1921,1924,1925,1928,1929,569],{},[17,1910,1911],{},"Search your code"," for ",[747,1914,1777],{},[747,1916,1917],{},"fcm.googleapis.com\u002Ffcm\u002F",[747,1919,1920],{},"page.link",[747,1922,1923],{},"firebase-ml-modeldownloader"," (or ",[747,1926,1927],{},"firebase_ml_model_downloader"," in Flutter), and ",[747,1930,1931],{},"gcloud firebase test",[819,1933,1934,1937],{},[17,1935,1936],{},"Open the Firebase console"," for every project you own and look at Extensions, Machine Learning, Test Lab and Studio.",[819,1939,1940,1943],{},[17,1941,1942],{},"Write down each deadline"," that applies, with the owner of the fix and a target date at least a month early.",[819,1945,1946,1949],{},[17,1947,1948],{},"Start with the earliest deadlines."," Of the 2027 ones, Studio and Extensions come first, in March.",[14,1951,1123,1952,569],{},[81,1953,1127],{"href":1126},[31,1955,632],{"id":631},[14,1957,1958,1959,1961,1962,1964],{},"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 ",[81,1960,639],{"href":638}," 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, ",[81,1963,643],{"href":627}," of your project.",{"title":645,"searchDepth":646,"depth":646,"links":1966},[1967,1968,1976,1977],{"id":1623,"depth":646,"text":1624},{"id":1816,"depth":646,"text":1817,"children":1969},[1970,1972,1973,1974,1975],{"id":1821,"depth":1971,"text":1822},3,{"id":1831,"depth":1971,"text":1832},{"id":1876,"depth":1971,"text":1877},{"id":1883,"depth":1971,"text":1884},{"id":1896,"depth":1971,"text":1897},{"id":1903,"depth":646,"text":1904},{"id":631,"depth":646,"text":632},"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.",[1981,1984,1987,1990,1993,1996],{"question":1982,"answer":1983},"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":1985,"answer":1986},"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":1988,"answer":1989},"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":1991,"answer":1992},"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":1994,"answer":1995},"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":1997,"answer":1998},"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":2000},{"text":1544,"minutes":2001,"time":2002,"words":2003},5.375,322500,1075,"\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026","firebase deprecations","8 min",[2008,2009,2010],"fcm-legacy-api-shutdown-http-v1-migration-2026","firebase-dynamic-links-shutdown-deep-linking-2026","how-to-cut-your-firebase-bill-2026",{"title":1602,"description":1979},[2013,2015,2017,2019,2021,2023,2025,2027],{"title":2014,"url":1675},"Firebase, migrate from legacy FCM APIs to HTTP v1 (Wayback Machine copy, January 8, 2026)",{"title":2016,"url":1701},"Firebase, migrating email link sign-in off Dynamic Links (Android)",{"title":2018,"url":424},"Firebase, Firebase Studio sunset and project migration",{"title":2020,"url":448},"Firebase, Firebase Extensions deprecation FAQ",{"title":2022,"url":1870},"Firebase, migrate an extension to Cloud Functions as a user",{"title":2024,"url":470},"Firebase, migrate custom models from Firebase ML to Cloud Storage",{"title":2026,"url":1792},"Firebase, FCM InstanceId API and device group deprecation (FAQ, announced September 2026)",{"title":2028,"url":536},"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",[2032,2033,2034,2035,2036],"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","7EjLrAKD0wz_NmOPTPlPKacHZPa7H5JveaGS88iU-xc",[2040,2042,2044,2048,2052,2054],{"keyword":5,"url":730,"title":5,"relevance":2041},69,{"keyword":1602,"url":2037,"title":1602,"relevance":2043},18,{"keyword":2045,"url":2046,"title":2045,"relevance":2047},"Play Billing Library 9: Migration Guide and 2027 Deadline","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F",12,{"keyword":2049,"url":2050,"title":2049,"relevance":2051},"Play Billing Library 7 Deprecated: Update to 8 by November 1","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F",11,{"keyword":735,"url":1201,"title":735,"relevance":2053},9,{"keyword":2055,"url":2056,"title":2055,"relevance":2057},"Google Fit API Deprecated: Moving to Health Connect in 2026","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F",6,1792368227862]