[{"data":1,"prerenderedAt":2275},["ShallowReactive",2],{"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F":3,"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F-related":670,"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F-resources":2256},{"id":4,"title":5,"author":6,"body":10,"category":597,"createdAt":598,"description":599,"disclosure":600,"extension":601,"faq":602,"howTo":600,"lastVerified":600,"location":618,"meta":619,"navigation":625,"ogImage":600,"path":626,"primaryKeyword":627,"readingTime":628,"related":629,"seo":633,"sources":634,"stem":660,"tags":661,"takeaways":662,"updatedAt":598,"url":668,"__hash__":669},"blog\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027.md","Play Billing Library 9: Migration Guide and 2027 Deadline",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":587},"minimark",[13,21,24,30,35,38,122,133,136,167,175,179,182,258,273,277,284,378,382,391,480,483,499,502,506,509,559,571,575],[14,15,16,20],"p",{},[17,18,19],"strong",{},"Google's deprecation table gives Play Billing Library 8 a deadline of August 31, 2027 for new apps and updates, with an extension deadline of November 1, 2027, so version 9 is the one to move to."," Google says existing apps keep working. The rule applies to new apps and updates. If you ship with Flutter, the practical question is when your plugin moves, because as of today the official plugin and RevenueCat still use version 8.",[14,22,23],{},"The dates below come from Google's deprecation page and release notes, and the plugin facts from the flutter\u002Fpackages and RevenueCat repositories and pub.dev, as listed in the sources. I checked each one on October 18, 2026.",[14,25,26,29],{},[17,27,28],{},"Disclosure:"," App369 is my studio. I build and fix apps, including in-app purchases and subscriptions in Flutter, and the last section mentions what I sell. Google and RevenueCat don't pay me for anything on this page.",[31,32,34],"h2",{"id":33},"the-deadlines","The deadlines",[14,36,37],{},"Google gives every Billing Library version a two-year deprecation cycle. Its table:",[39,40,41,57],"table",{},[42,43,44],"thead",{},[45,46,47,51,54],"tr",{},[48,49,50],"th",{},"Version",[48,52,53],{},"New apps and updates must move by",[48,55,56],{},"Extension deadline",[58,59,60,72,83,94,111],"tbody",{},[45,61,62,66,69],{},[63,64,65],"td",{},"5",[63,67,68],{},"August 31, 2024",[63,70,71],{},"November 1, 2024",[45,73,74,77,80],{},[63,75,76],{},"6",[63,78,79],{},"August 31, 2025",[63,81,82],{},"November 1, 2025",[45,84,85,88,91],{},[63,86,87],{},"7",[63,89,90],{},"August 31, 2026",[63,92,93],{},"November 1, 2026",[45,95,96,101,106],{},[63,97,98],{},[17,99,100],{},"8",[63,102,103],{},[17,104,105],{},"August 31, 2027",[63,107,108],{},[17,109,110],{},"November 1, 2027",[45,112,113,116,119],{},[63,114,115],{},"9",[63,117,118],{},"August 31, 2028",[63,120,121],{},"November 1, 2028",[14,123,124,125,132],{},"Source: ",[126,127,131],"a",{"href":128,"rel":129},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Fdeprecation-faq",[130],"nofollow","Google Play Billing Library version deprecation",", last updated September 9, 2026.",[14,134,135],{},"Google's FAQ also says:",[137,138,139,146,152],"ul",{},[140,141,142,145],"li",{},[17,143,144],{},"Existing apps still work."," Unmaintained APKs don't need updates. New apps and updates must use supported versions.",[140,147,148,151],{},[17,149,150],{},"The extension form is in Play Console."," An app on an unsupported version gets a warning. Open its details on the Policy status page to find the form.",[140,153,154,157,158,162,163,166],{},[17,155,156],{},"Check the manifest if a warning stays."," The merged ",[159,160,161],"code",{},"AndroidManifest.xml"," must contain ",[159,164,165],{},"com.google.android.play.billingclient.version",".",[14,168,169,170,174],{},"If your app is still on version 7, read ",[126,171,173],{"href":172},"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","the version 7 to 8 guide"," first.",[31,176,178],{"id":177},"what-changed-in-version-9","What changed in version 9",[14,180,181],{},"Version 9.0.0 was released on May 19, 2026. Per Google's release notes:",[39,183,184,194],{},[42,185,186],{},[45,187,188,191],{},[48,189,190],{},"Change in 9.0.0",[48,192,193],{},"What it means",[58,195,196,221,239,250],{},[45,197,198,201],{},[63,199,200],{},"Error codes for blocked Play Store activity",[63,202,203,204,207,208,211,212,215,216,220],{},"When the system blocks the Play Store app, for example in OEM-customized kids mode, the response code changes from ",[159,205,206],{},"ERROR"," to ",[159,209,210],{},"BILLING_UNAVAILABLE",". The ",[159,213,214],{},"BillingResult"," carries a ",[217,218,219],"em",{},"Play Store is blocked"," debug message. This needs AndroidX Core 1.9 or later",[45,222,223,232],{},[63,224,225,228,229],{},[159,226,227],{},"DeveloperProvidedBillingDetails.getLinkUri()"," is ",[159,230,231],{},"@Nullable",[63,233,234,235,238],{},"Handle both ",[159,236,237],{},"null"," and an empty string before parsing the link or launching a browser intent",[45,240,241,247],{},[63,242,243,246],{},[159,244,245],{},"targetSdkVersion"," updated to 35",[63,248,249],{},"Stated in the release notes",[45,251,252,255],{},[63,253,254],{},"In-app messaging for opt-in price increases",[63,256,257],{},"Users can confirm an upcoming opt-in price increase without leaving the app. The message is shown from the first day the user can accept, at most once every 7 days",[14,259,260,261,264,265,268,269,272],{},"Version 9.1.0 was released on June 18, 2026. It adds Billing Choice APIs, including ",[159,262,263],{},"BillingClient.getBillingChoiceInfoAsync()",", ",[159,266,267],{},"BillingChoiceInfo"," and ",[159,270,271],{},"BillingClient.showBillingProgramInformationDialog()",". Google's release notes list no later 9.x release as of October 18, 2026.",[31,274,276],{"id":275},"how-google-says-to-migrate","How Google says to migrate",[14,278,279,280,283],{},"Google's guide for moving to version 9 uses ",[159,281,282],{},"9.1.0"," in its examples. The steps:",[285,286,287,299,313,344,350,372],"ol",{},[140,288,289,207,292,295,296,166],{},[17,290,291],{},"Update the dependency",[159,293,294],{},"com.android.billingclient:billing:9.1.0",". For Kotlin extensions, add ",[159,297,298],{},"billing-ktx",[140,300,301,308,309,312],{},[17,302,303,304,307],{},"Skip the ",[159,305,306],{},"queryProductDetailsAsync"," change if you are on 8."," Google says the ",[159,310,311],{},"onProductDetailsResponse"," signature change applies only to upgrades from version 7.",[140,314,315,318,319,264,322,264,325,328,329,332,333,336,337,268,340,343],{},[17,316,317],{},"Remove the old APIs, if you still use any."," Google's list includes ",[159,320,321],{},"SkuDetails",[159,323,324],{},"querySkuDetailsAsync",[159,326,327],{},"BillingClient.SkuType"," (use ",[159,330,331],{},"ProductType","), ",[159,334,335],{},"QueryPurchaseHistoryParams",", the no-argument ",[159,338,339],{},"enablePendingPurchases()",[159,341,342],{},"queryPurchasesAsync(String, listener)",". My reading: most of these were already removed in version 8, so an app that moved to 8 cleanly has probably dealt with them. Check your code for any that remain.",[140,345,346,349],{},[17,347,348],{},"Consider automatic service reconnection."," Google recommends it.",[140,351,352,355,356,358,359,362,363,264,366,268,369,166],{},[17,353,354],{},"Handle new sub-response codes"," on the ",[159,357,214],{}," from ",[159,360,361],{},"launchBillingFlow()",": ",[159,364,365],{},"PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS",[159,367,368],{},"USER_INELIGIBLE",[159,370,371],{},"NO_APPLICABLE_SUB_RESPONSE_CODE",[140,373,374,377],{},[17,375,376],{},"Account for the error-code change"," and the nullable link from the table above.",[31,379,381],{"id":380},"flutter-apps-where-the-plugins-stand","Flutter apps: where the plugins stand",[14,383,384,385,390],{},"I found no Flutter plugin on version 9 yet. A pull request to update in_app_purchase_android to 9.1.0 (",[126,386,389],{"href":387,"rel":388},"https:\u002F\u002Fgithub.com\u002Fflutter\u002Fpackages\u002Fpull\u002F12781",[130],"flutter\u002Fpackages #12781","), opened September 8, 2026, was still open and unmerged on October 18, 2026. As of October 18, 2026:",[39,392,393,406],{},[42,394,395],{},[45,396,397,400,403],{},[48,398,399],{},"Package",[48,401,402],{},"Latest version (published)",[48,404,405],{},"Billing Library it uses",[58,407,408,429,445,459],{},[45,409,410,415,418],{},[63,411,412],{},[159,413,414],{},"in_app_purchase_android",[63,416,417],{},"0.5.4 (October 13, 2026)",[63,419,420,421,424,425,428],{},"8.0.0, per its ",[159,422,423],{},"build.gradle.kts"," on ",[159,426,427],{},"main",". Its changelog lists the move from 7.1.1 to 8.0.0 in 0.5.0",[45,430,431,436,439],{},[63,432,433],{},[159,434,435],{},"in_app_purchase",[63,437,438],{},"3.3.1 (September 18, 2026)",[63,440,441,442,444],{},"Depends on ",[159,443,414],{}," ^0.5.0",[45,446,447,453,456],{},[63,448,449,452],{},[159,450,451],{},"purchases_flutter"," (RevenueCat)",[63,454,455],{},"10.16.0 (October 14, 2026)",[63,457,458],{},"Bundles Android SDK 10.27.0",[45,460,461,466,471],{},[63,462,463,452],{},[159,464,465],{},"purchases-android",[63,467,468,470],{},[159,469,427],{}," branch",[63,472,473,476,477],{},[159,474,475],{},"billingClient = \"8.3.0\""," in ",[159,478,479],{},"libs.versions.toml",[14,481,482],{},"Two details:",[137,484,485,493],{},[140,486,487,492],{},[17,488,489,491],{},[159,490,414],{}," 0.5.4 needs a recent Flutter."," Its pubspec requires Flutter 3.44 or later and Dart 3.12.",[140,494,495,498],{},[17,496,497],{},"My advice: a plugin on version 8 is fine until Google's version 8 deadline."," The deadline for new apps and updates is August 31, 2027. That leaves time for the plugin authors to move.",[14,500,501],{},"My advice: don't force version 9 into a Flutter app by overriding the plugin's Gradle dependency until the plugin supports it. The plugin's Dart and Kotlin code is built against the version 8 API. Wait for the release, then upgrade the package.",[31,503,505],{"id":504},"what-to-do-now","What to do now",[14,507,508],{},"This section is my advice, not Google's.",[285,510,511,532,541,547,553],{},[140,512,513,516,517,476,520,523,524,526,527,476,529,166],{},[17,514,515],{},"Find the version you ship."," In a native app, check ",[159,518,519],{},"com.android.billingclient:billing",[159,521,522],{},"build.gradle",". In Flutter, check ",[159,525,414],{}," or ",[159,528,451],{},[159,530,531],{},"pubspec.lock",[140,533,534,537,538,540],{},[17,535,536],{},"Watch the plugin changelogs."," Check the ",[159,539,414],{}," and RevenueCat changelogs once a month. When one mentions Billing Library 9, plan the upgrade.",[140,542,543,546],{},[17,544,545],{},"Keep your Flutter version current."," Each plugin release raises its minimum Flutter, and a late jump can mean fixing other build errors first.",[140,548,549,552],{},[17,550,551],{},"Upgrade early in the cycle, not at the deadline."," Google's extension to November 1, 2027 is a safety net, not a plan.",[140,554,555,558],{},[17,556,557],{},"Test purchases and restores before you ship."," Use Play Console license testers to buy, cancel and restore each product type.",[14,560,561,562,566,567,166],{},"For every other dated Apple, Google Play and Firebase requirement in 2026 and 2027, see ",[126,563,565],{"href":564},"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027\u002F","App Store and Google Play deadlines for 2026 and 2027",". The related Android target level requirement is in ",[126,568,570],{"href":569},"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","the target API 36 guide",[31,572,574],{"id":573},"need-a-hand","Need a hand?",[14,576,577,578,582,583,166],{},"If your in-app purchases break during the Billing Library upgrade, or you're not sure what your plugins need, the ",[126,579,581],{"href":580},"\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 ",[126,584,586],{"href":585},"\u002Fcontact\u002F","send me a short description",{"title":588,"searchDepth":589,"depth":589,"links":590},"",2,[591,592,593,594,595,596],{"id":33,"depth":589,"text":34},{"id":177,"depth":589,"text":178},{"id":275,"depth":589,"text":276},{"id":380,"depth":589,"text":381},{"id":504,"depth":589,"text":505},{"id":573,"depth":589,"text":574},"AI & Technology","2026-10-18T23:30:00.000Z","Google Play Billing Library 8 is supported until August 31, 2027, with an extension to November 1, 2027, so new apps and updates then need version 9. What changed in version 9, where Flutter's in_app_purchase and RevenueCat stand today, and how to migrate, from Google's docs checked October 18, 2026.",null,"md",[603,606,609,612,615],{"question":604,"answer":605},"When must I move to Play Billing Library 9?","Google's deprecation table gives version 8 a deadline of August 31, 2027 for new apps and updates, and an extension deadline of November 1, 2027. After that, an update has to use a supported version, and version 9 is the next one.",{"question":607,"answer":608},"What changed between version 8 and version 9?","Google's 9.0.0 release notes list four changes: Play Store blocked by the system now returns BILLING_UNAVAILABLE instead of ERROR, DeveloperProvidedBillingDetails.getLinkUri() is @Nullable, targetSdkVersion is 35, and in-app messaging can announce an upcoming opt-in price increase. Version 9.1.0 adds Billing Choice APIs.",{"question":610,"answer":611},"Can I use Billing Library 9 in a Flutter app today?","Not through the official plugin as of October 18, 2026. in_app_purchase_android 0.5.4, published October 13, 2026, still builds against com.android.billingclient:billing 8.0.0. A Flutter plugin has to move first, or you add a native override yourself.",{"question":613,"answer":614},"Do I need to rewrite my purchase code for version 9?","Google's guide says only the queryProductDetailsAsync signature change applies just to upgrades from version 7. It lists removed APIs without a version 8 exemption, so an app on version 8 that still calls any of them must change those calls. The other steps are the dependency bump, new sub-response codes, the error-code change and the nullable link.",{"question":616,"answer":617},"How do I ask for the extension?","Google says an app on an unsupported version gets a warning in Play Console. Open the warning's details on the Policy status page and use the extension form there.","Boynton Beach, FL",{"readingTimeStats":620},{"text":621,"minutes":622,"time":623,"words":624},"5 min read",4.64,278400,928,true,"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027","play billing library 9 migration","6 min",[630,631,632],"play-billing-library-7-deprecated-update-to-8-2026","app-store-google-play-deadlines-2026-2027","google-play-target-api-36-android-16-requirement-2026",{"title":5,"description":599},[635,637,640,643,645,648,651,654,657],{"title":636,"url":387},"flutter\u002Fpackages on GitHub, pull request #12781 (in_app_purchase_android to Billing Library 9.1.0)",{"title":638,"url":639},"Android Developers, Google Play Billing Library release notes","https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Frelease-notes",{"title":641,"url":642},"Android Developers, Migrate to Billing Library 9","https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Fmigrate-gpblv9",{"title":644,"url":128},"Android Developers, Google Play Billing Library version deprecation (last updated September 9, 2026)",{"title":646,"url":647},"flutter\u002Fpackages, in_app_purchase_android changelog","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fpackages\u002Fblob\u002Fmain\u002Fpackages\u002Fin_app_purchase\u002Fin_app_purchase_android\u002FCHANGELOG.md",{"title":649,"url":650},"flutter\u002Fpackages, in_app_purchase changelog","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fpackages\u002Fblob\u002Fmain\u002Fpackages\u002Fin_app_purchase\u002Fin_app_purchase\u002FCHANGELOG.md",{"title":652,"url":653},"pub.dev API, in_app_purchase_android","https:\u002F\u002Fpub.dev\u002Fapi\u002Fpackages\u002Fin_app_purchase_android",{"title":655,"url":656},"RevenueCat purchases-flutter changelog on GitHub","https:\u002F\u002Fgithub.com\u002FRevenueCat\u002Fpurchases-flutter\u002Fblob\u002Fmain\u002FCHANGELOG.md",{"title":658,"url":659},"RevenueCat purchases-android on GitHub (libs.versions.toml)","https:\u002F\u002Fgithub.com\u002FRevenueCat\u002Fpurchases-android\u002Fblob\u002Fmain\u002Fgradle\u002Flibs.versions.toml","blog\u002Fplay-billing-library-9-migration-deadline-2027","play billing library 9, play billing library 9 migration, play billing library 8 deprecation, billing library deadline august 31 2027, billing library extension november 1 2027, in_app_purchase_android billing 9, purchases_flutter billing library 9, play billing 9.1.0, flutter in app purchase billing library update",[663,664,665,666,667],"Google's deprecation table sets August 31, 2027 for new apps and updates on Billing Library 8, with an extension deadline of November 1, 2027. Version 9 is the next supported version, and its own row says August 31, 2028.","Version 9.0.0 (May 19, 2026) brings four changes from 8, including: blocked Play Store apps now return BILLING_UNAVAILABLE instead of ERROR, getLinkUri() can be null, and targetSdkVersion is 35. Version 9.1.0 (June 18, 2026) adds Billing Choice APIs.","Google's migration guide for 8 to 9 says to update the dependency to 9.1.0, handle new sub-response codes, and use AndroidX Core 1.9 or later for the new error code.","As of October 18, 2026, Flutter's in_app_purchase_android 0.5.4 still depends on Billing Library 8.0.0, and RevenueCat's latest Android SDK in purchases_flutter 10.16.0 uses 8.3.0. I found no Flutter plugin on version 9 yet.","Google says existing apps keep working. The deadline applies to new apps and updates, so an app still on version 8 can't ship an update after its deadline unless the plugin you use has moved.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F","tZSF-xEV_hbBo7eSRmiLzSJaDQlvcpQduM6X56CBo5A",[671,1115,1808],{"id":672,"title":673,"author":674,"body":676,"category":597,"createdAt":598,"description":1059,"disclosure":600,"extension":601,"faq":1060,"howTo":600,"lastVerified":600,"location":618,"meta":1079,"navigation":625,"ogImage":600,"path":1084,"primaryKeyword":1085,"readingTime":1086,"related":1087,"seo":1091,"sources":1092,"stem":1105,"tags":1106,"takeaways":1107,"updatedAt":598,"url":1113,"__hash__":1114},"blog\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026.md","Play Billing Library 7 Deprecated: Update to 8 by November 1",{"name":7,"social":675},{"twitter":9},{"type":11,"value":677,"toc":1052},[678,687,690,694,696,698,758,763,765,786,790,793,873,886,890,960,963,985,987,989,1039,1043,1045],[14,679,680,683,684,686],{},[17,681,682],{},"If Play Console warns that your app uses an unsupported version of the Google Play Billing Library, version 7 is the likely cause: its deadline for new apps and updates was August 31, 2026, and Google says the extension it offers runs until November 1, 2026."," Google says existing apps keep working, and new apps and updates must use a supported version. In my reading, an app still on version 7 can't ship an update once the extension runs out. For a Flutter app, that usually means a newer ",[159,685,435],{}," or RevenueCat package, and possibly a newer Flutter.",[14,688,689],{},"The deadlines below come from Google's Billing Library deprecation page and release notes, and the package versions from pub.dev and RevenueCat's changelog, as listed in the sources. I checked each one on October 18, 2026.",[14,691,692,29],{},[17,693,28],{},[31,695,34],{"id":33},[14,697,37],{},[39,699,700,710],{},[42,701,702],{},[45,703,704,706,708],{},[48,705,50],{},[48,707,53],{},[48,709,56],{},[58,711,712,720,728,742,750],{},[45,713,714,716,718],{},[63,715,65],{},[63,717,68],{},[63,719,71],{},[45,721,722,724,726],{},[63,723,76],{},[63,725,79],{},[63,727,82],{},[45,729,730,734,738],{},[63,731,732],{},[17,733,87],{},[63,735,736],{},[17,737,90],{},[63,739,740],{},[17,741,93],{},[45,743,744,746,748],{},[63,745,100],{},[63,747,105],{},[63,749,110],{},[45,751,752,754,756],{},[63,753,115],{},[63,755,118],{},[63,757,121],{},[14,759,124,760,132],{},[126,761,131],{"href":128,"rel":762},[130],[14,764,135],{},[137,766,767,772,782],{},[140,768,769,771],{},[17,770,144],{}," Unmaintained APKs don't need updates. The rule applies to new apps and updates.",[140,773,774,777,778,781],{},[17,775,776],{},"The dependency check applies to APKs that use billing."," Google says these dependencies only appear in APKs that require the ",[159,779,780],{},"com.android.vending.BILLING"," permission.",[140,783,784,151],{},[17,785,150],{},[31,787,789],{"id":788},"what-changed-in-version-8","What changed in version 8",[14,791,792],{},"Version 8.0.0 was released on June 30, 2025. Per Google's release notes, the changes most likely to break an older integration are:",[39,794,795,805],{},[42,796,797],{},[45,798,799,802],{},[48,800,801],{},"Change in 8.0.0",[48,803,804],{},"What to use instead",[58,806,807,822,834,850,862],{},[45,808,809,815],{},[63,810,811,814],{},[159,812,813],{},"queryPurchaseHistory()"," removed",[63,816,817,818,821],{},"Google lists ",[159,819,820],{},"queryPurchasesAsync()"," for acknowledged and pending purchases, says to track consumed purchases on your own servers, and points to the voided-purchases API for canceled ones",[45,823,824,829],{},[63,825,826,814],{},[159,827,828],{},"querySkuDetailsAsync()",[63,830,831],{},[159,832,833],{},"queryProductDetailsAsync()",[45,835,836,841],{},[63,837,838,840],{},[159,839,339],{}," with no arguments removed",[63,842,843,846,847],{},[159,844,845],{},"enablePendingPurchases(PendingPurchasesParams)",". The old call equals ",[159,848,849],{},"PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()",[45,851,852,857],{},[63,853,854,814],{},[159,855,856],{},"queryPurchasesAsync(String skuType, ...)",[63,858,859],{},[159,860,861],{},"queryPurchasesAsync(QueryPurchasesParams, ...)",[45,863,864,870],{},[63,865,866,869],{},[159,867,868],{},"onProductDetailsResponse()"," signature changed",[63,871,872],{},"Handle the new result, which also lists products that couldn't be fetched",[14,874,875,876,879,880,882,883,885],{},"Version 8 also added optional automatic service reconnection (",[159,877,878],{},"enableAutoServiceReconnection()",") and sub-response codes on ",[159,881,361],{},", such as ",[159,884,365],{},". In-app items are now called one-time products.",[31,887,889],{"id":888},"flutter-apps-which-package-versions-include-version-8","Flutter apps: which package versions include version 8",[39,891,892,904],{},[42,893,894],{},[45,895,896,898,901],{},[48,897,399],{},[48,899,900],{},"First version on Billing Library 8",[48,902,903],{},"Notes, per its changelog or pubspec",[58,905,906,928,945],{},[45,907,908,912,918],{},[63,909,910],{},[159,911,414],{},[63,913,914,917],{},[17,915,916],{},"0.5.0"," (May 27, 2026)",[63,919,920,921,924,925],{},"Updates from 7.1.1 to 8.0.0. Breaking: removes ",[159,922,923],{},"queryPurchaseHistory",", use ",[159,926,927],{},"queryPurchases",[45,929,930,934,940],{},[63,931,932],{},[159,933,435],{},[63,935,936,939],{},[17,937,938],{},"3.3.0"," (June 3, 2026)",[63,941,441,942,944],{},[159,943,414],{}," ^0.5.0. Requires Flutter 3.38 or later and Dart 3.10",[45,946,947,951,957],{},[63,948,949,452],{},[159,950,451],{},[63,952,953,956],{},[17,954,955],{},"9.0.0"," (July 18, 2025)",[63,958,959],{},"Billing Library 8. Version 10.0.0 moved to 8.3.0 and raised the Android minimum to API 23",[14,961,962],{},"Two things to watch:",[137,964,965,979],{},[140,966,967,972,973,975,976,978],{},[17,968,969,971],{},[159,970,435],{}," needs a recent Flutter."," Version 3.2.3, the last one on the old Android package, depended on ",[159,974,414],{}," ^0.4.0, which used Billing Library 7.1.1. To get version 8 through Flutter's own plugin, the app has to run on Flutter 3.38 or later. Flutter's release archive dates 3.38.0 November 12, 2025. Every ",[159,977,414],{}," release after 0.5.0 requires Flutter 3.44 or later, so on Flutter 3.38 to 3.43 pub can only use 0.5.0. My advice: if the app is on an older Flutter, plan the Flutter upgrade and the billing update as one job, because the upgrade can surface other build errors.",[140,980,981,984],{},[17,982,983],{},"RevenueCat warns about consumables."," Its 9.0.0 notes say Billing Library 8 can no longer query expired subscriptions or consumed one-time products. If a lifetime purchase is set up as a consumable in the RevenueCat dashboard, RevenueCat will consume it, and users can't restore it. RevenueCat says to set those products up as non-consumables.",[31,986,505],{"id":504},[14,988,508],{},[285,990,991,1006,1012,1023,1028],{},[140,992,993,516,995,476,997,523,999,526,1001,476,1003,1005],{},[17,994,515],{},[159,996,519],{},[159,998,522],{},[159,1000,414],{},[159,1002,451],{},[159,1004,531],{},", and compare with the table above.",[140,1007,1008,1011],{},[17,1009,1010],{},"Request the extension if you need time."," If you can't ship version 8 before your next update, use the form from the Play Console warning. Google's extension for version 7 ends on November 1, 2026, so as of October 18, 2026 it buys two weeks at most.",[140,1013,1014,1017,1018,1020,1021,166],{},[17,1015,1016],{},"Upgrade the package, then fix what broke."," Look for the removed calls in the version 8 table. In Flutter, replace ",[159,1019,923],{}," with ",[159,1022,927],{},[140,1024,1025,1027],{},[17,1026,557],{}," Use Play Console license testers to buy, cancel and restore each product type, especially one-time products and anything users expect to restore after reinstalling.",[140,1029,1030,1033,1034,162,1036,1038],{},[17,1031,1032],{},"Check the manifest if the warning stays."," Google says the merged ",[159,1035,161],{},[159,1037,165],{},". If it doesn't, check whether manifest merging removes it.",[14,1040,561,1041,166],{},[126,1042,565],{"href":564},[31,1044,574],{"id":573},[14,1046,1047,1048,582,1050,166],{},"If an app can't ship an update because of the Billing Library deadline, or purchases broke after the upgrade, the ",[126,1049,581],{"href":580},[126,1051,586],{"href":585},{"title":588,"searchDepth":589,"depth":589,"links":1053},[1054,1055,1056,1057,1058],{"id":33,"depth":589,"text":34},{"id":788,"depth":589,"text":789},{"id":888,"depth":589,"text":889},{"id":504,"depth":589,"text":505},{"id":573,"depth":589,"text":574},"Google Play Billing Library 7 hit its deadline on August 31, 2026: new apps and updates must use version 8 or later, and Google says its extension runs until November 1, 2026. What changed in version 8, which Flutter in_app_purchase and RevenueCat versions include it, and how to clear the Play Console warning, from Google's docs checked October 18, 2026.",[1061,1064,1067,1070,1073,1076],{"question":1062,"answer":1063},"When is Play Billing Library 7 deprecated?","Google's deprecation table sets August 31, 2026 as the deadline for new apps and updates on version 7, and November 1, 2026 as the extension deadline. Google's banner on the same page says that by August 31, 2026, new apps and updates must use version 8 or later.",{"question":1065,"answer":1066},"What happens if I don't update the Billing Library?","Google says existing apps still work and unmaintained APKs don't need updates, but new apps and updates must use a supported version. My reading: once your deadline passes, you can't publish an update to an app that uses version 7 or older.",{"question":1068,"answer":1069},"How do I get an extension to November 1, 2026?","Google says an app on an unsupported version gets a warning in Play Console. Open the warning's details on the Policy status page and use the extension form there. Google says the extension for version 7 runs until November 1, 2026.",{"question":1071,"answer":1072},"Which Flutter in_app_purchase version uses Billing Library 8?","in_app_purchase_android 0.5.0, published May 27, 2026, updated the Billing Library from 7.1.1 to 8.0.0. The in_app_purchase package depends on it from version 3.3.0, which requires Flutter 3.38 or later and Dart 3.10.",{"question":1074,"answer":1075},"I already updated. Why does Play Console still show the warning?","Google's FAQ says to check that your AndroidManifest.xml contains com.google.android.play.billingclient.version, and if it is missing, whether manifest merging removes it.",{"question":1077,"answer":1078},"Do I need to move to version 9?","Not for this deadline. Version 8 is supported until August 31, 2027, with an extension to November 1, 2027, per Google's table. Version 9 was released on May 19, 2026 and is supported a year longer.",{"readingTimeStats":1080},{"text":621,"minutes":1081,"time":1082,"words":1083},4.235,254100,847,"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026","play billing library 7 deprecated","7 min",[1088,1089,1090],"revenuecat-stripe-firebase-monetization-stack-template369","flutter-gradle-plugin-applied-imperatively-fix-2026","flutter-deleted-android-v1-embedding-build-failed-2026",{"title":673,"description":1059},[1093,1094,1095,1098,1101,1102],{"title":644,"url":128},{"title":638,"url":639},{"title":1096,"url":1097},"pub.dev, in_app_purchase_android changelog","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fin_app_purchase_android\u002Fchangelog",{"title":1099,"url":1100},"pub.dev, in_app_purchase versions","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fin_app_purchase\u002Fversions",{"title":655,"url":656},{"title":1103,"url":1104},"Flutter release archive (macOS)","https:\u002F\u002Fstorage.googleapis.com\u002Fflutter_infra_release\u002Freleases\u002Freleases_macos.json","blog\u002Fplay-billing-library-7-deprecated-update-to-8-2026","play billing library 7 deprecated, play billing library 8 migration, unsupported version of google play billing library, play console billing library warning, billing library extension november 1 2026, in_app_purchase_android billing 8, purchases_flutter billing library 8, querypurchasehistory removed, flutter in app purchase android update",[1108,1109,1110,1111,1112],"Every Google Play Billing Library version has a two-year deprecation cycle. For version 7, Google says the deadline for new apps and updates was August 31, 2026, and the extension deadline is November 1, 2026.","Version 8.0.0 (June 30, 2025) removed queryPurchaseHistory(), querySkuDetailsAsync(), the no-argument enablePendingPurchases() and the queryPurchasesAsync() overload that takes a SKU type, and changed the queryProductDetailsAsync() result.","Flutter's in_app_purchase_android moved to Billing Library 8.0.0 in version 0.5.0 (May 27, 2026). The app-facing in_app_purchase package uses it from 3.3.0, which needs Flutter 3.38 or later.","RevenueCat's purchases_flutter moved to Billing Library 8 in 9.0.0 (July 18, 2025). Its notes warn that one-time products wrongly set up as consumables can no longer be restored.","Google says existing apps keep working. The deadline applies to new apps and updates. My reading: an app on version 7 can't ship an update until it moves, once any extension runs out.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","LQcpE4lAO9rdEceJl2k_uV-8-AnTaZiewIFBxlxkLXU",{"id":1116,"title":1117,"author":1118,"body":1120,"category":597,"createdAt":1737,"description":1738,"disclosure":600,"extension":601,"faq":1739,"howTo":600,"lastVerified":600,"location":618,"meta":1755,"navigation":625,"ogImage":600,"path":1761,"primaryKeyword":1762,"readingTime":628,"related":1763,"seo":1766,"sources":1767,"stem":1798,"tags":1799,"takeaways":1800,"updatedAt":1737,"url":1806,"__hash__":1807},"blog\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027.md","App Store and Google Play Deadlines for 2026 and 2027",{"name":7,"social":1119},{"twitter":9},{"type":11,"value":1121,"toc":1729},[1122,1128,1131,1136,1140,1636,1648,1651,1662,1665,1669,1686,1689,1693,1707,1710,1714,1720,1722],[14,1123,1124,1127],{},[17,1125,1126],{},"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,1129,1130],{},"I checked each one on October 18, 2026. Rows whose date has passed are marked \"In effect\".",[14,1132,1133,1135],{},[17,1134,28],{}," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Apple and Google don't pay me for anything on this page.",[31,1137,1139],{"id":1138},"all-dates-in-order","All dates, in order",[39,1141,1142,1161],{},[42,1143,1144],{},[45,1145,1146,1149,1152,1155,1158],{},[48,1147,1148],{},"Date",[48,1150,1151],{},"What changes",[48,1153,1154],{},"Status",[48,1156,1157],{},"Source",[48,1159,1160],{},"My guide",[58,1162,1163,1187,1210,1234,1256,1275,1304,1329,1356,1381,1406,1428,1454,1478,1499,1523,1547,1571,1593,1614],{},[45,1164,1165,1168,1174,1177,1184],{},[63,1166,1167],{},"January 31, 2026",[63,1169,1170,1173],{},[17,1171,1172],{},"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.",[63,1175,1176],{},"In effect",[63,1178,1179],{},[126,1180,1183],{"href":1181,"rel":1182},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Fupcoming-requirements\u002F",[130],"Apple",[63,1185,1186],{},"None",[45,1188,1189,1192,1197,1199,1204],{},[63,1190,1191],{},"April 28, 2026",[63,1193,1194,1196],{},[17,1195,1172],{}," 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.",[63,1198,1176],{},[63,1200,1201],{},[126,1202,1183],{"href":1181,"rel":1203},[130],[63,1205,1206],{},[126,1207,1209],{"href":1208},"\u002Fblog\u002Fitms-90725-sdk-version-issue-xcode-26-flutter-2026\u002F","ITMS-90725 and Xcode 26",[45,1211,1212,1214,1220,1222,1229],{},[63,1213,90],{},[63,1215,1216,1219],{},[17,1217,1218],{},"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.",[63,1221,1176],{},[63,1223,1224],{},[126,1225,1228],{"href":1226,"rel":1227},"https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F11926878",[130],"Play Console Help",[63,1230,1231],{},[126,1232,1233],{"href":569},"Target API 36",[45,1235,1236,1238,1243,1245,1251],{},[63,1237,90],{},[63,1239,1240,1242],{},[17,1241,1218],{}," 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.",[63,1244,1176],{},[63,1246,1247],{},[126,1248,1250],{"href":128,"rel":1249},[130],"Android Developers",[63,1252,1253],{},[126,1254,1255],{"href":172},"Billing Library 8",[45,1257,1258,1261,1266,1268,1273],{},[63,1259,1260],{},"September 9, 2026",[63,1262,1263,1265],{},[17,1264,1172],{}," iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later. Affects: anyone uploading an iOS or iPadOS build.",[63,1267,1176],{},[63,1269,1270],{},[126,1271,1183],{"href":1181,"rel":1272},[130],[63,1274,1186],{},[45,1276,1277,1280,1285,1287,1298],{},[63,1278,1279],{},"September 14, 2026",[63,1281,1282,1284],{},[17,1283,1172],{}," 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.",[63,1286,1176],{},[63,1288,1289,264,1294],{},[126,1290,1293],{"href":1291,"rel":1292},"https:\u002F\u002Fdocs.flutter.dev\u002Frelease\u002Fbreaking-changes\u002Fuiscenedelegate",[130],"Flutter docs",[126,1295,1183],{"href":1296,"rel":1297},"https:\u002F\u002Fdeveloper.apple.com\u002Fnews\u002Freleases\u002F",[130],[63,1299,1300],{},[126,1301,1303],{"href":1302},"\u002Fblog\u002Fflutter-uiscene-migration-xcode-27-app-wont-launch-2026\u002F","UIScene migration",[45,1305,1306,1309,1315,1317,1323],{},[63,1307,1308],{},"September 30, 2026",[63,1310,1311,1314],{},[17,1312,1313],{},"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.",[63,1316,1176],{},[63,1318,1319],{},[126,1320,1250],{"href":1321,"rel":1322},"https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification",[130],[63,1324,1325],{},[126,1326,1328],{"href":1327},"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F","Developer verification",[45,1330,1331,1334,1340,1343,1350],{},[63,1332,1333],{},"October 30, 2026",[63,1335,1336,1339],{},[17,1337,1338],{},"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.",[63,1341,1342],{},"Upcoming",[63,1344,1345],{},[126,1346,1349],{"href":1347,"rel":1348},"https:\u002F\u002Fdevelopers.google.com\u002Fhealth",[130],"Google Health API",[63,1351,1352],{},[126,1353,1355],{"href":1354},"\u002Fblog\u002Fgoogle-fit-api-deprecated-health-connect-2026\u002F","Google Fit to Health Connect",[45,1357,1358,1360,1366,1368,1375],{},[63,1359,1333],{},[63,1361,1362,1365],{},[17,1363,1364],{},"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.",[63,1367,1342],{},[63,1369,1370],{},[126,1371,1374],{"href":1372,"rel":1373},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F45329-breaking-change-tables-not-exposed-to-data-and-graphql-api-automatically",[130],"Supabase",[63,1376,1377],{},[126,1378,1380],{"href":1379},"\u002Fblog\u002Fsupabase-permission-denied-new-tables-october-30-2026\u002F","Supabase permission denied",[45,1382,1383,1385,1390,1392,1400],{},[63,1384,93],{},[63,1386,1387,1389],{},[17,1388,1218],{}," End of the extension Google offers for the target API 36 and Billing Library 7 deadlines. Affects: anyone who requested an extension.",[63,1391,1342],{},[63,1393,1394,264,1397],{},[126,1395,1228],{"href":1226,"rel":1396},[130],[126,1398,1250],{"href":128,"rel":1399},[130],[63,1401,1402,264,1404],{},[126,1403,1233],{"href":569},[126,1405,1255],{"href":172},[45,1407,1408,1411,1416,1418,1424],{},[63,1409,1410],{},"End of 2026",[63,1412,1413,1415],{},[17,1414,1338],{}," 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.",[63,1417,1342],{},[63,1419,1420],{},[126,1421,1250],{"href":1422,"rel":1423},"https:\u002F\u002Fdeveloper.android.com\u002Fhealth-and-fitness\u002Fhealth-connect\u002Fmigration\u002Ffit",[130],[63,1425,1426],{},[126,1427,1355],{"href":1354},[45,1429,1430,1433,1439,1441,1448],{},[63,1431,1432],{},"January 1, 2027",[63,1434,1435,1438],{},[17,1436,1437],{},"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.",[63,1440,1342],{},[63,1442,1443],{},[126,1444,1447],{"href":1445,"rel":1446},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Ftroubleshooting",[130],"Firebase",[63,1449,1450],{},[126,1451,1453],{"href":1452},"\u002Fblog\u002Ffcm-legacy-api-shutdown-http-v1-migration-2026\u002F","FCM migration",[45,1455,1456,1459,1464,1466,1472],{},[63,1457,1458],{},"February 1, 2027",[63,1460,1461,1463],{},[17,1462,1218],{}," 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.",[63,1465,1342],{},[63,1467,1468],{},[126,1469,1250],{"href":1470,"rel":1471},"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fpractices\u002Fpage-sizes",[130],[63,1473,1474],{},[126,1475,1477],{"href":1476},"\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F","16 KB page size",[45,1479,1480,1483,1488,1490,1495],{},[63,1481,1482],{},"2027 (no month stated)",[63,1484,1485,1487],{},[17,1486,1313],{}," Developer verification capability expands globally for all apps on certified Android devices. Affects: anyone distributing Android apps.",[63,1489,1342],{},[63,1491,1492],{},[126,1493,1250],{"href":1321,"rel":1494},[130],[63,1496,1497],{},[126,1498,1328],{"href":1327},[45,1500,1501,1504,1509,1511,1517],{},[63,1502,1503],{},"March 22, 2027",[63,1505,1506,1508],{},[17,1507,1437],{}," Firebase Studio shuts down and remaining data is permanently deleted. Affects: anyone with a Firebase Studio workspace.",[63,1510,1342],{},[63,1512,1513],{},[126,1514,1447],{"href":1515,"rel":1516},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fstudio\u002Fmigrating-project",[130],[63,1518,1519],{},[126,1520,1522],{"href":1521},"\u002Fblog\u002Ffirebase-studio-shutting-down-migrate-project-2027\u002F","Firebase Studio shutdown",[45,1524,1525,1528,1533,1535,1541],{},[63,1526,1527],{},"March 31, 2027",[63,1529,1530,1532],{},[17,1531,1437],{}," 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.",[63,1534,1342],{},[63,1536,1537],{},[126,1538,1447],{"href":1539,"rel":1540},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fextensions\u002Ffaq-and-troubleshooting",[130],[63,1542,1543],{},[126,1544,1546],{"href":1545},"\u002Fblog\u002Ffirebase-extensions-shutting-down-replace-2027\u002F","Firebase Extensions shutdown",[45,1548,1549,1552,1557,1559,1565],{},[63,1550,1551],{},"June 15, 2027",[63,1553,1554,1556],{},[17,1555,1437],{}," Firebase ML custom model hosting shuts down. Affects: apps that host custom models in Firebase ML.",[63,1558,1342],{},[63,1560,1561],{},[126,1562,1447],{"href":1563,"rel":1564},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fml\u002Fmigrate-to-cloud-storage",[130],[63,1566,1567],{},[126,1568,1570],{"href":1569},"\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026\u002F","Firebase shutdown dates",[45,1572,1573,1575,1580,1582,1587],{},[63,1574,105],{},[63,1576,1577,1579],{},[17,1578,1218],{}," 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.",[63,1581,1342],{},[63,1583,1584],{},[126,1585,1250],{"href":128,"rel":1586},[130],[63,1588,1589],{},[126,1590,1592],{"href":1591},"\u002Fblog\u002Fplay-billing-library-9-migration-deadline-2027\u002F","Billing Library 9",[45,1594,1595,1598,1603,1605,1610],{},[63,1596,1597],{},"September 29, 2027",[63,1599,1600,1602],{},[17,1601,1437],{}," The FCM InstanceId server APIs and device groups are decommissioned. Affects: servers that manage topics or tokens through the old APIs.",[63,1604,1342],{},[63,1606,1607],{},[126,1608,1447],{"href":1445,"rel":1609},[130],[63,1611,1612],{},[126,1613,1453],{"href":1452},[45,1615,1616,1619,1624,1626,1632],{},[63,1617,1618],{},"September 30, 2027",[63,1620,1621,1623],{},[17,1622,1437],{}," Firebase Test Lab is fully shut down. Affects: CI pipelines that run tests on Test Lab.",[63,1625,1342],{},[63,1627,1628],{},[126,1629,1447],{"href":1630,"rel":1631},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Ftest-lab",[130],[63,1633,1634],{},[126,1635,1570],{"href":1569},[14,1637,1638,1639,1643,1644,1647],{},"Two more notes. Apple's privacy manifest rules (May 1, 2024 for required reason APIs and February 12, 2025 for common SDKs, see the ",[126,1640,1642],{"href":1641},"\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 ",[126,1645,1646],{"href":1452},"FCM migration guide",") already passed before 2026. I keep them in their own guides because they still cause upload and delivery errors.",[31,1649,1183],{"id":1650},"apple",[14,1652,1653,1654,264,1656,268,1659,166],{},"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 ",[126,1655,1209],{"href":1208},[126,1657,1658],{"href":1302},"UIScene and Xcode 27",[126,1660,1661],{"href":1641},"privacy manifest errors",[14,1663,1664],{},"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,1666,1668],{"id":1667},"google-play-and-android","Google Play and Android",[14,1670,1671,1672,1675,1676,264,1679,264,1681,268,1683,166],{},"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 ",[126,1673,1674],{"href":1591},"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 ",[126,1677,1678],{"href":569},"target API 36",[126,1680,1477],{"href":1476},[126,1682,1255],{"href":172},[126,1684,1685],{"href":1327},"developer verification",[14,1687,1688],{},"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,1690,1692],{"id":1691},"firebase-and-google-apis","Firebase and Google APIs",[14,1694,1695,1696,264,1698,264,1701,1703,1704,166],{},"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 ",[126,1697,1570],{"href":1569},[126,1699,1700],{"href":1452},"FCM HTTP v1 migration",[126,1702,1355],{"href":1354}," and, if you use it, ",[126,1705,1706],{"href":1379},"Supabase new table permissions",[14,1708,1709],{},"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,1711,1713],{"id":1712},"how-i-keep-this-page-current","How I keep this page current",[14,1715,1716,1717,166],{},"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, ",[126,1718,1719],{"href":585},"tell me",[31,1721,574],{"id":573},[14,1723,1724,1725,582,1727,166],{},"If one of these deadlines lands on an app you can't update yourself, the ",[126,1726,581],{"href":580},[126,1728,586],{"href":585},{"title":588,"searchDepth":589,"depth":589,"links":1730},[1731,1732,1733,1734,1735,1736],{"id":1138,"depth":589,"text":1139},{"id":1650,"depth":589,"text":1183},{"id":1667,"depth":589,"text":1668},{"id":1691,"depth":589,"text":1692},{"id":1712,"depth":589,"text":1713},{"id":573,"depth":589,"text":574},"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.",[1740,1743,1746,1749,1752],{"question":1741,"answer":1742},"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":1744,"answer":1745},"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":1747,"answer":1748},"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":1750,"answer":1751},"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":1753,"answer":1754},"How will I know if a date changes?","Each row links to the page where the platform states the date, and I list the date I checked it. Dates can move, so check the linked page before you plan around one. I update this page when a platform changes a date.",{"readingTimeStats":1756},{"text":1757,"minutes":1758,"time":1759,"words":1760},"7 min read",6.78,406800,1356,"\u002Fblog\u002Fapp-store-google-play-deadlines-2026-2027","app store deadlines 2026",[632,1764,1765],"itms-90725-sdk-version-issue-xcode-26-flutter-2026","firebase-deprecations-shutdown-dates-2026",{"title":1117,"description":1738},[1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796],{"title":1769,"url":1347},"Google for Developers, Google Health API (Fitbit Web API dates)",{"title":1771,"url":1181},"Apple Developer, Upcoming requirements",{"title":1773,"url":1296},"Apple Developer, Releases",{"title":1775,"url":1291},"Flutter docs, Migrate to UIScene life cycle",{"title":1777,"url":1226},"Play Console Help, Target API level requirements for Google Play apps",{"title":1779,"url":128},"Android Developers, Play Billing Library deprecation FAQ",{"title":1781,"url":1470},"Android Developers, Support 16 KB page sizes",{"title":1783,"url":1321},"Android Developers, Android developer verification",{"title":1785,"url":1422},"Android Developers, Migrate from the Google Fit APIs",{"title":1787,"url":1445},"Firebase, FCM troubleshooting (InstanceId and device groups deprecation)",{"title":1789,"url":1515},"Firebase, Migrate from Firebase Studio",{"title":1791,"url":1539},"Firebase, Extensions FAQ and troubleshooting",{"title":1793,"url":1563},"Firebase, Migrate Firebase ML model hosting to Cloud Storage",{"title":1795,"url":1630},"Firebase, Test Lab",{"title":1797,"url":1372},"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",[1801,1802,1803,1804,1805],"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","qSevd68vpkgKSVlJF0IU1iFXZs0wLXybx1rEXiBIC_g",{"id":1809,"title":1810,"author":1811,"body":1813,"category":597,"createdAt":2204,"description":2205,"disclosure":600,"extension":601,"faq":2206,"howTo":600,"lastVerified":600,"location":618,"meta":2222,"navigation":625,"ogImage":600,"path":2227,"primaryKeyword":2228,"readingTime":1086,"related":2229,"seo":2230,"sources":2231,"stem":2246,"tags":2247,"takeaways":2248,"updatedAt":2204,"url":2254,"__hash__":2255},"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":1812},{"twitter":9},{"type":11,"value":1814,"toc":2197},[1815,1824,1827,1832,1836,1876,1884,1887,1907,1911,1920,1994,2001,2005,2023,2067,2070,2073,2133,2150,2152,2154,2184,2188,2190],[14,1816,1817,1820,1821,1823],{},[17,1818,1819],{},"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 ",[159,1822,245],{}," 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,1825,1826],{},"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,1828,1829,1831],{},[17,1830,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,1833,1835],{"id":1834},"the-requirement","The requirement",[39,1837,1838,1848],{},[42,1839,1840],{},[45,1841,1842,1845],{},[48,1843,1844],{},"App type",[48,1846,1847],{},"Must target, for new apps and updates from August 31, 2026",[58,1849,1850,1860,1868],{},[45,1851,1852,1855],{},[63,1853,1854],{},"Phone and tablet apps",[63,1856,1857],{},[17,1858,1859],{},"Android 16 (API level 36)",[45,1861,1862,1865],{},[63,1863,1864],{},"Wear OS and Android Automotive OS",[63,1866,1867],{},"Android 15 (API level 35)",[45,1869,1870,1873],{},[63,1871,1872],{},"Android TV and Android XR",[63,1874,1875],{},"Android 14 (API level 34)",[14,1877,124,1878,1883],{},[126,1879,1882],{"href":1880,"rel":1881},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Frequirements\u002Ftarget-sdk",[130],"Google Play target API level requirement",", last updated October 16, 2026.",[14,1885,1886],{},"Google's page also says:",[137,1888,1889,1895,1901],{},[140,1890,1891,1894],{},[17,1892,1893],{},"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.",[140,1896,1897,1900],{},[17,1898,1899],{},"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.",[140,1902,1903,1906],{},[17,1904,1905],{},"Exception:"," permanently private apps for one organization's internal use.",[31,1908,1910],{"id":1909},"what-changes-when-you-target-api-36","What changes when you target API 36",[14,1912,1913,1914,1919],{},"Google's ",[126,1915,1918],{"href":1916,"rel":1917},"https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F16\u002Fbehavior-changes-16",[130],"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:",[39,1921,1922,1935],{},[42,1923,1924],{},[45,1925,1926,1929,1932],{},[48,1927,1928],{},"Change",[48,1930,1931],{},"What Google says",[48,1933,1934],{},"Temporary way out",[58,1936,1937,1954,1978],{},[45,1938,1939,1944,1951],{},[63,1940,1941],{},[17,1942,1943],{},"Edge-to-edge",[63,1945,1946,1947,1950],{},"Apps can no longer opt out of drawing behind the status and navigation bars. ",[159,1948,1949],{},"windowOptOutEdgeToEdgeEnforcement"," is deprecated and disabled",[63,1952,1953],{},"None for API 36",[45,1955,1956,1961,1972],{},[63,1957,1958],{},[17,1959,1960],{},"Predictive back",[63,1962,1963,1964,1967,1968,1971],{},"Predictive back animations are on by default. ",[159,1965,1966],{},"onBackPressed"," is not called and ",[159,1969,1970],{},"KEYCODE_BACK"," is not dispatched",[63,1973,1974,1977],{},[159,1975,1976],{},"android:enableOnBackInvokedCallback=\"false\""," in the manifest",[45,1979,1980,1985,1988],{},[63,1981,1982],{},[17,1983,1984],{},"Large screens",[63,1986,1987],{},"On displays at least 600dp wide, orientation, resizability and aspect ratio restrictions are ignored, so the app fills the window",[63,1989,1990,1993],{},[159,1991,1992],{},"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY",". Google says it won't apply once you target API 37",[14,1995,1996,1997,2000],{},"The large-screen rule doesn't apply to games (based on ",[159,1998,1999],{},"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,2002,2004],{"id":2003},"flutter-apps","Flutter apps",[14,2006,2007,2008,476,2011,2014,2015,2018,2019,2022],{},"Flutter's project template sets the target from the Flutter version: ",[159,2009,2010],{},"targetSdk = flutter.targetSdkVersion",[159,2012,2013],{},"android\u002Fapp\u002Fbuild.gradle.kts"," in Flutter 3.35's template, and ",[159,2016,2017],{},"targetSdkVersion flutter.targetSdkVersion"," in older Groovy templates such as Flutter 3.10's. Flutter's ",[159,2020,2021],{},"FlutterExtension"," source sets it to:",[39,2024,2025,2038],{},[42,2026,2027],{},[45,2028,2029,2032],{},[48,2030,2031],{},"Flutter version",[48,2033,2034,2035],{},"Default ",[159,2036,2037],{},"flutter.targetSdkVersion",[58,2039,2040,2048,2055],{},[45,2041,2042,2045],{},[63,2043,2044],{},"3.29 (February 12, 2025)",[63,2046,2047],{},"35",[45,2049,2050,2053],{},[63,2051,2052],{},"3.32 (May 20, 2025)",[63,2054,2047],{},[45,2056,2057,2062],{},[63,2058,2059],{},[17,2060,2061],{},"3.35 (August 14, 2025) and later",[63,2063,2064],{},[17,2065,2066],{},"36",[14,2068,2069],{},"Release dates from Flutter's release archive.",[14,2071,2072],{},"What that means for a Flutter app:",[285,2074,2075,2096,2110,2123],{},[140,2076,2077,2085,2086,2088,2089,2092,2093,2095],{},[17,2078,2079,2080,526,2083,166],{},"Check ",[159,2081,2082],{},"android\u002Fapp\u002Fbuild.gradle",[159,2084,423],{}," If it uses ",[159,2087,2037],{},", Flutter 3.35 or later gives you 36. If it has a hard-coded number, change it to 36 yourself (",[159,2090,2091],{},"targetSdk = 36"," in a ",[159,2094,423],{}," file).",[140,2097,2098,2101,2102,2105,2106,2109],{},[17,2099,2100],{},"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 ",[159,2103,2104],{},"SafeArea"," or padding from ",[159,2107,2108],{},"MediaQuery",", including bottom sheets and screens with a bottom bar.",[140,2111,2112,2115,2116,2118,2119,2122],{},[17,2113,2114],{},"Back navigation."," If the app or a plugin overrides ",[159,2117,1966],{}," in Android code, that override won't be called on Android 16. My advice: use ",[159,2120,2121],{},"PopScope"," on the Flutter side for back handling, and check plugins that intercept back.",[140,2124,2125,2128,2129,2132],{},[17,2126,2127],{},"Tablets."," If the app locks orientation with ",[159,2130,2131],{},"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,2134,2135,2136,2140,2141,2145,2146,2149],{},"If an older app can't move to Flutter 3.35 because the Android build breaks first, the ",[126,2137,2139],{"href":2138},"\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F","v1 embedding fix"," and the ",[126,2142,2144],{"href":2143},"\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 ",[126,2147,2148],{"href":172},"Billing Library 8 deadline"," is due at the same time.",[31,2151,505],{"id":504},[14,2153,508],{},[285,2155,2156,2166,2172,2178],{},[140,2157,2158,2161,2162,2165],{},[17,2159,2160],{},"Check the target your last release used."," Look at ",[159,2163,2164],{},"targetSdk"," in the build file for that release, or the app bundle details in Play Console.",[140,2167,2168,2171],{},[17,2169,2170],{},"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.",[140,2173,2174,2177],{},[17,2175,2176],{},"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.",[140,2179,2180,2183],{},[17,2181,2182],{},"Ship to a closed testing track first."," Catch layout and back-gesture issues before your users do.",[14,2185,561,2186,166],{},[126,2187,565],{"href":564},[31,2189,574],{"id":573},[14,2191,2192,2193,582,2195,166],{},"If an app can't ship an update because of the target API requirement, or something broke after raising it, the ",[126,2194,581],{"href":580},[126,2196,586],{"href":585},{"title":588,"searchDepth":589,"depth":589,"links":2198},[2199,2200,2201,2202,2203],{"id":1834,"depth":589,"text":1835},{"id":1909,"depth":589,"text":1910},{"id":2003,"depth":589,"text":2004},{"id":504,"depth":589,"text":505},{"id":573,"depth":589,"text":574},"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.",[2207,2210,2213,2216,2219],{"question":2208,"answer":2209},"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":2211,"answer":2212},"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":2214,"answer":2215},"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":2217,"answer":2218},"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":2220,"answer":2221},"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":2223},{"text":621,"minutes":2224,"time":2225,"words":2226},4.265,255900,853,"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36",[630,1089,1090],{"title":1810,"description":2205},[2232,2234,2236,2239,2242,2245],{"title":2233,"url":1880},"Android Developers, Meet Google Play's target API level requirement (last updated October 16, 2026)",{"title":2235,"url":1916},"Android Developers, Behavior changes: apps targeting Android 16 or higher (last updated October 16, 2026)",{"title":2237,"url":2238},"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":2240,"url":2241},"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":2243,"url":2244},"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":1103,"url":1104},"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",[2249,2250,2251,2252,2253],"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",[2257,2259,2261,2263,2267,2271],{"keyword":5,"url":668,"title":5,"relevance":2258},70,{"keyword":673,"url":1113,"title":673,"relevance":2260},21,{"keyword":1810,"url":2254,"title":1810,"relevance":2262},15,{"keyword":2264,"url":2265,"title":2264,"relevance":2266},"Google Play 16 KB Page Size: Fixing Flutter and Android Apps","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F",13,{"keyword":2268,"url":2269,"title":2268,"relevance":2270},"Google Sign-In for Android Is Deprecated: Moving to Credential Manager","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026\u002F",10,{"keyword":2272,"url":2273,"title":2272,"relevance":2274},"Flutter \"Deleted Android v1 Embedding\" Build Error: The Fix","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F",9,1792371698595]